Пилю программку по обсчёту китайского покера

22
Статистика
Статистика
22
Статистика темы
  • Популярность
    Топ-5245
  • Постов
    2,261
  • Просмотров
    174,197
  • Подписок
    22
  • Карма автора
    -45
1 83 84 85 86 114
  • Есть ещё вариант вместо cpu посчитать на gpu, через Cuda или opencl, но я тоже не разбираюсь в этом, нужны спецы которые смогут распараллелить алгоритм Монте Карло на gpu, если кто то есть пишите, заколабимся на пару дней

     

    Шевелитесь- сделаем софт и по 500 баксов на продажу выставим, 1000 продаж пол мульта изи мани

     

    Да и игра оживет, потому что игроки будут стремиться к идеальной игре, а так катаем как курица лапой, я за сессию ошибок кушей на 100 - 200 кушей наверное делаю за 500 раздач от идеала

     

    Вот курс по Cuda или opencl

    Сообщение отредактировал c00l0ne - 14.9.2022, 13:41
    Ответить Цитировать
    520/882
    + 0
  • Jak, ты сдесь выкладывал HR5 и HR3 лукаптаблички , а ты их сам делал,а то может у тебя есть возможность с джокерами сделать их?

    Чтобы Дж Дж    

    Был равен коду рояля

     

    Посмотрел пару лекций по Opencl, да! видеокарты считают здорово в свои пару тысяч cuda ядер, но запихать задачу конкретную в них очень сложно. В виду специфики устройства железа.

    итог:

    c00l0ne @ 14.09.22 

    нужны спецы которые смогут распараллелить алгоритм Монте Карло на gpu

    Такой продукт можно будет запускать у конечных пользователей. На их железе (видеокартах).

    Сообщение отредактировал c00l0ne - 15.9.2022, 7:04
    Ответить Цитировать
    521/882
    + 0
  • Сам делаю.

    В начале подгружал файлики, потом вычисляю их перед загрузкой проги, они небольшие и считаются быстро. 

    Сейчас не дома, доеду до компа, сделаю для джокеров.

    Ответить Цитировать
    147/314
    + 0
  • Jak, окай, потом еще одну сложную лукап табличку надо бу, выкладу альфаверсию скоро, можно будет перфоманс потестить... но сразу грю запасайтесь ядрами , хотя бы 8 шт и памятью 32гб мин

    в идеале 64 ядреный треатриппер какой нибудь за 500к ру кек

    кстати если есть треаттриппер возьму в аренду на неделю

    Ответить Цитировать
    522/882
    + 0
  • Приветствую. Давно пытался сделать что-то типа калькулятора для китайского покера. Довольно много сделал, но забросил. Уже пару лет прогресса в коде нет. Если кто-то находится в таком же положении/состоянии, то можно попробовать объединиться и совместно подумать над решением задачи. Я забросил на этом шаге:

    Jak @ 14.09.22 

    по какому принципу-алгоритму раскладывать пятерку?

     

    Пишите у кого будет желание совместными усилиями взять китайскую крепость.

    Ответить Цитировать
    4/35
    + 0
  • Luisito99 @ 16.09.22 

    по какому принципу-алгоритму раскладывать пятерку?

     

    Монте Карло

    Сотнями ядер cpu

    Я это написал 3 года назад кек

    Но тогда таких мощностей не было в доступности, сейчас в принципе ситуация меняется

    Ответить Цитировать
    523/882
    + 0
  • c00l0ne, это все слова. Нужно алгоритм/принцип описать более подробно.

    Если нужна 'симуляция в симуляции' методом монте-карло, то да без суперкомпьютера не решить задачу.

    Если достаточно одной 'симуляции', то достаточно процессора среднего ноутбука.

    Конечно здесь нужно визуально показывать, что я подразумеваю под симуляцией(это десятки тысяч переборов всех возможных комбинаций, если я ничего не путаю их 5837832 если стартер необходимо выбирать из 17 карт), но лень записывать видео.

    Вот дана условная картинка(не все подъемы, но мы намеренно упрощаем):

    У каждого стартера свое количество продолжений(от 6 до 27) и соответственно количество конечных листьев разное.

    За одну симуляцию(проход), мы узнаем значения в листьях всех стартеров (всего 5837832 возможных варианта).

    Проходим так для примера 20000 раз. Значения в листьях можно как накапливать, так и скидывать после каждого раза.

    Как после 20000 раз таких итераций определить какой стартер нужно выбрать для продолжения. Какой использовать принцип/алгоритм?

    p.s. программирование это мое хобби и с математикой я на вы, поэтому сильно не пинайте меня, если я где-то сильно ошибаюсь в формулировках/терминах.

    Ответить Цитировать
    5/35
    + 0
  • Luisito99 @ 16.09.22 

    поэтому сильно не пинайте меня, если я где-то сильно ошибаюсь в формулировках/терминах

    Мат часть нужно почитать

    То что описано выше не похоже на алгоритм монтекарло

    Могу посоветовать книжку, но если не будешь читать- просто забей

     

    На всякий случай:

     

    Ответить Цитировать
    524/882
    + 0
  • c00l0ne, кстати там ошибка от 12(а не 6) до 27 вариантов продолжения.

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

    Ответить Цитировать
    6/35
    + 0
  • Luisito99

    Luisito99 @ 16.09.22 

    программирование это мое хобби и с математикой я на вы, поэтому сильно не пинайте меня, если я где-то сильно ошибаюсь в формулировках/терминах

    Могу тебе помочь с математикой , а ты может накатаешь код кек

    Монте Карло обычно считают с конечных узлов, с терминальных, в этих узлах игра заканчивается и результат известен, далее идут к узлам все выше и выше

     

    Основные моменты это индексировать узлы, чтобы не выполнять дважды одни и теже расчеты, второе аппроксимировать узлы, т.к. игра целиком не влезет в память и время расчётов ограничено, лукап таблицы тут помогают и прочие ухищрения

    Но в целом решение задачи такой это обычные умножения флоатные

    Сообщение отредактировал c00l0ne - 16.9.2022, 17:33
    Ответить Цитировать
    525/882
    + 0
  • Luisito99, то как ты написал, допустим игра против фантазии без оппонента:

    Первых ходов 47*46*45 которые породят 44*43*42 вторых ходов и т.д. это утопичный сценарий... Низкая точность(из-за того что мы не сможем симулировать достаточно семплов для каждой ветви) и высокие требования к памяти( терабайты?)

    Последнее решается допустим упрощением узлов, но тут же возрастет нагрузка на cpu , как и обратно если захотим разгрузить cpu придётся хранить большие таблицы для упрощения расчётов, вот и задача найти оптимальные параметры для текущего железа.

    Ответить Цитировать
    526/882
    + 0
  • c00l0ne

    Мы рассматриваем задачу в вакууме(т.е. мы одни, оппоненты на фантазии)
    У нас есть 5 карт: эти карты мы можем разложить 232 вариантами(какой вариант оптимальный мы не знаем)
    Потом добавляются еще 3 карты: эти карты мы можем разложить от 12 до 27 вариантами(в зависимости от стартера),
    Далее еще 3 карты и так до конца....
    Всего у нас будет выбор из 17 карт, это 5837832 листьев(всех возможных вариантов, всех 232 вариантов стартера)
    В листьях будут очки(если комбинации удовлетворяют требованиям старшинства комбинаций в трех боксах)
    Очки будут разными, в зависимости от комбинаций.
    Дальше есть несколько вариантов продолжения:
    - мы можем найти листья с максимальным кол-м очков, записать к каждому стартеру к которому они относятся и обнулить
    - накапливать в листьях
    - и много других вариантов, на что фантазии(нашей) хватит
    - сделать правильно(но как?)
    Далее мы перемешиваем колоду и берем другие 3 карты для первого подъема и так далее.
    Проходим так, для примера 20000 раз
    Итого:
    Если выбирать стартер по первому варианту, то он будет слишком 'оптимистичный'(агрессивный)

    Ответить Цитировать
    7/35
    + 0
  • Luisito99 @ 16.09.22 

    Потом добавляются еще 3 карты: эти карты мы можем разложить от 12 до 27 вариантами(в зависимости от стартера),

    эти три  карты 47*46*45 вариантов , не понимаю куда они денутся)

    ты рассматриваешь одну ветку, один семпл, а таких будет 47*46*45*колвовариантовразложить на первом только ходу и т.д., полное дерево монте Карло огромно для китайского

    и твой метод прямолинейного решения захлебнется в таком дереве или заблудится или просто по времени это будет не осуществимо, не забывайте то что мы решить должны всю игру, все стартера за один присест, а не работать с одним стартером

    и решение это должно быть приемлимым по времени, ну там за неделю максимум

    то что ты пытаешься сделать называется подсказчик, а мы тут будем пилить солвер ибо

    подсказчик решает частично игру

    солвер решает полностью игру

    Сообщение отредактировал c00l0ne - 16.9.2022, 19:19
    Ответить Цитировать
    527/882
    + 0
  • Ладно. Времени сейчас писать нет. 

    Интересно как Jak делал стартер, он же вроде уже давно пытается замутить программу. 

    Может быть кто-то еще делал, да не доделал как я. Может быть получится скооперироваться с кем-то.

    Ответить Цитировать
    8/35
    + 0
  • Luisito99, jak занят hrjokers надеюсь)

    Ответить Цитировать
    528/882
    + 0
  • c00l0ne @ 16.09.22 

    эти три карты 47*46*45 вариантов , не понимаю куда они денутся)

    Ну, во-первых троек будет в 6 раз меньше.

    Не 47*46*45=97'290, а 47*46*45/2/3, т.к. нам не важен порядок поднятия карт. Типа     =    

    Далее. Т.к. мы из этих трех кладем всего 2 (две) можно считать что    =  +  +  , т.о. надо просчитать всего 47*46/2=1081 вариантов.

    Далее можно заморочиться и действовать "по науке" к каждой паре на следующем шаге "выкинуть из колоды" одну любую карту.

    А можно пренебречь этим на "первом проходе", перебрать все 1081 пар, на след шаге 45*44/2=990 пар, и т.д. 

    Когда дойдем до конца, вернемся по дереву назад, мы будем знать какая пара имеет какую оценку. И тогда уже из тройки мы можем выбрать лучшую из трех пар. И на "втором" проходе мы уже более точно можем сымитировать игру именно с этим стартером. Т.к. на каждом подъеме оценка для каждой пары будет известна, можно быстро пробежаться по дереву и определить оценку каждого расклада стартера.

    Ответить Цитировать
    148/314
    + 0
  • Jak, дерево огромно, забудте о таких методах

    начнем с того что нам придется проиндексировать ноды

    для этого придется табличку лукап составить на 13 карт, изоморфизм пусть будет,флеши отдельно: indexnode=hrnode[c13+...hrnode[c2+hrnode[13+c1]]]

    и мне нужно знать ее размер

    Сообщение отредактировал c00l0ne - 17.9.2022, 15:09
    Ответить Цитировать
    529/882
    + 0
  • Например нода с индексом 0 выглядит так :

    222

    23333

    44445

    ну и соответственно 

    HRnode(

    222

    23333

    44445

    ) = 0

    нода с индексом 1 выглядит так :

    222

    23333

    44446

    HRnode(

    222

    23333

    44446

    ) = 1

    нода с индексом 2 выглядит так :

    222

    23333

    44447

    и т.д.

    до

    ААА

    АКККК

    ДДДДВ

     

    Jak если у тебя есть описание как сделать лукап табличку, если ты поделишься я сделаю за выходные ... 

    Будем дальше думать ... 

     

    Jak @ 17.09.22 

    И на "втором" проходе мы уже более точно можем сымитировать игру

    это невероятно затратно , ветка решается абсолютно точно за один проход ...

    лукап табличка сложная потому что 

    222

    33332

    44445

    равна ноде 

    222

    33323

    54444

    но не равна 

    223

    22333

    54444

    порядок  в лайнах только не важен, а в целом он важен

    так же индексы не существующих нод не должны быть в лукаптабличке

    например такой 

    222

    22333

    34444

    двоек в колоде 5 шт не бывает

    Сообщение отредактировал c00l0ne - 17.9.2022, 15:35
    Ответить Цитировать
    530/882
    + 0
  • у кого есть желание создайте сервер дискорд ... форум лагает иногда жуть как ...

    Ответить Цитировать
    531/882
    + 0
  • c00l0ne @ 17.09.22 

    двоек в колоде 5 шт не бывает

    Так же ноды которые дают скуп в принципе могут на один индекс падать , но это опционально лучше сделать

    Для начала давайте выясним размер терминальных нод. Потом уже свернем их.

    Ответить Цитировать
    532/882
    + 0
1 83 84 85 86 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.