Chat:Ru/2021-05-24

From CG community
Jump to navigation Jump to search

YurkovAS: улучшить не получается, все похоже на обычный мктс или смитсимакс

miklla: если что, советую делать ход с самой большой вероятностью с шансом 100% вместо вероятностного распределения ходов

YurkovAS: miklla это ты про последний контест?

miklla: duct mcts ведь выдаёт вероятностное распределение ходов?

miklla: просто я им н разу не пользовался

miklla: но я пользовался другими алгоритмами для игр с одновременными ходами в других игр, в них вышеописанный лайфхак бустил ботов

YurkovAS: ох, хз, он как мктс - сначала поиграет во все ходы, а потом исследует глубже лучший, но иногда и плохие ходы немного поисследует

miklla: я имею ввиду на выходе алгоритма

miklla: ему выход - идеальный ход или вероятностное распределение твого хода?

YurkovAS: на выходе получается 2 числа: кол-во визитов и кол-во побед обычно выбираем ту, где больше визитов

YurkovAS: наверное это вероятность.

miklla: значит duct выдаёт идеальный ход? неожиданно

YurkovAS: если поделить кол-во побед на кол-во визитов и будет число от -1 до 1

YurkovAS: он дерево достраивает постепенно, но доигрывает рандомными ходами

YurkovAS: и вот эта формула ucb-1 делает так, чтобы лучшие ходы выбирались чаще, но и плохие иногда переигрывал

YurkovAS: не знаю как объяснить, я и в терминах то не силен

miklla: гугл говорит, что есть DUCT(mix) и DUCT(max), вот я имел ввиду, что итоговый выбор хода должен быть по max

YurkovAS: понял, спасибо, прочитаю еще раз.

miklla: хм, есть статья, где у них экспериментально mix лучше, чем max работает, но хз

miklla: всё-таки у них там полные решения, а не эвристики

BorisZ: толстые стриптизерши иногда перегибают палку

Uljahn: )

Uljahn: Automaton2000, | после толстой стриптизёрши: )

Automaton2000: ну так ты генери нормальный и большой

tutubalin: судя по доке, в DUCT 100% решение не обязательно - можно остановиться раньше

YurkovAS: походу неправильно сделал этот duct, само дерево, как не пытался, стандартный мктс в итоге лучше.

YurkovAS: может лучше попытаться смитсимакс сделать еще и что-то получится

735487: просто стандартный у тебя до конца же доигрывает? а в duct ветвление больше надо оценкой останавливать пораньше. смитмакс может заиграет

YurkovAS: так наоборот же, в дукт-е меньше ветвлений, чем в стандартном?

YurkovAS: вот с этими деревьями то и не понял, не могу представить, как оно точно работает

735487: не меньше. смотри так ты на своем ходу выбираешь из 4 как бы. и потом его ход допустим из 4. а в дакте это аж 16. и полюбому они будут исследованы хуже. возможно коэффициент подкрутить еще поможет

YurkovAS: на первом уровне же получается поровну, по 16 у каждого. только статистика в дакте у противника лучше, т.к. у него каждый ход по 4 раза прогнался

YurkovAS: а вот что дальше будет...

YurkovAS: я получается для второго хода неправильно сделал - т.к. там нода со своими уникальными ходами, допустим так же по 4 шт

YurkovAS: они уже будут раздельные, только кол-во визитов родителя унаследуют правильно.

YurkovAS: те. ход 1-1 и 1-2: будут разные ноды и статистика у них уже разная, хотя наверное для 1 должна быть общая. как в смитси

YurkovAS: в общем, получился классический мктс, только определяет еще и ход для противника. и играет 35%вин

YurkovAS: 35%вин vs 65%вин у классического

Beard: а почему бы не суммировать роллауты по своим действиям (при выборе, собственно, действия)

Beard: нам же в итоге неважен ход соперника

YurkovAS: соперник важен, получается

Beard: почему?

YurkovAS: если мешать сопернику, тогда он меньше баллов наберет

YurkovAS: и наоборот так же, он может начать нам мешать

YurkovAS: ну это уже в топе он важен. так то и без соперника до топ50 можно дойти, с бимсерчем, например

Beard: а как делаешь expansion? что-то ни в одном описании так и не нашёл, только вариант где сразу же полный перебор

YurkovAS: после 1-го визита: т.е. сначала в ноде играем 1 рандомную игру, а уже в след раз добавляем новые дочерние ходы

YurkovAS: и в других мульти такой подход работает лучше всего

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

YurkovAS: а когда в след раз зайдем в нее же, если есть дочерний ход с 0-м визитов, то возвращаем его

YurkovAS: т.е. переберем все ходы, чтобы небыло с 0м визитов и потом уже по формуле будут вибираться

Beard: а ну вот, все-таки сначала все варианты посетить, значит правильно понял

Beard: спасибо)

YurkovAS: там же по дефолту 0-визитов, а по формуле получается надо будет делить на 0

YurkovAS: либо еще можно сделать по дефолту 1 визит и скор указать -1, тогда можно всегда только по формуле считать. играть будет +- так же, от игры зависит