Chat:Ru/2022-01-03
YurkovAS: wlesavo трон пилишь?
wlesavo: YurkovAS да, решил в минимаксе немного потренироваться, ато первый минимакс сразу в кутулу писать тяжело больно)) вроде работает, но чето особого буста не дало, было что-то типа 350 места на питоне теперь в районе 200 с минимаксом и это уже со всякими экспериментами с оценочной и оптимизациями типа упрощенной симы для изолированных игроков
YurkovAS: у меня какой-то очень нестандартный минимакс в троне. тоже поковыряюсь
aangairbender: а я все ещё с корабликами мучаюсь, написал брутфорс как у agade в ПМ, но чето оно не сильно играет
aangairbender: стою в топ1 серебра, босса не перепрыгнул. Бот играет вроде нормально, но хз может баг где-то...
YurkovAS: я что-то не понял его брутфорса: у него там написано, что типа то что нашли на глубине 1 для глубины 2 подставляем
wlesavo: ну у меня что-то более менее ванильное, надо подумать будет, мне не нравитс как оно играет все-равно
YurkovAS: но ведь тогда на глубине 2 уже особо не улучшить общее решение
aangairbender: ну я понял это следующим образом: для остальных используем найденное для предыдущей глубины (текущее действие WAIT), а для себя полный перебор с первого хода до текущей запускаем
wlesavo: aangairbender скорее всего баг, я тоже в топ1 серебра сидел пока не понял что максимальная скорость 2 а не 4 :smiley:
YurkovAS: aangairbender а ну вот так оно тогда будет переобучаться и для первого хода
wlesavo: YurkovAS а на какую глубину у тебя в троне в итоге ищется примерно?
YurkovAS: вроде в серебре как раз добавил 3-4 wait ходов всем и прошел дальше. так оно и осталось
YurkovAS: wlesavo 4-5 глубина фиксированная. но только для себя перебор, а для противников только лучший ход выбираем по оценочной. т.е. 4-5 ходов моих получается
YurkovAS: типа ходим своим, потом остальными противниками подбираем для него лучший. и в самом конце ходим всем лучшими ходами противника и оцениваем. какой-то минимакс в одного
YurkovAS: не альфабета, просто минимакс, без отсечений всяких
YurkovAS: давно делал - такое тогда придумал
wlesavo: хм звучит по сути как брутфорс с фиксированным полиси для противников, интересно
YurkovAS: да, что-то в этом логичное конечно есть: т.к. противников всех оцениваем всеравно, только выбираем за них 1 ход лучший и применяем
wlesavo: ну у меня альфа бета, но оно как-то не сильно по глубине дает, больно медленная оценочная все-таки
YurkovAS: вот этот алгоритм он сразу же хорошо заиграл от 100 до 50 места: судя по истории
YurkovAS: а оценка воронов и глубина: чем глубже, тем лучше
YurkovAS: у тебя maxN или параноид?
wlesavo: ну да, оценка такая достаточно точная получается, потому что у всех очень похожая оценочная
YurkovAS: а, параноид, в максН нет альфабеты
wlesavo: у меня типа параноида что-то да
YurkovAS: я что-то не понял параноида этого, надо ли каждого противника минимаксить?
wlesavo: глубина маленькая на мой взгляд, получается что-то в районе 8, когда два игрока нормально, а для 4 больно мало
YurkovAS: да, у меня получается всегда минимум 4 глубина
YurkovAS: 4хода для себя
wlesavo: YurkovAS просто для каждого противника делаешь min, а для себя max, у меня рекурсивная имплементация, там просто условие на вызов функции в зависимости от id игрока
YurkovAS: там еще главное оценка: все противники против тебя тогда оценка будет правильная для альфабета отсечений
wlesavo: ну да, оценка получается общая и от игрока не зависящая, поэтому работает аб
YurkovAS: зависит от игрока: eval(pIdMy) == -eval(pIdOpAny)
wlesavo: ну я имеею ввиду от минимизирующего игрока не зависит
wlesavo: они как бы максимизируют общую площадь
YurkovAS: если за противников заменишь, чтобы каждый выбирал только 1 лучший для него сейчас ход, то получится как у меня
aangairbender: возможно мне стоит переключится на что-то другое, чтоб потом вернуться со свежей головой. Что вы сейчас решаете, трон?
YurkovAS: да, трон
YurkovAS: и смитсимакс в троне плохо играет: проверено
YurkovAS: я и в корабликах его проверял - тоже плохо было: 99% проигрывал минимаксной реализации
wlesavo: ну да. я хочу попробовать отключение игроков, у меня благо легко это делатется сейчас, а потом может действительно попробую фиксировать полиси для противников. в идеале вообще против самого опасного минимакс, а для остальных фиксировано, что-то типа гибридного минимакса получится
YurkovAS: хорошая идея
wlesavo: в кутулу я так понимаю должен работать, он его придумал во время контеста кажется, по крайней мере так по пму похоже
wlesavo: мне бы еще динамическая глубина сильно помогла, но пока под это не очень все приспособлено, иногда очень много времени остается
wlesavo: YurkovAS как обычно делают динамическую глубину? есть стандартные практики какие-то? самое простое что приходит в голову это сделать поиск заново если времени осталось слишком много
YurkovAS: так и делают: цикл макс глубины от 1 до N, пока позволяет время
YurkovAS: след этап: principal variation чтобы при повторном проходе по одной и той же глубине использовать предыдущие лучшие ходы
wlesavo: сделал, но что-то не особо что дало. надо баги поискать еще, чето странное немного
YurkovAS: тоже переписал, надо тестить
YurkovAS: у меня получается соперников не оценивает совсем
YurkovAS: только когда для них ищет лучший ход из доступных