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

Последний пост:2 июня
17
1 39 59 77 78 79 80
  • Цитата (БиллиУбили @ 30.5.2020) *
    И чем нолик в левый верхний угол отличается от нолик в правый верхний угол?

    БиллиУбили, по ев ничем , справа евшка до сотых равная
    для примера чтобы разобраться как это устроено и работает хватит
    487/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Цитата (c00l0ne @ 30.5.2020) *
    по ев ничем , справа евшка до сотых равная
    так она должна быть равной с вариантами 6 и 8.
    Да и вообще у тебя какой-то дисбаланс: 250К vs 3500 посещений. Или ты хочешь сказать, что после вариантов 6,8 на своём следующем ходу MCTS играет 0 или 2? Тем более не должно быть отличий между любым углом.
    706/708
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • БиллиУбили, мне лень разбираться в с# , это не мой родной язык программирования, но думаю на все твои не хитрые вопросы ты найдешь ответы в коде
    488/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Цитата (c00l0ne @ 30.5.2020) *
    ты найдешь ответы в коде
    так я и спрашиваю про конкретный код, результат работы которого ты привёл.
    Цитата (c00l0ne @ 30.5.2020) *
    вкратце вот весь код мткс
    Как на самом деле работает MCTS - это отдельный разговор.
    707/708
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Лично мне видется такое расширение(модификацию) для китайского(покера).
    Имеем руку и Партию. Рука - это карты во всех 4ёх линиях, включая сброс.
    Партия - это колода + очердность хода + 2 Руки.
    Очевидно, что Состояние - это Партия + исход. Исход измеряется в очках(разница между очками, которые набрали Руки соперников + возможные бонусы за скуп и/или фантазию).
    Тогда можно сделать следующее.
    Взять Руку, найти наиболее очковые завершения(скажем, штук 20...или 200), которая позволяет текущая колода и... загрузить их в дерево(!). Если у нас осталось 2 подьёма, то возможно всего 6 вариантов собрать завершение(очередность прихода "нужных" карт). Загрузим эти 20Х6 завершений в дерево. Обойдём его снизу вверх, обновляя счётчик посещения узла и очки, которые он принёс. Это будет остов(каркас). Ну, а далее в деле включится великий уравнитель aka рандом.
    Будем, начиная с корня, делать рандомные ходы, рандомное(!) разложение и передавать дальше вниз колоду(без заигранных карт). В результате, между соседними предками, которые доступны для перехода из конкретного узла одним ходом(в подьёме 3 карты = 3 варианта заиграть определённые 2), возникнет "борьба", исход которой решит рандом, он же кол-во посещений.
    При таком подходе, если я правильно понимаю, нам не нужно считать вероятность того или иного подьёма(какие именно 3 карты пришли из колоды). Нам не нужно делать перебор всех варинатов подьём. Достаточно делать одновременные переходы по всем возможным потомкам узла, а уж МКТС посчитает, сколько очков принесёт тот или иной вариант из 3. "плохой вариант" будет содержать меньше "нужных" карт в переданной колоде и рано или поздно загнётся.
    Таким образом, планирую пока остановится на одной комбинации "флаш" и руке из 2ух линий. Собирать будем 2 флаша(возможно даже одной масти). Ну, а в колоде, естественно, будет по Ni карт разной масти. Пространство состояний невелико: либо +8 очков за 2 флаша, либо +4 очка за флаш только внизу, либо 0 очков за ничего, либо -6 очков за флаш во второй линии и ничего внизу.
    Сможет дерево потянуть 2 линии - сможет и 3 )
    ЗЫ Соперника тоже пока не будет, хотя было бы забавно собрать "ничего" и получить +6очков за скуп.
    708/708
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Цитата (БиллиУбили @ 31.5.2020) *
    Рука - это карты во всех 4ёх линиях, включая сброс.

    Оч много состояний будет... Карты не стоит использовать...
    Достаточно описать базовые вещи
    489/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Цитата (БиллиУбили @ 31.5.2020) *
    Сможет дерево потянуть 2 линии - сможет и 3 )

    Количество деревьев МК ограничено только фантазией) new root_1 new root_2 new root_3
    490/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • Цитата (БиллиУбили @ 31.5.2020) *
    Таким образом, планирую пока остановится на одной комбинации "флаш" и руке из 2ух линий. Собирать будем 2 флаша(возможно даже одной масти). Ну, а в колоде, естественно, будет по Ni карт разной масти. Пространство состояний невелико: либо +8 очков за 2 флаша, либо +4 очка за флаш только внизу, либо 0 очков за ничего, либо -6 очков за флаш во второй линии и ничего внизу.
    Сможет дерево потянуть 2 линии - сможет и 3 )

    Нашел пяти минут ку ответить:
    С МК с упрощать ничего не нужно, просто в ноды пиши верх любой, а собирай низ и середину...
    Два флеша например
    для каждой сдачи свое 🌲
    И в процессе симуляции эти деревья все прокачаются одновременно...

    Голова после Кеша не варит, но как смог объяснил...
    491/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
  • ну раз тут такой блог про программирование
    вот вам темка для прожарки
    есть операторы "if else end if" синтаксис vb
    в с# синтаксис
    if (rule1)
    {
    work1
    }
    else if (rule2)
    {
    work2
    }
    else
    {
    work_else
    }

    так вот синтаксис этих операторов мне нравится , но а что если перед проверкой второго уже условия , нам необходимо выполнить какую то работу
    prework_ifworkrule2
    получается синтаксис уже не позволяет этого сделать
    приходится юзать раздельные операторы
    if (rule1)
    {
    }
    else
    {
    prework_ifworkrule2
    if (rule2)
    {
    work2
    }
    ...
    }

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

    Спойлер: Показать
    Сообщение отредактировал c00l0ne - 2.6.2020, 22:48
    492/492
    Ответить Цитировать
    0
    Это сообщение пока никто не оценил.
1588 постов
1 39 59 77 78 79 80
3 человека читают эту тему (3 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.