Текстовая версия форума CASINOBOARD << полная версия страницы
Базар вокруг игры / Комп в помощь / Soft Speed Test (покер)
Страницы(7): [ «  <  1  2  3  4  5  6  7  >  »]
grey
Re: Soft Speed Test [ID=24996] [ответ на 24894 ()]
Вт, 13 марта 2007 16:26 [#]
Шамсутдинов писал
При расчете МО все расклады все равно не перебрать (особенно, если 2 бокса), а любая перестановка мастей симметрична, так что можно выбирать случайную.
Опаньки, сразу не заметил, ты еще и масти не учитываешь. У меня (и остальных в этом топике) считается все точно.
korovin
Re: Soft Speed Test [ID=24997] [ответ на 24894 ()]
Ср, 14 марта 2007 00:06 [#]
Уважаемый Шамсутдинов, в данной теме мы сравнивали скорости функций анализа одной руки игрока против карты дилера (вычисление числа возможных комбинаций дилера младще/старше/равно для подсчета МО руки). Так тот факт что на одном и том же оборудовании ваш софт анадизирует 350 000 рук в секунду а у Грея например 950 000 говорит о том что при использовании его функции Ваш софт будет считать почти втрое быстрее. Тест с полным перебором был предложен мной для исключения неоднозначности в постановке задачи. То, что наш код может работать с неполной колодой - само собой разумеется, просто для теста СКОРОСТИ это не требовалось. И еще, не совсем понятно как Вы успеваете анализировать все варианты обменов (Русский покер) без упрощений, ведь один только пятак на первом боксе требует анализа 1370754 вариантов (3 секунды при вашей скорости).
grey
Re: Soft Speed Test [ID=24998] [ответ на 24894 ()]
Ср, 14 марта 2007 07:10 [#]
Korovin писал
Так тот факт что на одном и том же оборудовании ваш софт анадизирует 350 000 рук в секунду а у Грея например 950 000 говорит о том что при использовании его функции Ваш софт будет считать почти втрое быстрее.
Ну оборудование-то разное, так что не втрое, а почти вшестеро.
korovin
Re: Soft Speed Test [ID=24999] [ответ на 24894 ()]
Ср, 14 марта 2007 07:22 [#]
<img src="http://forum.cgm.ru/attachments/casino_soft/49712-soft_speed_test_-poker-test.jpg" border="0" alt="Название: test.jpg
Просмотров: 394

Размер: 41.6 Кб" style="margin: 2px" />

Оказывается я отстал от жизни и у нас новый лидер по моему тесту - Grey с результатом 50 сек на анализ 52*51*50*49*48*47/5/4/3/2= 122 151 120 вариантов рук игрока против 1-й карты дилера, или 2,5 миллиона рук в секунду на моем железе. ПОЗДРАВЛЯЮ. Я пока на почетном 3-м месте со 123 секундами, Sharky на втором.
grey
Re: Soft Speed Test [ID=25000] [ответ на 24894 ()]
Ср, 14 марта 2007 10:32 [#]
Korovin писал
Оказывается я отстал от жизни и у нас новый лидер по моему тесту - Grey с результатом 50 сек на анализ 52*51*50*49*48*47/5/4/3/2= 122 151 120 вариантов рук игрока против 1-й карты дилера, или 2,5 миллиона рук в секунду на моем железе. ПОЗДРАВЛЯЮ.
Спасибо. А то я уже хотел к доктору обращаться, типа меня все игнорируют. Smile
Это Я
Re: Soft Speed Test [ID=25001] [ответ на 24894 ()]
Ср, 14 марта 2007 11:19 [#]
Grey писал вт, 13 марта 2007 15:22
13 возможных карт дилера * число всех комбинаций по 5 из 51 = 30537780 раскладов. Для каждого расклада производится операция вычисления (по формулам) количества комбинаций дилера старше/младше/равно/пустая, даже в том случае, если у игрока пустая комбинация. На моем стареньком PIII-800 это занимает 32 секунды.
Я так понимаю честные циклы (5 вложенных, ну или 10 покороче, чтобы не вычислять масть-ранг) + один для карты диллера:
for(int i0=4;i0<52;i0++)
{
____for(int i1=3;i1<i0;i1++)
____{
________...
____}
}

с проверкой на выкинутые карты - это обязательное условие соревнования (нельзя оптимизировать)?

Прикинул, получилось за 838 (минус проверка на выкинутые, инкремент, подсчет результата, округлим 800) тактов проверяется <,>,=,0 (пустая, наверное, высчитывается из общей). Вроде очень мало. Сравню со своим приближенным методом.
korovin
Re: Soft Speed Test [ID=25002] [ответ на 24894 ()]
Ср, 14 марта 2007 12:00 [#]
Цель теста - сравнение скорости функции анализа руки игрока против каты дилера, используемой в нашем покерном софте, на одинаковом железе. Для этого я и предложил оформить ее в виде демо-модуля и выложить здесь, чтобы любой мог запустить разные демки на своем железе. Почему итменно эта функция: это ядро любого покерного софта, от которого напрямую зависит производительность всего комплекса. Есть еще алгоритмя оптимизации более высокого порядка, но это уже другая история. Как сравнивать - не принципиально, для сравнение важно лишь чтобы демки выполняли ОДНУ и туже работу. В данном случае предлагалось именно 6 честных циклов с вызовом функции внутри последнего и накоплением результата. Под тестовой функцией понимался именно рабочий модуь из покерного софта, специально не заточеный под эту задачу, т.к. сама задача уже давно решена.
Это Я
Re: Soft Speed Test [ID=25003] [ответ на 24894 ()]
Ср, 14 марта 2007 12:29 [#]
Я не сторонник точных формул, поэтому в вашем соревновании не участвую. Хотел просто прикинуть, можно ли при точном расчете получить скорость необходимую для поставленной мной задачи (уже отставленной, правда).
Шамсутдинов
Re: Soft Speed Test [ID=25004] [ответ на 24894 ()]
Ср, 14 марта 2007 12:32 [#]
Вынужден признать, что моя процедура подсчета комбинаций у дилера (4 карты) в 4,3 раза меденнее, чем у Грея. Совпадение с ним результата МО абсолютно точное при любом количестве выкинутых из колоды карт, известных игроку.
Насчет используемой памяти моей программой. В прошлый раз я непонятно каким образом ошибся. Действительно, моя программа занимает 22-25 МБ в памяти. 15,2 МБ занимают массивы, определяющие сортировку и комбинацию 5 или 6 карт. Причем, большая часть - для 6-карточных комбинаций, например, в русском покере.
Самая сложная часть моей программы - покупка игры. Но я уже не строю иллюзий насчет правильности моих претензий. Но быть в вакууме тоже нелегко.
Теперь я полностью в теме - еще раз перечитал все сообщения этого форума. Про масти никаких разногласий нет. Моя программа все делает правильно, но медлено (я считал, что быстро). Какими-то преимуществами, она безусловно обладает, в ней сделано очень многое и очень хорошо (опять, с оговогкой, что другие могли бы сделать в 4,3 раза лучше). Например, можно одсчитывать точное МО, когда нет мен карт, но для этого нужно вручную перебирать все карты дилера, потом находить реднее арифметическое. Дело в том, что когда в моей программе варьируются только карты на 1 боксе и 0 Change, то ведется полный перебор этих карт. Нажав на кнопку слева от таблицы результатов появится окно с более полной информацией о результатах, от туда можно взять в буфер обмена точное МО последней операции - с большим числом знаков после запятой.

Замечу, что программа rp отличается от pkr большую сторону только тем, что там есть возможность исключения мен 4 или 5 карт, если они о хуже.

Извиняюсь за поспешные заявления и выставление своей программы. Буду очень признателен, за объяснения как сделать более быстрый алгоритм подсчета комбинаций у дилера (Grey).
Шамсутдинов
Re: Soft Speed Test [ID=25005] [ответ на 24894 ()]
Ср, 14 марта 2007 12:49 [#]
Непонятно, что такое Strait payoff=8
Это Я
Re: Soft Speed Test [ID=25006] [ответ на 24894 ()]
Ср, 14 марта 2007 13:00 [#]
Шамсутдинов писал ср, 14 марта 2007 12:49
Непонятно, что такое Strait payoff=8
Выплата за стрит. Сделали плавающим для выявления ошибок (или махинаций).

Cool
korovin
Re: Soft Speed Test [ID=25007] [ответ на 24894 ()]
Ср, 14 марта 2007 13:00 [#]
Cool
Fabrica
Re: Soft Speed Test [ID=25008] [ответ на 24894 ()]
Ср, 14 марта 2007 15:45 [#]
Не хотелось бы огорчать г-на Коровина, но я тут исправил ошибки у себя в программе и вот результаты:

<img src="http://forum.cgm.ru/attachments/casino_soft/49718-soft_speed_test_-poker-pt.jpg" border="0" alt="Название: PT.jpg
Просмотров: 327

Размер: 167.4 Кб" style="margin: 2px" />

При полной колоде я отстаю от Grey, а при не полной - почему-то опережаю, не могу объяснить этот феномен.
<img src="http://forum.cgm.ru/attachments/casino_soft/49720-soft_speed_test_-poker-pt1.jpg" border="0" alt="Название: PT1.jpg
Просмотров: 327

Размер: 73.0 Кб" style="margin: 2px" />

Кстати, выделил процедуру подсчета (<,>,=,нет игры) в отдельный unit для Delphi, могу отправить интересующимся. Тока надо написать help нему с параметрами всех процедур, которые можно из него вызвать. В главной процедуре на входе 5-ка карт игрока, карта дилера, отсутствующие карты - на выходе 3 числа - >, <, =. Дальше в зависимости от параметров оплаты можно все посчитать. Начал делать для русского с двойными комбинациями, но пока не доделал.

Вложение: STest4.exe
(Размер: 601.50KB, Загружено 810 раз)

grey
Re: Soft Speed Test [ID=25009] [ответ на 24894 ()]
Ср, 14 марта 2007 15:45 [#]
Шамсутдинов писал
Буду очень признателен, за объяснения как сделать более быстрый алгоритм подсчета комбинаций у дилера (Grey).
Ну рецепт простой. Все, что можно просчитать заранее, просчитать и засунуть в таблицы. Остальное оптимизировать до посинения Smile
Шамсутдинов
Re: Soft Speed Test [ID=25010] [ответ на 24894 ()]
Ср, 14 марта 2007 15:50 [#]
Korovin писал
И еще, не совсем понятно как Вы успеваете анализировать все варианты обменов (Русский покер) без упрощений, ведь один только пятак на первом боксе требует анализа 1370754 вариантов (3 секунды при вашей скорости).
Это делается тоже комбинаторно - мощная разработка, гораздо концептуально сложнее чем комбинаторный перебор 4 карт дилера. при желании могу объяснить, как это делается, но сразу скажу, что очень не просто. Правда у меня там есть дублирующий алгоритм, который работает в 4 раза медленнее (если не изменяет память), он намного проще, но полностью эквивалентен. Его я ипользовал (после переделки) для покупки игры, когда нет комбинации туз-король - когда меняется младшая, а не старшая карта дилера.

Все-таки мне очень хочется разобраться, почему мой алгоритм хуже. Ответьте на следующий вопрос:
Пусть на 1-ом боксе есть какая-то комбинация (-, AK, 2, 2+2, 3, S, F, 3+2, 4, FS, FR).
Я получаю количества всех комбинаций у дилера (AK, 2, 2+2, 3, S, F, 3+2, 4, FS, FR). Получаю количество пустых комбинаций у дилера вычитанием из его общего количества этих. Если у игрока не пустая комбинация, то производится подсчет таких же по достоинству комбинаций у дилера, равных или больших по сравнению всех карт - это наибольшее сложная и большая часть кода по количеству строк.

Так ли делаетcя в вариантах, лучших чем мой? Например, ищется ли количество всех стритов и флеш-стритов по отдельности у делера, если у игрока пара? Или, если у игрока нет игры, может быть сразу ищется в скольких случаях у дилера она есть, то есть хотя бы 2 одного достоинства, флеш или стрит (придется еще искать количество FS).

Я не проверял какие части этой процедуры имеют какую составную часть во времени выполнения. Мне казалось, что его нельзя убыстрить.

Ладно, возможно, попытаюсь переписать этот алгоритм. Дело в том, что у меня была идея, заключающаяся в том, что для получения количества комбинаций у дилера, можно сначала расчитать массивы всех случаев, по количеству неизвестных карт по достоинствам (0..12) (количеству этих количеств (0..4), то есть [13][12][12][12][12][12], где первый элемент - достоинство карты дилера). Когда мне пришла в голову эта идея, то я понял что процедуру можно ускорить в разы, но что это не стоит делать, потому что и так быстро, и будет тормозить покупка игры, которая сделана идеально - ее я делал 3 года тому назад, а ту процедуру - 8 лет тому назад. Но пару месяцев тому назад я вернулся к этому вопросу, посмотрел свой код, и не смог понять почему можно добиться убыстрения, хотя эту идею я помнил. Теперь мне опять кажется, что убыстрение возможно. Ответьте что-нибудь. Можно на мой e-mail. Как пользоваться форумом? Например, удобно цитировать несколько раз. Как подписаться на новые сообщения, чтобы уведомления приходили по почте?
Шамсутдинов
Re: Soft Speed Test [ID=25011] [ответ на 24894 ()]
Ср, 14 марта 2007 15:56 [#]
Grey
Ну рецепт простой. Все, что можно просчитать заранее, просчитать и засунуть в таблицы. Остальное оптимизировать до посинения Smile
Я вас уважаю, но если вы поймете, как я написал покупку игры, то еще непонятно, кому кого уважать придется.
grey
Re: Soft Speed Test [ID=25012] [ответ на 24894 ()]
Ср, 14 марта 2007 16:15 [#]
Шамсутдинов писал
Я вас уважаю, но если вы поймете, как я написал покупку игры, то еще непонятно, кому кого уважать придется.
Уже уважаю. Потому что я покупку игры не писал и в ближайшее время не собираюсь. На этот алгоритм подсчета комбинаций дилера я потратил в общей сложности пару месяцев. Первый месяц 5 лет назад, потом забросил, полностью переключившись на блэкджек. Ну и еще месяц год назад. И снова забросил. Писал для себя, а не для соревнования с кем-либо. Так что те, кто выставил мне "временный" рейтинг -- не парьтесь, можете сразу снять.
Это Я
Re: Soft Speed Test [ID=25013] [ответ на 24894 ()]
Ср, 14 марта 2007 16:23 [#]
Grey писал ср, 14 марта 2007 16:15
Так что те, кто выставил мне "временный" рейтинг -- не парьтесь, можете сразу снять.
Я, конечно, понимаю, что между нами непреодолимый антагонизм, но я искренне уважаю людей, способных на деле показать свое преимущество.
Sharky
Re: Soft Speed Test [ID=25014] [ответ на 24894 ()]
Ср, 14 марта 2007 16:50 [#]
Мде, отстал я от жизни.. И все-таки Grey, как ты считаешь? Если 143K заготовок, то это одно, и сравнивать тесты так как мы имхо нельзя, или все пересчитываешь? Тогда снимаю шляпу.

2 Шамсутдинов: Абсолютно точную покупку игры уже я делал, и алгоритм был описан на страницах форума + демка была..
grey
Re: Soft Speed Test [ID=25015] [ответ на 24894 ()]
Ср, 14 марта 2007 17:50 [#]
Fabrica писал
При полной колоде я отстаю от Grey, а при не полной - почему-то опережаю, не могу объяснить этот феномен.
Частично можно, видимо, объяснить чрезмерным количеством вызовов Application.ProcessMessages у меня (ты ее вроде бы вообще не вызываешь). Сейчас исправил это дело, можешь заново сравнить:

P.S. Если во время расчета дергать форму мышкой, то время расчета существенно увеличится, т.к. во время перемещения все останавливается. Ты не дергал часом? Wink По уму надо бы отдельным тредом сделать.

Вложение: greydemo101.zip
(Размер: 167.51KB, Загружено 801 раз)

Страницы(7): [ «  <  1  2  3  4  5  6  7  >  »]