Chat:Ru/2020-05-04

From CG community
Jump to navigation Jump to search

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