Chat:Ru/2021-05-16
miklla: лол, recurse
miklla: это законно?
Hamibar: я же говорю нужна еще одна лига
Hamibar: Запушили за ночь в легу.
Hamibar: Эвристики сила!
miklla: reCurse vs world: 142-5
Hamibar: Да я вижу +10 к счету
ilt: Рекурс всех выносит?
miklla: +9 от второго места
ilt: Офигеть
ilt: трудно его будет догнать
tiraptor: Спустя 10 сабмитов с изменением чиселки на 1 наконец то прошел, -сердечко
Hamibar: Рабочий способ.
Indawl: а что надо сделать чтобы в след лигу перескачить?
miklla: в конце сабмита быть выше босса
Indawl: т.е. если не прошел уже не выйдешь?
tiraptor: test in arena когда нажимаешь, то сабмит начинается
miklla: сабмит = кнопка nest in arena, можешь её нажимать много раз
miklla: test*
Indawl: а сколько? я по кд жму, бос падает, 1 место бронзе, а дальше не идет
miklla: у тебя сабмит не завершён
miklla: 80%
miklla: эх, у меня ментальные силы кончились, когда вчера всё залагало, думаю попробую сделать один небольшой апгрейд своего бота и всё, буду отдыхать
miklla: может надо перерыв делать в середине контеста или нормально начинать отдыхать за день до конца
tutubalin: из вуд2 вышел без единого поражения )
wlesavo: сегодня тоже наверное залагает
miklla: блин, я не понимаю, как reCurse смог протестировать своего бота, в леге его не было, у него есть второй аккаунт или что?
wlesavo: да как в прошлый раз наверное
miklla: что в прошлый было? я не участвовал
wlesavo: он до прохода в легу играл со смурфа
miklla: ну то есть второй аккаунт есть
wlesavo: интересно что там у него, такой отрыв сильный конечно
kurnevsky: Похоже на mcts.
kurnevsky: Хотя не факт.
miklla: наверное какой-нибудь высоконаучный алгоритм, поначитался всяких статей
kurnevsky: Но в одной игре он проиграл моему боту, почти в самом начале, и дальше у него был рандом.
kurnevsky: Что харанктерно для mcts.
YurkovAS: да нейронка походу, он же в этом году ее сильно апнул, даже в крестиках в топе на ней.
YurkovAS: и он писал, что хотел ее применить в след. контесте
BorisZ: можно измерить время, которое оппонент тратит на ход. Бот на нейронке должен быть быстрым.
wlesavo: так нейронка там это оценочная просто, она обернута в поиск
Hamibar: я тоже ставлю на нейронку. Мне кажется тут оценка важнее производительности
BorisZ: да, если это оценка в поиске то не проканает конечно
tutubalin: в бронзе уже полные правила?
wlesavo: да
kurnevsky: Если нейронка, то альфагошный mcts, значит.
wlesavo: ну у него своя модификация какая-то, но на сколько я понял принцип похожий
Hamibar: Хорошо, что лега в этот раз такая большая)
Hamibar: Даже javaScript в легу пролез
YurkovAS: wlesavo когда в легу?
TheCrucial: у джса же вроде лучше производительность чем у питона. почему такое удивление то что джс прошел ?)
YurkovAS: надо мктс проверить, 24ч осталось...
Hamibar: но там же нет всяких напаев . Хотя я не эксперт мб и есть
Hamibar: Вон в тех же ведьмах. Куча питонов в леге, но нет ни одного джса
TheCrucial: мне кажется дело в программистах а не в движке тут)
TheCrucial: но может и я ошибаюсь
Hamibar: ну не совсем
CyberEcho: У меня версия с эвристиками на C++ тратит 1.6 мс на всю игру. Так что пройти можно на любом языке, даже bash
Hamibar: в тех же крестиках с медленным языком в легу не зайдешь
kurnevsky: @CyberEcho твои бы эвристики, да в правильный минимакс :)
wlesavo: YurkovAS как только в чатике еще полезную эвристику подсаажут)) но на самом деле ход конем так много мне дал потому что у меня тень вообще не правильно рассчитывалась
Hamibar: В минимаксе нужны другие эвристики
YurkovAS: wlesavo а про тени добавлял? вот ты там правильно озвучил. вообще я сам тут жду, точную мат. оценку про них.
Hamibar: Я в своих уже запутался. Они так все связаны, что вряд ли будут работать у другого
wlesavo: YurkovAS про тени да, добавил штраф, в зависимости от того сколько теней на эту клетку может упасть и будет падать когда деревья вырастут
YurkovAS: оно дало заметное увеличение?
wlesavo: собственно пока добавлял кстати и нашел что у меня проблема с тенями глобальная. ну не понятно что дало, потому что добавил одновременно с починкой теней, в целом вроде полезно, визуально расположение деревьев стало получше
Hamibar: Когда выбираешь какое дерево рубить, то солнышки учитываешь?
wlesavo: да, штрафую за потерянный доход солнышек и на смене дня там за закрытие чужого дереваа бонус а за то что тебя закрыли штраф
dbf: с рубкой что-то сложно, у меня бот пропускает момент, когда противник нарубливает мноо и уже не может догнать...
YurkovAS: wlesavo получается у меня там еще кол-во клетов в этих 6 направлениях. и чем их меньше, тем лучше
YurkovAS: даже просто когда добавил кол-во клеток в 6 направлениях, неважно занятых или нет, то был заметный прирост
YurkovAS: чем меньше, тем лучше
wlesavo: хм, ща попробую
Hamibar: dbf я принудительно если больше 5 рублю)
dbf: Hamibar, забавно, попробую что-нибудь такое )
Hamibar: Причем пробовал 4 или 6 - играло хуже) Но тут еще влияет оценка роста.
BorisZ: мне кажется если рубить принудительно то надо не от своих трешек а от общего числа трешек - цена ведь от этого зависит
Hamibar: Так цена ведь только от своих зависит.
BorisZ: вот осталось например 10 нутриентов и 4+2 трешек, средняя цена каждой срубленной трешки не зависит от того как они распределены между соперниками?
BorisZ: 4+2 или 3+3 или 6+0
Hamibar: Как мне кажется не влияют. Срубил раньше получил +2 относительно соперника. А сколько их на карте не важно
Hamibar: Возможно предположить, что если у противника мало 3шек, то он не будет рубить. Так что и ты можешь подождать
Hamibar: Я вот не рублю, если у противника 0
wlesavo: Hamibar в конце игры то надеюсь рубишь все-равно?)
wlesavo: YurkovAS добавил, вроде бы ничего особо не изменилось
Hamibar: Обычно да. Но есть случаи, когда этого делать не нужно
wlesavo: не ну понятно
wlesavo: когда на окраине трешка растет с солнц накопленных можно больше получить
YurkovAS: wlesavo может добавить определение первого хода противника и его подставлять. тоже через бимсерч. вроде помогло немного
wlesavo: YurkovAS я думаю чето такое сделать, потому что бот как-то не стабильно играет, иногда против относительно слабого соперника может набрать 100 всего
wlesavo: хотя в новой версии такого нет, хз даже короче, но часто проигрыши в 2-3 очка
wlesavo: хм, первый ход против босса вроде ничего не дал а на сабмите как-будто бы чуть лучше, ща посмотрим
YurkovAS: может тогда добавить ограничений: макс кол-во экшенов в день.
YurkovAS: например: complete = 2 grow = 3 seed = 2
wlesavo: YurkovAS о, это кстати норм
miklla: у меня ограничение по трате энергии в день
YurkovAS: и со 2 хода можно еще и сделать определенный порядок, т.к. ты же там уже один играешь и не мешают
miklla: опа, ускорил программу в 2 раза, можно поднимать константы :)
YurkovAS: :thumbsup: футболка совсем рядом
CyberEcho: > у меня ограничение по трате энергии в день
А сколько если не секрет? И разве это помогает?
miklla: до этого сабмита было 25 в день, но это следствие того, как мой алгоритм устроен вообще, а не того, что я хотел ограничить трату энергии в день
miklla: ох уж эти легендарные игроки, которые набирают 102 энергии :)
miklla: https://www.codingame.com/replay/556625990
CyberEcho: 25 - это конечно не мало, у меня столько только в самом конце игры может быть.
miklla: попровка, он набрал 134 :)
CyberEcho: Ну zylo явно не вовремя делает COMPLETE
CyberEcho: А хотя он же выиграл, значит вовремя :grinning:
wlesavo: а можно посадить дерево в клетку в которой противник в этот ход завершает дерево?
ilt: в этот же нет
raTaHoa: miklla а за что вообще эти бонусные очки начисляют? никак не пойму этот момент, правда замечал только в районе 2-3 очков, а у него аж 34 добавили
wlesavo: за 3 солнца 1 очко
raTaHoa: http://chat.codingame.com/pastebin/32fdf19c-0c0a-4d2b-943f-918d93698737
wlesavo: ну это в правилах есть, я тоже недавно ток заметил, потом смотрю в правилах написано оказывается
miklla: хз, я в первый день заметил в правилах
wlesavo: я сначала тоже заметил, но пока дошел до симы уже забыл. еще конечно то что первые выходные полностью потерял обидно
ilt: а как понять сколько сабмитов сейчас идет
ilt: ?
Httpsx: В Leaderboard в Score выбрать Computing
gybson_samara: -1 != -1.0, пипец бесит
Uljahn: в numpy есть isclose
wlesavo: эх не возьму похоже легенду, в мульти придется доигрывать
Hoggins: мне в этот раз очевидно что следующий раз я зайду на cg со следующим контестом :)
ilt: а мульти отдельно боссов выбирают?
ilt: или ставят как в контесте?
miklla: отдельно, и они жёстче обычно
gybson_samara: Uljahn привет =)
gybson_samara: держал в голове дату и не удержал
ilt: с эвристиками надо очень аккуратно - одно починил/другое сломал
ilt: если бы не долгий сабмит можно было бы проэкспериментировать
wlesavo: miklla разве? вроде оставляют тех же
ilt: они по названиям совпадают
ilt: скорее всего
Uljahn: в мульти теперь тупо переносят весь лидерборд и боссов автоматом, два раза хп срубить теперь нельзя за промоушны
Uljahn: раньше-то да, в мульти существенно подкручивали сложность боссам, а теперь лега будет как в гоночках
Uljahn: Automaton2000: CG скатилось в казуальщину
Automaton2000: а ты в доту играл?
Beard: Uljahn а ты выйди в эту легу
Uljahn: Beard: пм-ы почитаю и выйду, в мульти
TheCrucial: эти старички только ноют по былым временам XD
Uljahn: так-то да, в 15-ы раз участие в контесте не приносит тех же эмоций, что в первый
ilt: а где рекурс?
Chibikko: пересчитывается, 9% только. Сейчас всплывёт
BorisZ: а был ли мальчик? (с)
dbf: судя по проценту побед, может и не всплыть :flushed:
Chibikko: багованную страту залил чтоли
BorisZ: угу эта версия точно не всплывет, прячет небось секреты
dbf: ох уж эти проблемы топ-1 :joy:
BorisZ: хотя чего тут спрячешь, реплеи разве только, по agentId старый бот доступен должен быть и сейчас
BorisZ: угу, был бы не топ1 - никто бы и не подумал ничего, ну проверяет человек версию какую-то, имеет право
BorisZ: а если топ1 - значит прячет секреты
BorisZ: если высадить трешки пентаграммой в туре номер 13, то вылезет леший и сожрет все деревья врага
Chibikko: такого нет в правилах
Vitaliy_Kamalin: :rolling_eyes:
Beard: Chibikko то есть высадить в шестигранном лесу пентаграмку для вас не проблема? :D
CyberEcho: Попробовал Монте-Карло реализовать. Для каждого из доступных ходов запускаю симуляцию 1000 раз случайными ходами (WAIT GROW COMPLETE). Так это чудо смогло в топ-50 откалиброваться :grinning:
Chibikko: Beard, ну мало ли, всяко можно высадить.
Xyze: может оценка решает?
dbf: https://clip2net.com/clip/m572140/a3a6f-clip-86kb.jpg?nocache=1 - исправлено :joy:
Chibikko: CyberEcho, так это не mcts получается. Просто из рута все ходы "прощупываешь" по 1000 раз? Дерево не строишь вглубь?
CyberEcho: Нет, это не mcts, никакого дерева нет
Xyze: MC != MCTS
Chibikko: а, ок. Буду знать
Chibikko: обидно. У меня полноценный mcts значит хуже играет.
wlesavo: да, видать оценка хорошая, для 1000 симуляций МС очень хороший результат конечно
kurnevsky: recurse новую версию залил, пока идет без поражений :)
CyberEcho: Так оценки как таковой и нет, берется финальный результат игры
Xyze: а лол
Xyze: ты имел в виду на 1к вглубь?
CyberEcho: Ах да, одно ограничение - не выполнять COMPLETE до 12 дня
Xyze: ты тип дофига быстро генеришь ходы?
wlesavo: CyberEcho офигеть
Xyze: это вроде как не очень дешевое действие
CyberEcho: > ты имел в виду на 1к вглубь?
Тысячу раз играю до последнего дня случайными ходами (без SEED)
wlesavo: пробовать это я конечно уже не буду, но вообще очень неплохо
BorisZ: CyberEcho странно, у меня приерно такая-же версия на арене и играет сейчас - на 500 месте
BorisZ: но с сидами доигрывания
wlesavo: отключи сиды в доигрывании))
wlesavo: изи легенда
Xyze: ну просто потом окажется что у него хеши и овер 200к сим на 100 мс
BorisZ: я попробую конечно но чет сомневаюсь, скорее всего дьявол в деталях
Xyze: ну как обычно )
Chibikko: а, так ведь SEED самое тяжёлое действие. Все места для посадки надо просчитать
wlesavo: но вообще по 1к сим на каждый ход получается в худшем случае под 40-50к роллаутов
CyberEcho: Да, отсутствие SEED в доигрывание - это ключевое. Иначе слишком много вариантов будет
Xyze: CyberEcho а пытался еще и срезать количество seed?
Xyze: мб эвристиками проредить их, чтобы побольше было времени на их проверки
miklla: wlesavo значит мои знания о переносе устарели
CyberEcho: > CyberEcho а пытался еще и срезать количество seed?
Если проверяется действие SEED то там симуляция еще проще - возможна только команда GROW. Поле того как все деревья выросли, можно сразу финальный результат посчитать
Xyze: сразу?
Xyze: вот теперь я перестал тебя понимать )
CyberEcho: В упрощенной симуляции каждый из соперников может выполнять только GROW, конкретное дерева выбирается случайно. Если все деревья выросли, то дальше возможен только WAIT, т.е. позиция статична. И ее можно быстро просчитать
Xyze: а, ну да, логично
Xyze: но я тогда спрашивал не об этом
Xyze: ты же получается в начале каждого хода проверяешь все доступные ходы
Xyze: и среди них скорее всего овер дофига SEED
Xyze: ты можешь прям в начале почистить их
Xyze: грубо говоря оставить 10 SEED на все деревья, GROW каждого и COMPLETE каждого
CyberEcho: В симуляции SEED не используются вообще
Xyze: да, но я не о симе уже
Xyze: а о начале
Xyze: начальный ход симы
BorisZ: у меня была такая версия - с урезанным количеством сидов
BorisZ: я брал все места посадки, считал счет для каждой в зависомости от теней и брал N лучших
BorisZ: играла хуже
BorisZ: внутри симуляции все
BorisZ: версия без сидов в симуляции играет действительно кажется лучше чем старая с сидами, но золотому боссу проигрывает уверенно
wlesavo: CyberEcho попробовал таки МС по твоему рецепту, видимо там таки есть еще детали, играет средненько
wlesavo: а, хотя не, у меня до рецепта роллаутов не дотягивает оказывается
CyberEcho: У меня финальная оценка считалась как (score1*3 + sun1 - oppScore1*3 - oppSun1) - (score0*3 + sun0 - oppScore0*3 - oppSun0), а не просто победа/поражение (0 - начальная позиция, 1 - финальная)
wlesavo: ааа, так ты за противника тоже доигрываешь
wlesavo: тогда понятно
CyberEcho: Конечно, за противника тоже играю
wlesavo: не, с противником лучше не стало, наверное таки у меня в количестве роллаутов проблема или просто баги
CyberEcho: Используются ли ограничения: COMPLETE только 12 хода и максимум 1 сид на поле ?
wlesavo: ага
YurkovAS: у тебя точно противник максимизируется?
wlesavo: да ладно, буду в мульти видимо легенду уже штурмовать, спать пора ато
nGragas: reCurse с какой планеты?)) какой-то нереальный отрыв от всех
BorisZ: сон только для тех кто легу прошел
BorisZ: nGragas завтра узнаем что там у него, он всегда пишет постмортемы
nGragas: притом я его не видел в топе почти все дни соревнования...
CyberEcho: Ну в го, шахматах также. Программа-лидер может и 100:0 выиграть
BorisZ: скорее всего клоном играл
CyberEcho: Либо сам с собой обучался, как AlphaZero
Xanrum: Нейронные сети в этом контесте заходят?
Uljahn: узнаем в пм-ах
CyberEcho: Ну в прошлом контесте reCurse с нейронкой занял 3 место
BorisZ: в прошлом - это ведьмы, там не было нейронок вроде ни укого из топов
BorisZ: бимсерч был там у всех плюс-минус
CyberEcho: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846/100
Uljahn: но это же просто эксперимент был, который был отброшен, не?
Uljahn: "I briefly tried training a NN to make some basic decisions but failed to converge anything meaningful, so gave up quickly."
Uljahn: странные у него там наборы - 10к всего примеров и 1к тестов
Uljahn: при этом нейронка переобучилась, по его словам, т.е. там размер совсем крошечный что ли
CyberEcho: Я не участвовал в fall challenge, поэтому не знаю кто что использовал. Но кто-то в чате (в этом или World) говорил, что reCurse хотел использовать нейронку для следующего контеста (т.е. для этого).
Beard: Uljahn но там и пространство вариантов мелкое для нейронки
Uljahn: смотря для какой
Uljahn: всё зависит от архитектуры
Xanrum: я сделал нейронку по википедии, пока только на 500 в золоте долазиет. посмотрю чему за ночь научится
Xanrum: это так необычно наблюдать, оно как будто обладает интеллектом, но абсолютно не понимаю как работает
Uljahn: чёрный ящик же
Uljahn: проклятие нейронок
CyberEcho: А как обучающие данные для нейронки получить?
CyberEcho: Через API реплеи выкачать?
Uljahn: для supervised learning - да
Uljahn: для RL - self-play
Uljahn: я думаю, для CG надо пилить систему teacher-student с quantization aware training, но это чисто интуитивные догадки
Xanrum: у меня есть класс Solver - ему на вход поступают данные через текстовые стримы, например из консоли. У меня есть программа что создает два солвера, дает разные массивы синапсов и делает "деритесь" - кто бьольше побеждает, тот размножается
Xanrum: т.е. нет обучающих данных у меня
CyberEcho: А что на выходе нейросети? Оценка позиции?
Uljahn: как нет? это же и есть self-play, разные версии нейронки играют между собой
Uljahn: оценка позиции или оценка вероятности хода
Uljahn: типа policy и value
Xanrum: у меня две нейронки, одна говорит что делать - сеять, растить а второй скармливается параметры каждой клетки - а на выходе рейтинг посадки. рейтинг роста
CyberEcho: value - вероятность выиграть policy - куда лучше сходить ?
Uljahn: value - вероятность выигрыша для данного стейта (оценка позиции), policy - вероятность выигрыша для данного хода из возможных, но это сильно если упрощать
Uljahn: лучше почитать соответствующие мануалы
Uljahn: https://spinningup.openai.com/en/latest/spinningup/rl_intro.html
wlesavo: если так то action value это оценка выйгрыша для действия, а policy по сути правило выбора хода, в простейшем случае это жадная максимизация action value
zuko3d: Xanrum чем пользуешься для нейронок?
zuko3d: ну, имею в виду инференс
Xanrum: я даже таких слов не знаю : D судя по гуглу - это среда исполнения - да на CPU - большего за 1 день без подготовки не написать
zuko3d: нене, я о другом. Ты на каком языке пишешь? Какую библиотеку используешь для нейросетей? Или сам написал?
Xyze: поддалась легенда
Xyze: 1 цифра в оценке поменяла поведение с ног на голову
Xyze: я раньше считал потенциальное солнце на 3 дня вперед
Xyze: стал на 9
Xyze: 400 место -> 80
YurkovAS: :thumbsup:
Xyze: нифига не понял на самом деле
Xyze: от отчаяния просто тыкал в циферки
YurkovAS: а это сложно сделать?
Xyze: метод написать или цифру поменять?
YurkovAS: метод этот
Xyze: ну вообще довольно просто
Xyze: http://chat.codingame.com/pastebin/9fc7c36f-41ca-4a81-afa0-dd29ba653a3d
Xyze: fakeWait - это обычный wait но без создавания нового стейта
Xyze: просто оптимизация
Xyze: по факту я в конце симуляции просто запускаю еще 9 дней в будущее без ходов
YurkovAS: а, понял, спасибо!
Xyze: у меня этот метод удерживает бота от продажи всех деревьев за 1 ход
Xyze: то есть 2 оценки борятся, и он может продать только то дерево, которое либо мешает мне, либо не мешает противнику
YurkovAS: а если 24+ день наступит, будет остановка?
Xyze: да
Xyze: из-за этого ценность дерева падает и он со спокойной душой всё продает
YurkovAS: спасибо, попробую сделать. правда уже устал с мктс-ом воевать
miklla: у меня до сих пор, конца ограничение на глубину симы повышаю с 2 до 3, то бот играет хуже, хз почему
miklla: когда*
Xyze: аналогично
Xyze: только с 3 до 4
Xyze: короче остановился на 3
Xyze: 2 вроде не хуже 3, но щас рисковать как то уже поздно
YurkovAS: может надо умножать в оценке на день, чтобы у 3-го был приоритет