Chat:Ru/2021-05-24
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, тогда можно всегда только по формуле считать. играть будет +- так же, от игры зависит