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

22
Статистика
Статистика
22
Статистика темы
  • Популярность
    Топ-4918
  • Постов
    2,261
  • Просмотров
    173,546
  • Подписок
    22
  • Карма автора
    -45
1 99 100 101 102 114
  • Я мельком накидал алгоритм на 52 карты:

    Конечно я криво пишу на с++, но не настолько же

     

    514 сек

    Против твоих  2.6 с

    Ты Бог интегера)))

    Если будет желание/время/возможности расскажи как оптимизировал этот трактор...

    Пс надеюсь это не из разряда "алгоритм 5 строк и оптимизаций на 5000 строк кода" ...

    Сообщение отредактировал c00l0ne - 4.2.2023, 0:28
    Ответить Цитировать
    709/882
    + 0
  • c00l0ne @ 03.02.23 

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

    Такого не будет на одном компе, это точно. Одна раздача займет 100% проца.

     

    c00l0ne @ 03.02.23 

    Надо еще формат сохранить/загрузить придумать ...

    Этой херней я заниматься не буду.

    c00l0ne @ 03.02.23 

    Пс я к тому что ты типа заработать не хочешь на этом софте, просто выкласть хочешь ?

    Софт просто быстро крякнут, ничего ты не заработаешь ...

    Заработать, конечно, не плохо... Только как? Делать подписку? Сопровождать... Отвечать на возмущенные письма?...

    Не, это не для меня.

     

    Вот отдать это какому-нибудь спецу, пусть занимается. Мне процентик. Ну или отдать оптом за деньги кому-то, а он пусть организует продажи и тд. И зарабатывает в розницу.

    Весь этот проект мне интересен как задачка, быстро посчитать что-то. Хобби. Деньги я по-другому зарабатываю.

    c00l0ne @ 03.02.23 

    Пс надеюсь это не из разряда "алгоритм 5 строк и оптимизаций на 5000 строк кода" ...

    Нет. Вся канитель именно расчета любой позиции на 52 карты занимает 320 строк. Конечно операторов побольше. Ну, пусть 700 операторов. Ну и + параллельно все. Проц на 100% занят, из-за этого скорость.

    Если еще переработать распараллеливание, можно еще в 2 раза минимум ускорить. Там некоторые потоки самые длинные, Их тоже можно разделить.

    c00l0ne @ 03.02.23 

    514 сек

    Против твоих 2.6 с

    Это примерно 20 потоков, если в 1 поток - то 10сек.

    Я же говорю, можно еще ускорить, если выровнять потоки по объему вычислений.

    Сообщение отредактировал Jak - 4.2.2023, 8:06
    Ответить Цитировать
    227/314
    + 0
  • Jak @ 04.02.23 

    Такого не будет на одном компе, это точно. Одна раздача займет 100% проца.

    На пару секунд займет, но вся очередь посчитается за 25 сек ... Я про это...

     

    Jak @ 04.02.23 

    Весь этот проект мне интересен как задачка, быстро посчитать что-то. Хобби.

    Если цель быстро то задачка видимо решена... 

     

    Нужна утилита для подсчета стартера и сохранения результатов... Стартер и первая сдача... 

    Например :

     Utility-starter.exe 10 8c9cTcJcQc 

    Ev = 20.0

    Starter file = 8c9cTcJcQc_10_starter.txt

    Первый ход = 8c9cTcJcQc_10_first.txt

     

    Где 10 индекс хода все карты вниз ...

    Если надумаешь сделать ... 

    Пиши прайс... 

    Подумаю...

     

    10 минут неплохое время для стартера... Можно попробовать базу обсчитать

    ..

    Сообщение отредактировал c00l0ne - 4.2.2023, 13:03
    Ответить Цитировать
    710/882
    + 0
  • Jak @ 04.02.23 

    Деньги я по-другому зарабатываю.

    Программированием?

    Пс 100 страница убилей у топика кек

    Монте Карло сделано +- 

    На 200 странице

    Надеюсь нейросетка будет за 3 мс считать стартер... Или не будет? Подумаю ...

    Сообщение отредактировал c00l0ne - 4.2.2023, 15:26
    Ответить Цитировать
    711/882
    + 0
  • c00l0ne @ 04.02.23 

    Программированием?

    нет, я ж говорю это хобби

    c00l0ne @ 04.02.23 

    Надеюсь нейросетка будет за 3 мс считать стартер

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

    Ответить Цитировать
    228/314
    + 0
  • Jak, reinforcement learning

    Сама учится

    Ответить Цитировать
    712/882
    + 0
  • И все притихли, типа асе сделали... Ну давайте накину на вентилятор...

    Jak @ 04.02.23 

    Нет. Вся канитель именно расчета любой позиции на 52 карты занимает 320 строк. Конечно операторов побольше. Ну, пусть 700 операторов. Ну и + параллельно все. Проц на 100% занят, из-за этого скорость.

    Если еще переработать распараллеливание, можно еще в 2 раза минимум ускорить. Там некоторые потоки самые длинные, Их тоже можно разделить.

    Да здорово, молодцом , алгоритм прокачал впечатляет... 

     

    Jak @ 03.02.23 

    Ты его напишешь (в чем я сомневаюсь)

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

    В любом случае  никакого алгоритма мы тут не увидели (а ждун ждет)... 

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

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

     

    Но не про это я... 

    А про то что а нифига толком и не сделано до сих пор... 

    Стартера не считаются...

     Софт лайны не учитывает... 

    Кривые стратегии расчитывает... 

    Да

    2.5 сек на первый ход это крутой результат но это 1 вариант , а вариантов много ... 

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

    В итоге что имеем , а ничего не имеем.

     Вот и какой смысл в Вашем потраченном времени? )

     

    Вот я не хотел 3-4 мес назад сюда писать по этой причине , что велью в этой теме нулевое... Но чисто ради Джака... Апнул топик...

    Сообщение отредактировал c00l0ne - 5.2.2023, 21:24
    Ответить Цитировать
    713/882
    + 0
  • Ну давайте начнем с чего нибудь простого :

    Вот в сети есть такой метод решения карточных игр :

    https://www.google.com/url?sa=t&source=web&rct=j&url=https://sites.ualberta.ca/~amw8/hearts.pdf&ved=2ahUKEwjn_ciCpID9AhWMtYsKHcdGC5MQFnoECBUQAQ&usg=AOvVaw0y0UzqgxZsLt5cCPLu0U9V

     

    Это reinforcement learning  с линейным полиндромом

    Если поразбираться там не сложно... 

    Я года три назад делал... Штука забавная...

    Ответить Цитировать
    714/882
    + 0
  • Попозже расскажу как это работает и как это устроено... Но решать скорее будем харстоун , а не китайский ) или и то и то

    Ответить Цитировать
    715/882
    + 0
  • Идея такая закладывается, в мк обьем невероятно большой вычислений... 

    Что предлагают нейросети:

    Создать функцию для оценки ев состояний... 

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

    Так же как в AlphaZero, но тут попроще. 

    В работе выше вместо нейросети используется линейный перцептерон ... 

    Выглядит он вот так:

    y= a1 * x1 + a2 * x2 ... И тд

    Где x итое это определенные параметры(фичи)  и "a" итое это коэфициенты обученного перцептерона

    Допустим в покере мы будем считать евшку

    Ev = a1* x1 + a2 * x2 ... 

     

    В чем же преимущество?

    Преимущество заключается в том что после обучения нам нужно сделать "n" умножений и мы получаем ев любого спота... Ну и малый размер ... Нам необходимо хранить n коэффициентов для решения всей игры

     

    ...

    Сообщение отредактировал c00l0ne - 7.2.2023, 13:58
    Ответить Цитировать
    716/882
    + 0
  • c00l0ne @ 07.02.23 

    Где x итое это определенные параметры(фичи)

    Проблема как выбрать эти фичи   

    Ответить Цитировать
    229/314
    + 0
  • Jak @ 07.02.23 

    Проблема как выбрать эти фичи   

    После сессии напишу

     

    Да в другом там проблема... 

    Обучение провести ... 

    Оно долгое и оч не приятное когда неудачное... 

    Фич можно напридумывать сотни...

    Можно вообще напрямую подавать состояние

    Карты стартера от 1-52 например , как это делали в игре Go в AlphaZero

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

    После сессии напишу

    Фичи то понятно какие, ну разные вероятности, флеша стрита текущей доски

    Вероятности прихода карт тех или иных

    А нейросеть эти цифорки сама соберет в правильную формулу после обучения...

    Чем крут линейный перцептерон:

    Там используются атомные фичи

    И их комбинации, и можно посмотреть как определенные фичи и их комбинации влияют... 

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

     

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

    Еще острый вопрос это параллезация... В основном сейчас считают на GPU как я понял ... Но мне ближе CPU ... 

    На выходных посмотрим покрутим короче ...

    Ответить Цитировать
    718/882
    + 0
  • Ну а до выходных , домашнее вам задание:

    Накодить сим игры

    В этом симуляторе должно быть состояние игры

    Типа доска и колода... 

    Как только игра заканчивается считается роялти ... 

    Желательно на python написать ...можно с++ ... Java ... Delphi ... 

    Короче кто на чем горазд делайте... 

    Мне нужен код будет... 

    Создадим дискорд сервер ... 

    Кто ничего не будет публиковать кикну... Гл

    А то тратишь на челов гигавремя а фидбек нулевой...

    Ответить Цитировать
    719/882
    + 0
  • Jak, а не с полной колодой? Сколько стартер у тебя считает , где карты от 0 до 12?

    Есть еще парочка идей для МК , но они уже глубокие и доооолгие : сложный алгоритм проработать , формулировать напрямую формулами, бинарные вычисления попробуйте или CUDA ...

     

    Если у тебя все ветки считает быстро так, то я думаю сложный алгоритм выдаст стартер в секунд 10 ... Опять же не понятно засчет чего у тебя ускорение...

    Рассказывай... Без деталей можешь ... Чтобы принципиально понять где их можно применить, эти твои оптимизации гениальные...

    Ответить Цитировать
    720/882
    + 0
  • Если флешей нет (на обоих линиях есть разные масти), колода не важна. Если есть все 13 карт, то неважно на 1 аут умножать или на 3-4.

    Скорость почти одинакова.

    Заточенный вариант (без проверки на флеши), полный универсальный вариант (с проверкой на флеш)

    с полной колодой: 103, 127сек.

    мы третьи (-10 карт): 68, 109сек.

     

    Если есть флеш внизу, скорость сразу падает. Карты не 0..12, а 0..25. Добавляются ауты на флеш. Ну, конечно циклов будет не 26, тк нек флешовые карты еже у нас.

    Полный перебор, сразу 2600сек

    Ответить Цитировать
    230/314
    + 0
  • Jak, ну ты конечно заморочился

    Я просто 0-52 впечатал... 

    Когда проверял твои расчеты...

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

    Поэтому предлагаю бросить его ... И заняться более продвинутым методом... Q-learning и иже с ним

    Ответить Цитировать
    721/882
    + 0
  • Сорямба, пока нет времени нэйросетями заниматтся... Перенимайте эстафету...

    Ответить Цитировать
    722/882
    + 0
  • https://t.me/+h05TvoKJ8cY3NmMy

    на свой страх и риск публикую программку для расчета позиции.

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

     

    Пользуйтесь, проверяйте свои расчеты.

    Если нашли ошибки, пишите.

     

    Если не лень, считайте стартеры ...

    Ответить Цитировать
    231/314
    + 0
  • Jak, благодарочка

    файл проверил на вирусы : 

    вирусов не обнаружено ...

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