Chat:Ru/2021-05-16

From CG community
Jump to navigation Jump to search

miklla: лол, recurse

miklla: это законно?

Hamibar: я же говорю нужна еще одна лига

Hamibar: Запушили за ночь в легу.

Hamibar: Эвристики сила!

miklla: reCurse vs world: 142-5

Hamibar: Да я вижу +10 к счету

ilt: Рекурс всех выносит?

miklla: +9 от второго места

ilt: Офигеть

ilt: трудно его будет догнать

tiraptor: Спустя 10 сабмитов с изменением чиселки на 1 наконец то прошел, -сердечко

Hamibar: Рабочий способ.

Default avatar.png Indawl: а что надо сделать чтобы в след лигу перескачить?

miklla: в конце сабмита быть выше босса

Default avatar.png Indawl: сабмита?

Default avatar.png Indawl: т.е. если не прошел уже не выйдешь?

tiraptor: test in arena когда нажимаешь, то сабмит начинается

miklla: сабмит = кнопка nest in arena, можешь её нажимать много раз

miklla: test*

Default avatar.png Indawl: а сколько? я по кд жму, бос падает, 1 место бронзе, а дальше не идет

miklla: у тебя сабмит не завершён

miklla: 80%

Default avatar.png Indawl: а

Default avatar.png Indawl: понял

Default avatar.png Indawl: спасибо

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-го был приоритет