Chat:Ru/2022-01-03

From CG community
Jump to navigation Jump to search

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: только когда для них ищет лучший ход из доступных