Chat:Ru/2021-05-18

From CG community
Jump to navigation Jump to search

CaptainGreen: Тут кто-нибудь cg-brutaltester запускал под виндой?

ilt: я запускал

CaptainGreen: работало?

ilt: да

CaptainGreen: там можно таймауты отключить?

ilt: настройками нет

ilt: если в код полезешь можно

CaptainGreen: да там тоже затейливо

ilt: программирование вообще затейливая штука

CaptainGreen: хе-хе

CaptainGreen: там излишне затейливо...

Uljahn: таймауты? это таймлимиты что ли?

CaptainGreen: угу

CaptainGreen: но дело видимо не в них

Uljahn: контест открыли в мульти

BorisZ: вот я тот подумал, если отбросить всю шелуху, то нам в этой игре надо как можно быстрее вырастить и срубить 10 трешек

miklla: моя динамика мне постоянно показывала, что надо развиваться, изредка вырубаю около середины игры деревья, а примерно на 16-17ом ходу срубить все или все, кроме одного, а дальше вырабатывать энергию

miklla: что это следствие механики нутриентов

BorisZ: да, я неправильно шелуху отбросил ) - если мы максимально быстро закончим вырубку 10й трешки - это не означает что получим максимум очков

BorisZ: так было бы оптимально ничего не рубить пока не наберем 10 штук а потом вырубать сразу все - по очкам это будет плохо

miklla: ой, не 16-17, а 19-20

BorisZ: это я начал думать мысль что тут 2 параллельные цели, одна на максимизацию солнца, другая на максимизацию скора вырубки

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

miklla: http://chat.codingame.com/pastebin/bc367965-aa64-49db-9c92-19c391fdc476

miklla: первые 4 числа - t[0] - .. - t[3]

miklla: e - энергия

miklla: n - нутриенты

miklla: это с третьего дня вроде

BorisZ: почему нутриенты убывают быстрее чем деревья рубятся?

miklla: * - сруб

miklla: потому что это против срубов противника

BorisZ: а откуда они берутся?

miklla: я до этого запускаю противника против себя-куклы

miklla: получается BorisZ не читал мою ПМ :)

miklla: https://www.codingame.com/forum/t/spring-challenge-2021-feedbacks-strategies/190849/14

BorisZ: я пока вобще не читал пмы - подумать хочется еще

miklla: ну, больше ни у кого нет такого алгоритма, как у меня, так что она не подскажет с остальными

miklla: эвристики в ней не расписаны если что

BorisZ: да я подозреваю по твоим репликам по ходу контеста что у тебя свой уникальный подход )

miklla: я правда вспомнил, что скинутая мной табличка является текущей, но ограниченной, идеальная набирает на 2 очка больше за игру, в ней t[1] достигает 4, а t[2] достигает 5, t[3] достигает 3

miklla: довольно удивительно максимальное число 3-деревьев с этой точки зрения

miklla: но это непрактично

miklla: такое малое число 3-деревьев плохо для реальной игры с настоящими тенями

YurkovAS: может еще и от карты зависит? это для пустой (без камней) статистика?

miklla: моя динамика не учитывает карту

BorisZ: это видимо без теней

YurkovAS: последний сруб на 13-м дне

BorisZ: сферические деревья в ваккууме )

miklla: если что, таблица снизу вверх

miklla: верхняя строка - 23ий день

miklla: shadows mechanic simplified to energy gain = e - e / C, where e = t[1] + 2 * t[2] + 3 * t[3] - maximal energy gain, t[] - numbers of trees of given size, C - const

BorisZ: ну а что делать если ты отстаешь от графика?

miklla: на каждом ходу я полностью решаю актуальную динамику, данные предудщих ходов не используются

miklla: но в целом да, сферические ваккумные деревья

BorisZ: а про минимакс для вырубки не думал?

miklla: некоторые его использовали, но я-то знаю, что в играх с одновременными ходами это плохая идея

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

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

BorisZ: я просто думал что тут два разных алгоритма должны быть

BorisZ: один хочет больше солнца и трешек, другой последовательность вырубки ищет

YurkovAS: да какие минимаксы, надо же нейронку пилить :)

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

miklla: с точки зрения науки, сделать ход - решить нормальную игру в матрицей матожиданий последующей идеальной игры

miklla: которую как раз обычно примерно вычисляют

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

YurkovAS: а твой алгоритм стремился к состоянию, которое ты до этого скидывал?

YurkovAS: а с противником что делал? просто минимакс опять какой-то вырисовывается, как по мне...

YurkovAS: только оценочная = отставание от того идеального состояния

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

miklla: а возможные ходы закрывал эвристиками

YurkovAS: я до сих пор не знаю что такое динамическое программирование. видимо используешь много new :)

miklla: :)

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

miklla: https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

miklla: например вот её типичное применение https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A4%D0%BB%D0%BE%D0%B9%D0%B4%D0%B0_%E2%80%94_%D0%A3%D0%BE%D1%80%D1%88%D0%B5%D0%BB%D0%BB%D0%B0

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

miklla: (поиск кратчайших путей в графе между всеми парами вершин сразу)

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

miklla: точнее рекуррентым

YurkovAS: эх, не понятно. ну может быть когда-нибудь разберусь. пока для себя выбрал по ПМ-ам сделать: мктс, бимсерч и duct. пытался в последние дни улучшить минимакс и мктс: оба слабые, 90% сливают бимсерчу и золотому боссу.

miklla: там у алгоритма на поиски кратчайших расстояний простая идея

miklla: составляется таблица "кратчайший путь из i в j по вершинам, индексы которых не выше k"

miklla: и она заполняется сначала для k = 1, затем для k = 2 и т.д.

miklla: рекуррентным образом

miklla: в итоге k будет равно V, поэтому будут истинные расстояния между вершинами

YurkovAS: спс

Uljahn: думаю, главное в контесте было правильно найти место под посадку, чтобы максимально усложнить жизнь сопернику, а поскольку посадку все обрезали, то и нейронка у рекурса так вырвалась вперёд (у него жёсткой обрезки не было)

Uljahn: "As a result of minimal pruning, I have no idea if my bot violates common knowledge like “do not seed next to your tree” on purpose or by mistake."

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

CaptainGreen: может кто подскажет, как побороть cg-brutaltester под виндой? Он работает нормально с агентом на питоне, а если скормить ему агента на c++, то ломается ходов через 5-6. Process explorer покзывает что запускается три бота и один из них падает.

Chibikko: может сам бот падает?

CaptainGreen: нет

Chibikko: в консоли бруталтестера что-то пишется? Например что score=-1

CaptainGreen: угу

CaptainGreen: на 5-й день

CaptainGreen: цикл бота отрабатывает за 10мс в среднем

Chibikko: там как-то реплей можно посмотреть через браузер. В нём видно причину падения. Или в логах в json формате можно найти ошибку которую рефери возвращает.

CaptainGreen: на сервере CG бот работает нормально

Chibikko: сколько потоков запускаешь?

CaptainGreen: у себя я собирал gcc и cl - результат одинаковый

CaptainGreen: 1

CaptainGreen: 1 поток

CaptainGreen: в логе ошибка - таймаут

CaptainGreen: я поставил таймаут 20 сек в тестере - просто стало дольше висеть

CaptainGreen: с двумя потоками пробовал - происходит то же самое

Chibikko: значит бот долго думает или не понимает что от него ответ ждут. У меня win10, всё работает отлично. Скачай последнюю версию рефери, там увеличили таймауты.

CaptainGreen: я уже все скачал и собрал у себя

CaptainGreen: может что-то в защите винды стоит отключить?

Chibikko: и ещё есть таймаут на ход и таймаут на всю игру. Они в разных файлах в исходниках рефери.

Chibikko: да нет вроде, не надо ничего отключать.

CaptainGreen: при этом всем, в легу этот бот как-то просочился. Видимо, проблема в локальных запусках.

Chibikko: этот параметр указал? -Dleague.level=3

CaptainGreen: нет, но агенту на питоне это не повредило

CaptainGreen: там вроде и так 3 - дефолт

Chibikko: у меня без этого не работало

Chibikko: в первом раунде как-раз 6 дней, вот может и падает на 5-ом

Chibikko: *в деревянной лиге

Chibikko: java -jar cg-brutaltester.jar -r "java -jar -Dleague.level=3 referee.jar" -p1 ".\Agents\last\OneFile.exe" -p2 ".\Agents\try9\OneFile.exe" -t 4 -n 50 -l "./logs_brutaltester/"

CaptainGreen: нет - не помогло :-(

CaptainGreen: в общем там AV происходит, на на сервере нет.. не понятна-а-а...

CaptainGreen: +32 места

Uljahn: у меня +200 в середине голды, добавил условие не рубить раньше 12-го дня

Default avatar.png TTeaLL: подскажите, бинарный поиск в матрице хоть чем то отличается от поиска в обычном списке?

TheCrucial: ну тем что у тебя не 2 границы а 4 разве что

Default avatar.png TTeaLL: так, вот и теперь что с этим делать, или это просто частный случай

TheCrucial: бетмена решаешь?

Beard: :D

Beard: тот же вопрос писал)

Default avatar.png TTeaLL: да

Default avatar.png TTeaLL: вот пытаюсь прикинуть

Default avatar.png TTeaLL: выучил бинарный поиск и пытаюсь его прикрутить

Beard: ну, в итоге получится, прикручивайте)

Default avatar.png TTeaLL: ну вот пытаюсь)

TheCrucial: простой бинарный поиск хоть раз писал?

Default avatar.png TTeaLL: конечно)

aropan: TTeaLL: а напомни что там за условие?

Default avatar.png TTeaLL: есть бетмен, который ползает по зданию, надо найти бомбу, на входе дают где находится бетмен, сколько есть прыжков для перемещения и размер здания(матрицы) из постоянных входных данных, направление где находится бомба

Default avatar.png TTeaLL: ну и надо допрыгать

aropan: А направление по двум координатам?

Default avatar.png TTeaLL: да, в начале дают х начальный и у начальный

Default avatar.png TTeaLL: о, первый тест сделал

Default avatar.png TTeaLL: нормас

Default avatar.png TheMapotakes: Hi

Default avatar.png TheMapotakes: Test times Log