Chat:Ru/2020-05-04
gybson_samara: ого, у питоноводов праздник =)
metahom: а раньше кто-то использовал оба бота как блокеров?
gybson_samara: у инавори в стартере вроде они могут ролями меняться
gybson_samara: я видел одного интересного блокера, который просто в обратном порядке по точкам летает =)
MadKnight: лол
MadKnight: Т - Тактика
MadKnight: а своего он типа не будет сбивать?)
metahom: MadKnight, раньше кто-то использовал оба бота как блокеров?
MadKnight: ну neumann пытался, но ничего хорошего не вышло
MadKnight: он пытался на симе если что
MadKnight: и против достаточно сильных игроков
metahom: не, я понимаю, что просто так не выйдет это сделать :)
metahom: ну ты смотрел как рекурса новый бот играет?
MadKnight: неа
MadKnight: у него разве не нейронка была?)
metahom: глянь. он там постоянно вдвоем блочит. выходит вперед, потом два его бота блочат раннера, а блокер соперника без дела мается у чекпоинта
metahom: не знаю насчет нейронка или нет. наверное да
MadKnight: metahom а ты что, в гоночки играешь?)
metahom: нет, просто интересно
MadKnight: а во что играешь metahom ?
735487: там у него какая то тонкая грань когда ехать на новый чек и когда блочить. он как то определяет что если один блокер справляется то второе едет еще один чек брать. ну или то я такие реплеи смотрел
metahom: MadKnight, ни во что. контест будет может в него поиграю
MadKnight: metahom го в какой-нить мульти
metahom: не знаю, не хватает мотивации
metahom: amurushkin, да, тоже интересно, как он это решает
Uljahn: думаю, можно сколь угодно крутую нейронку обучить на селф-плее, главный вопрос - ужать веса и бота в 100к
gybson_samara: а никто не пробовал тренировать на 3-4 командах?
Uljahn: в одной игре?
735487: впринципе можно попытаться на обычной симе оценкой попытаться сделать 2 блокера если ты ведешь в счете
gybson_samara: Uljahn да. Выше конкуренция, другие подходы
735487: правда тут есть опасность что можно увлечься и если профукаешь противника то будет отставать уже
gybson_samara: я к тому, что при трех командах два блокера должы обучиться быстрее даже
735487: gybson_samara: тут же фигня в том что тогда ты в инпутах будешь подавать больше данных. а потом что получится в реальной игре они будут пустые?
gybson_samara: ну да
735487: нейронка от этого больше только будет
gybson_samara: ну вон на ютубе чувак змеек обучает
gybson_samara: там в песочнице их сотни, а потом в соревнованиях одна особь
gybson_samara: не обязательно эту нейронку использовать, обучить на ней обычную, на двух игроков
metahom: както заморочисто
gybson_samara: типа без этого задача тривиальная =)))
metahom: если добавлять количество игроков, стратегии могут сильно поменяться. у тебя один блокер против 2 раннеров соперника. которого блокировать? очевидно что того кто идет первым
metahom: т.е. против лидера будут играть 2 блокера. тогда лидеру логично вообще блокера не использовать, а вторым подом убирать препядствия с пути раннера. ну или что-то подобное
gybson_samara: ну да, но они будут меняться
vrabosh: надо както научиться писать обучалку для подобных игрк как последняя.
vrabosh: с обучалкой интересней както, а то если чисто под логику программить, код очень большой и долго этим заниматся надо..
gybson_samara: так тут все на симуляциях и обучалках
vrabosh: круто. есть пример хоть один про океан? интересно посмотреть или на другие
vrabosh: хотя лучше сначало свое попробовать придумать.. когда уже идей не будет, подглядеть как другие делают для разнообразия кругозора идей
gybson_samara: ну вот классика
gybson_samara: http://files.magusgeek.com/csb/csb_en.html
gybson_samara: вот нейронка
gybson_samara: https://github.com/jasonrute/csb_neural_network
Uljahn: к OoC нейронку сложно прикрутить, примерно как к крестикам, мне кажется
Uljahn: неполная инфа, кулдауны, стейт сильно меняется каждый ход
gybson_samara: может не в полном объеме, но научить искать может
gybson_samara: но эвент приходит и уходит
gybson_samara: чем больше у человека готовых моделей, тем больше вероятность, что прикрутит
Uljahn: не в полном объёме - это специализированные нейронки будут, типа какую систему лучше заряжать в данной ситуации, либо в какую сторону плыть, и для использования каждой системы своя нейронка, потом иерархически их объединить
735487: мне кажется максимум чему оно обучится это двигаться змейкой и заряжать торпеду
Uljahn: я не вижу способа всё в одну запихать, это уровень openAI Five или DeepMind’s StarCraft 2 AI получится
Uljahn: в 100к точно не уместится
Uljahn: т.е. уместить-то можно, но до леги не дойдёт, наверное
gybson_samara: как минимум путь от точки до точки могла бы оптимальный выбирать
Uljahn: что такое оптимальный путь?
735487: путь от точки до точки можно любым алгоритмом поиска пути искать
gybson_samara: чтобы себя в тупик не загнать уже не совсем любой
Uljahn: у нейронок вероятностная природа, она выдаст тебе оптимальный путь в 95% случаев, но объём весов будет 10Мб, ты ужимаешь веса до 100к и точность падает до 20%, как-то так
vrabosh: я имел введу не обучать через нейронку.. а создать обучающий алгоритм.. типа на условиях... типа если он сделал то то, сделать это.. и спосощью перебора или какого либо обучения эти алгоритмы выстраиваются оптимальным образом..
vrabosh: типа как змейку ктото учил на ютубе или другие имитация выживания чего либо.
Uljahn: это эволюционные алгоритмы и решающие деревья?
vrabosh: во они.. спомощью их делали?
Uljahn: http://files.magusgeek.com/csb/csb_en.html в пунке 5.2 как раз генетический алгоритм описывается
Uljahn: кто-то и в OoC вроде генетику использовал
Uljahn: вроде, в постмортемах что-то такое проскакивало
Uljahn: https://forum.codingame.com/t/ocean-of-code-feedback-strategies/175885/22
Uljahn: а чтобы кто-то случайный лес тренировал - такое не встречал
Uljahn: тут ещё не только в самом подходе дело - большинство алгоритмов машинного обучения требуют значительных вычислительных мощностей, топовые подходы - это тысячи петафлоп/сек дней
Uljahn: https://cdn.technologyreview.com/i/images/ai-and-compute-all.png
Uljahn: т.е. даже для гоночек уже норм видюха нужна, чтобы поиграться с ML, иначе неделями ждать результатов
Uljahn: *большинство алгоритмов глубокого обучения
Uljahn: машинное в целом не такое трудоёмкое
YurkovAS: Uljahn как думаешь, сколько по времени надо будет тренировать нейронку для csb на компе типа: 6-8 ядер, 32 гб ram, gtx 1060-1070?
YurkovAS: и можно ли этот процесс останавливать и продолжать потом.
Uljahn: судя по тому, что писал reCurse - в районе недели, грубая оценка
Uljahn: останавливать и продолжать можно, конечно
Uljahn: во время обучения обычно выводится информация о достинутой точности, т.е. можно прервать неудачный эксперимент, подкрутить параметры и запустить заново
Uljahn: *достигнутой
Uljahn: насколько я знаю, reCurse написал свой фреймворк с нуля, но Robostac вроде обычный tensorflow юзает без проблем
YurkovAS: понял, спс. не так уж и долго.
Uljahn: дело в том, сколько у тебя будет этих неудачных экспериментов, пока не найдёшь оптимальные значения параметров))
YurkovAS: да это понятно, что будет разбираться в теме больше одного месяца. прикидываю, скоько еще на обучение нейронки будет тратиться времени.
Uljahn: насколько я опять же знаю (могу ошибаться), не существует гарантированного метода за один запуск попасть в цель
Uljahn: сейчас дело движется в сторону AutoML, когда параллельно запускается обучение множества нейронок с разными параметрами
Uljahn: но это опять же мощности нужны
Uljahn: брутфорс, короче
Uljahn: поэтому я в нейронках разочаровался в своё время
YurkovAS: а если, например, будет проц dual xeon 36 core (72 threads) это прям заметно ускорит обучение? или лучше видюху мощную, типа 2080ти
Uljahn: зависит от фреймворка, если он под GPU, то лучше видюху, наверное
Uljahn: tensorflow у меня в 4 раза медленне был на CPU, это core i7 4 ядра vs gt650m (384 вычислительных ядра)
Uljahn: большинство фреймворков затачивают под GPU, т.к. базовые операции над матрицами очень простые и лучше параллелятся на большое количество ядер видюхи
Uljahn: узкое место - доставка данных в видеопамять, но в новых архитектурах это может быть не так уже, не особо слежу
Uljahn: лучше inoryy спросить, он тут лучше всех шарит
YurkovAS: ой, да я сейчас точно не буду это делать, может быть в конце года. пока что лучше в остальные мульти поиграть и научиться новым алгоритмам-трюкам.
gybson_samara: по нашим временам проще найти себе облако для вычислений, чем железку собирать
gybson_samara: вот это смотрел кто-то?
gybson_samara: https://ngc.nvidia.com/catalog/all?orderBy=modifiedDESC&pageNumber=1&query=&quickFilter=&filters=
gybson_samara: штош, координаты выданные моделью совпали с актуальными
gybson_samara: нейронку я до 7го может и не сбацаю, но приемлемый ГА в CSB точно
Uljahn: симу запилил?
Uljahn: на каком языке? приемлемость ГА зависит от количества сим, как и MCTS
Uljahn: с облаками не имел дела, только ноутбуки запускал на бесплатной azure, такое фуфло
Uljahn: MSmits в картишках цену карт на бесплатном облаке брутфорсил
gybson_samara: к вечеру чтиво. код попался, где автор еле находит буквы для имен методов и переменных, но при этом пишет подробнейшие длинные комментарии
gybson_samara: https://github.com/Rudymil/Coders_Strikes_Back/blob/master/Coders_Strike_Back-python.py
Uljahn: так его ещё там чуть не забанили, решили, что он криптовалюту майнит))
Uljahn: вроде, норм имена, так обычно пишут учёные, которые не программисты
gybson_samara: "когда и как" гугл перевел с французского "когда и когда" =)) Но эти комментарии меня поразили в самое сердце. Я их даже на французском немного понял =)
gybson_samara: "Но прежде чем углубляться в код подробно, немного теории." в своем роде шедевр
Uljahn: какую-то амплитуду придумал, хотя по сути это температура как в SA
gybson_samara: как аккуратно геттеры-сеттеры прописал
Uljahn: а нужно ли это?
gybson_samara: вообще да
gybson_samara: я вот сделал свойство у вектора - длина, которое при первом получении в кэш кладу
gybson_samara: если потом изменить его свойства без контроля, то кэш протухнет и никто этого никогда не найдет =)
gybson_samara: думаю большинство багов обусловленно именно такими несоблюдениями технологии
Uljahn: ну, если ты либу пишешь, то да, а когда сам юзаешь, то знаешь ведь, где нужен контроль, а где - нет?
Uljahn: кэш ведь по сути словарь, почему не сделать метод для определения длины, который в словаре будет искать результат для текущих свойств и добавлять перевычисленное значение, если ничего не найдено? мемоизация простейшая
vrabosh: есть способы как сразу заполнить матрицу весами куда стоит ходить в океане?
vrabosh: цель просто максимально ходов сделать
Uljahn: я сделал разрастание суши, пока она не заполнит всё
Uljahn: на предпоследнем шаге остаются клетки, максимально удалённые от суши
vrabosh: и оно 100% максимально заполняет?
Uljahn: нет, конечно
Uljahn: это просто эвристика, как максимально просто сделать
vrabosh: 0 0 0 0 0 0 0 9 0 0 0 0 0 0 5 0
vrabosh: вот пример карты, 9 это суша и 5 это где стоя я
Uljahn: а, куда стоит ходить из начальной клетки?
vrabosh: надо чтобы были такие хода
Uljahn: ща
vrabosh: ща подругому нарисую
vrabosh: . . . . . . . х . . . . . . i .
vrabosh: 08 09 12 13 07 10 11 х 06 03 02 01 05 04 i 00
vrabosh: вот так чтоб примерно матрица сформировалась
vrabosh: как такую задачу решить?
BorisZ: vrabosh с идеально длинным путем можно не заморачиваться, в тупики лишь бы не заплывал и ладно, это все придется выкидывать на следующих стадиях, когда мины будешь вражеские предсказывать
vrabosh: пока хочу эту задачу решить
vrabosh: лучделать изначально идеальный путь.. а потом если вижу мину то телепортироваться
BorisZ: кто-то скидывал название алгоритма для поиска длиннейшего пути, но я не помню, гуглить надо
Uljahn: https://www.geeksforgeeks.org/find-maximum-path-length-in-a-binary-matrix/
Uljahn: это не подойдёт?
BorisZ: простая эвристика - считай размер площади для сщттусеув сщьзщтутеы в графе и держись стенки или наоборот поближе к центру - на 99% решает задачу
BorisZ: connected components
vrabosh: спасибки, буду читать.. я думаю такие задачи имеют математическое решение.
BorisZ: с минами ситуащия еняется каждый ход, идеальный путь будет в тыкву превращаться по мере поступления информации о враге
wlesavo: BorisZ hamiltonian path
BorisZ: во-во оно самое
vrabosh: спасибки, даже название есть у этого)
gybson_samara: держаться к стенке и двигаться по спирали внутрь тут вполне согдится
vrabosh: лучше понять логику таких задач один раз и потом во многих играх будет легче.
vrabosh: чем сразу использоать легкий путь.. у меня вообще поиск почти идеального пути небольша функция под рекурсией заняла
vrabosh: for m,n,t in (y-1,x,'N'),(y+1,x,'S'),(y,x-1,'W'),(y,x+1,'E'):
eith[isBit(m,n,mm)[0]] = t c = max(eith)
vrabosh: вот почти весь код функции который ищет хорошо пути..
vrabosh: но это не то все..
gybson_samara: индус в клэш инвайтил зачем-то ... тут еще и абузят? =)
Uljahn: меня тоже один крендель инвайтит постоянно
Uljahn: хотя я и не играю
gybson_samara: я тоже туда не хожу, не мой стиль
gybson_samara: vrabosh это надо сначала проблему P NP разрешить
wlesavo: блин, это че, если на странице контрибьющена в ide код пишешь он не сохраняется? подстава какая то
Uljahn: после утверждения?
Uljahn: или вообще?
Uljahn: кого ещё клэшами спамят? отписался им на форуме, ставьте лайки https://www.codingame.com/forum/t/feature-request-ability-to-reject-incoming-follow/58429/4
gybson_samara: лайкнул
gybson_samara: реплайнул картинку с окошком уведомлений
Uljahn: :thumbsup:
wlesavo: Uljahn вообще
Uljahn: странно, у меня сохраняется. это когда test in ide нажимаешь, или что за страница контрибьюшена?
Uljahn: возможно, у пазла истёк срок апрува, т.е. месяц прошёл, и его перезалили, ну и линк поменялся
Uljahn: а, ну и play test надо разок нажать, иначе нигде не сохраняется код
wlesavo: Uljahn да, тест когда жмешь, странно, свежий пазл, мож баг какой словил, решил вроде кроссворды, чуть доделать оставалось вывод, и точно нажимал на разные тесты, проверял чето, потом возвращаюсь нет ничего
Uljahn: а язык тот же?
wlesavo: да, ничего вообще не трогал
wlesavo: может две вкладки случайно были открыты или что то в этом духе
wlesavo: скорее всего чето такое
wlesavo: обидно немного ну да ладно, мож потом уже как заапрувят перерешаю
Uljahn: если во второй вкладке с пустым кодом нажал play, то да, хана
wlesavo: ну такого точно не было
wlesavo: хм, я точно не нажимал кнопку play all, только по одному тыкал, с этим может быть связано?
wlesavo: всмысле в правильном окне тыкал
Uljahn: ух ты, нашёл прикол - если код удаляешь и жмёшь play, то после перезахода восстанавливается дефолтный стаб :)
Uljahn: не всё там чисто
foxbel: здарова пацаны
foxbel: го Майнкрафт
gybson_samara: неожиданно
gybson_samara: ребенок в фортнайт играет, очень бодрая веселая игра
Uljahn: в дискорде сказали, что CG во время контеста проверяет на копипастинг только самых подозрительных ботов, ну и в леге в основном, поэтому стримы до золота - это ок, т.к. продвижение платформы, видимо
Uljahn: жаль, придётся расчехлять VSCode, а то клятые стримеры в голду заехать не дают :smiley:
gybson_samara: я перешел на vscode+git
gybson_samara: нормально
gybson_samara: пока толком не смотрел как гит версии хранит, но надеюсь с ним будет проще откатиться с упоротой версии обратно
wlesavo: Uljahn да ладно, там 10 человек смотрит, да и информации часто не сильно больше чем в чатике можно налутать
gybson_samara: в контесте копипастинг может быть командой, логично проверять
wlesavo: прикольно, решил The Total is Right - Weird edition, был один из первых пазлов которые я пытался решить когдато, он мне очень понравился но так и не смог сделать тогда, было чето типа 200 строчек кода со сложными переборами и перестановками, ща решил за 30 строчек, впервые решение красивее чем у робостака даже. интересно что тогда об этом подходе простом тоже думал но сделать не получилось
wlesavo: все таки видимо есть прогресс :slight_smile:
gybson_samara: забавно, завтра опробую
wlesavo: а, и прикол, там есть опубликованное хардкодное решение, чувак подобрал валидаторы просто перебором, не знаю зачем он опубликовал правда это
wlesavo: он когда то пазлом недели был, помню что я так хорошенько себе могзг поломал тогда, а сейчас прямо сел и решил сходу
Uljahn: совсем недавно решал похожий пазл :/
Uljahn: чё-т сложновато, надо тоже мозги поломать и отложить, а потом взять и зарешать сразу)
Uljahn: работа подсознания
Uljahn: часто замечал такое, что спустя некоторое время задача решается как бы сама собой - т.е. всё это время в фоне подсознание её решало, собирало инфу, возможно даже направляло какие-то действия под предлогом решения других задач :scream_cat:
Uljahn: проблема в том, что с одним человеком нельзя провести слепое тестирование: либо ты уже пробовал решать, либо нет, т.е. нельзя сделать вывод, есть прогресс или нет на основе решения такой задачи :confused:
Uljahn: возможно, дело в избирательности восприятия, т.е. осознаётся только определённая часть поступающей информации (феномен Баадера-Майнхоф и т.п.), но не известно, что с остальной частью инфы происходит :relieved:
mihei: божечки, поехала эпидемия клэш фолловеров
Uljahn: я петицию на форуме накатал, ставь лайк https://www.codingame.com/forum/t/feature-request-ability-to-reject-incoming-follow/58429/4
Uljahn: а, ты уже поставил
Uljahn: спс
mihei: видел, лайкнул, это даже топик мой :)
Uljahn: ахах, точно
Uljahn: странно, что никто ещё не создал тред с этой проблемой, твоя тема - самое релевантное, что нашлось
Uljahn: в чатике-то давно недовольства, но админы чатик не очень читают
inoryy: It’s been a while since we’ve seen Uljahn — their last post was 3 years ago.
Uljahn: im a chat