Chat:Ru/2020-06-07
tutubalin: TTeaLL если ты был 243, а стал 36, то на что ты жалуешься? )
Kadim: Почему в контекстном меню нет пункта вставить? Как добавить?
tutubalin: используй Ctrl+C, Ctrl+V или Ctrl+Insert, Shift+Insert
rmuskovets: но пункт "копировать" там есть)
tutubalin: пункт Вставить должен появляться только когда в клипборде что-то есть
tutubalin: но вебсайт не может иметь доступ к твоей клипборде из соображений безопасности
Uljahn: такой вопрос лучше на сайте редактора Monaco задавать :smirk:
gybson_samara: 78% - 2 место, какой-то нервный прям сабмит
gybson_samara: опять завис на втором месте, только теперь в серебре =) сплошная драма
BorisZ: gybson_samara если против босса хотя бы иногда выигрываешь, то сабмить снова
BorisZ: если совсем не выигрываешь то лучше не надо - так ты тольо босса выше запихиваешь в рейтинге
gybson_samara: BorisZ мы с ним на равных я бы сказал, кому как повезет
BorisZ: ну тогда сабмить снова, рандом то никто не оменял, с какого-то раза повезет
gybson_samara: еще подкручу
BorisZ: вот пока крутишь - пусть оно играет )
ooom: посоветуйте что-нибудь на кодинг бота
gybson_samara: крестики-нолики
BorisZ: ooom ты не знаешь какую игру выбрать чтобы начать, или уже выбрал и не знаешь с чего начать?
gybson_samara: на глаз крестики-нолики конечно тяжеловато воспринимать, вообще неочевидно где и что не так сделал
gybson_samara: все еще тащусь от нампи =)
gybson_samara: mm = self.mm[ENEMYMAP,:,:].copy() - self.mm[MYMAP,:,:]
ooom: @BorisZ я не знаю что выбрать
ooom: как тут кому-то писать? через '@' ?
BorisZ: просто набираешь первые 1-2 буквы ника и жмешь таб
BorisZ: ooom путь самурая: заходишь в https://www.codingame.com/multiplayer/bot-programming и выбираешь самую красивую картинку )
BorisZ: по любой игре всегда найдется кто-то кто сможет что-то подсказать
ooom: BorisZ спасибо то что нужно! :)
gybson_samara: я бы последние контесты посмотрел, все интересные
ooom: много тут людей, кто по русски говорит?
gybson_samara: в этом чате все =)
ooom: пока только 2 живых вижу)
gybson_samara: человек 20 наберется
BorisZ: раз в несколько месяцев проводятся контесты - тогда много народу, сейчас скорее затишье, бывает что целый день никого нет
Uljahn: я заглядываю переодически, просто чего писать-то, раз никто ничего не спрашивает
BorisZ: Uljahn я вот подумал может правда сделать на tech.io пример про нубму
BorisZ: освежить тему так сказать
BorisZ: я глянул, там куча примеров совсем мелких, на 1 страничку,
Uljahn: для питона либа, ускоряет за счёт JIT
BorisZ: https://www.codingame.com/forum/t/speed-up-python-with-jit-compiler/184919
Uljahn: BorisZ: так надо, чтобы её сначала добавили на tech.io, наверное
BorisZ: тему с классами можно раскрыть
Uljahn: на дискорде что ли спросить
BorisZ: я не знаю как там все устроено (
ilt: Uljahn ты когда теклесс подставляешь обсчета никакого у тебя нет?
BorisZ: я попытался создать плейграунд, но не хватило терпения до конца дойти
Uljahn: ilt: именно
ilt: я что-то не понимаю у меня получается второй ход получается в центральную клетку
BorisZ: Uljahn Our Docker-based architecture allows contributors to create playgrounds on virtually any technology, language, framework or API, even custom or emerging ones. Learn about anything you like.
Uljahn: плюс в том, что на tech.io добавлять либы намного проще, чем на CG, они для этого и переписывали всю архитектуру
BorisZ: это на стартовой так написано
Uljahn: а, ок, надо покурить эту тему
ilt: это особенность MCST или у меня что-то криво работает
ilt: последовательность 4-4 5-5, потом выбирает 7-7
ilt: с большим отрывом
Uljahn: всегда?
ilt: не всегда, но часто
Uljahn: а ты из дочерних нод рандомно выбираешь, когда они не развёрнуты ещё?
ilt: да
ilt: tecless это 8-8
Uljahn: угу, 7-7 это центр, вообще не в тему
ilt: если дать на первый ход много времени то 99% времени это 4-4
ilt: теперь думаю это глюк моего алгоритма или нет
ilt: я понял из-за чего таймауты, это как раз перенос статистики в следующую итерацию
ilt: ход в смысле
Hamibar: а почему ход 7 7 это плохо?
ilt: так вот без переноса новая 95% проигрывает, а с переносом 100% выигрывает
ilt: ooom https://www.codingame.com/ide/puzzle/tic-tac-toe
Hamibar: ooom Monte Carlo tree search
ilt: Hamibar потому что ты хуже стоишь в центральной клетке
ilt: 4-4 5-5 7-7 4-5
ilt: очевидно у крестиков хуже
Hamibar: На самом деле не понятно, почему это плохо. Надо будет подумать над этим)
Uljahn: потому что в центр миниборд им ходить нельзя - проиграют центральную миниборду, очень ценную
Uljahn: но может возникнуть вынужденная ситуация, когда других ходов нет
ilt: 4-4 5-5 7-7 4-5 5-7 3-5
ilt: у меня алгоритм такое допускает
ilt: роллаутов далеко не 20 тысяч
ilt: конечно
Hamibar: Уже похоже на какую-то эвристику)
ilt: чистый монтекарло
Uljahn: а что против босса получается?
ilt: буду коэффициенты настраивать
Uljahn: твой бот на арене не так играет
ilt: это в иде и получается
Uljahn: ясн
ilt: вот на арене https://www.codingame.com/share-replay/471447529
Uljahn: мне кажется, крестики этим дебютом обменивают центр на угол, в углу только две выигрышные линии (кроме ничьих и считая потерянный центр), т.е. чётко обозначаешь приоритеты, противнику достаточно одну из мини-борд в линии заблокировать и всё
Hamibar: получается, что самый лучший мув в начале - в центре?
Uljahn: да
ilt: 100%
Hamibar: похоже мой бандит до этого не додумался)
Uljahn: это даёт крестикам перевес в десяток процентов примерно
Uljahn: другое дело, что у топов лучшие ходы захардкожены в книге дебютов
Uljahn: и твоё ход не из книги может им спутать карты)
Hamibar: интересно сколько даст захардкоживание этого первого хода) ща испытаю
Uljahn: довольно много даёт, ну и teccles moves до кучи хардкодь
Hamibar: teccles moves это что?
Hamibar: у меня еще даже древа нет:grinning:
BeginnerDeveloper: я так поинмаю это не совсем для начинающих сайт?)
ilt: Uljahn старая версия почти никогда в центр не ходит
Hamibar: Да для всех подойдет. Необязательно же писать что-то сложное.
Hamibar: В контестах и мульти для этого есть лиги.
Hamibar: В пазлах есть метка сложности.
gybson_samara: я вот так сделал в крестиках
gybson_samara: http://chat.codingame.com/pastebin/50229334-1ca9-48aa-83ef-a68432262cb7
Uljahn: приоритеты захардкодил?
ilt: gybson_samara это для оф?
gybson_samara: ну как захардкодил
gybson_samara: если я их посчитаю, то что изменится?
gybson_samara: очевидно же это количество линий, которые можно построить через эту клутку
ilt: если для оценки то это уже не то, я хочу чистый монтекарло улучшить по максимуму
Uljahn: у разных миниборд разные стоимости по идее
gybson_samara: да, я больше того, для глобальной доски это использую
Hamibar: по идее ведь если есть дерево, то не обязательно хардкодить первый ход. Он и сам должен понимать, что это наиболее выигрышный ход
gybson_samara: целиком оценка выглядит так
gybson_samara: http://chat.codingame.com/pastebin/a8d2811a-5387-41ca-b892-b71274518baa
Uljahn: Hamibar: да, если число симуляций достаточное
Uljahn: gybson_samara: тут пора нейронку обучать)
Uljahn: правда, нужен мощный MCTS с солвером
gybson_samara: Uljahn да вот подумаю, да, как и с пакманом
gybson_samara: но в пакмане на эвристике в голду въехал
ilt: Hamibar на начальной стадии даже на плюсах одной секунды не хватает
ooom: В javascript, typescript можно какие-нибудь либы подключать?
gybson_samara: Uljahn но я тут на нампи сразу делаю и это праздник конечно
Hamibar: ilt сколько плейаутов нужнов начале, для этого? пару милиионов?
Hamibar: кстати простое захардкоживание первого хода не дало никакого результатаю
gybson_samara: дык
gybson_samara: если бы он был настолько важен, то всегда выигрывал бы тот, кто первый ходит
gybson_samara: если в голду выйду на эвристике, выложу код в паблик
ilt: Hamibar я не знаю. У тебя всегда первый ход 4-4?
Hamibar: Ну если захардкожено, то да)
ilt: а если нет?
gybson_samara: у меня просто по оценке первый ход всегда туда =)
Hamibar: а так не часто туда ходит
gybson_samara: так как с точки зрения и глобального поля и локального это самая высокая оценка для пустого поля
ilt: если я ставлю 50 сек у меня всегда 4-4
ilt: правда я в своем алгоритме не уверен
ilt: gybson_samara попасть в голду на эвристиках проблем нету
gybson_samara: ilt угу, тут такой интересный топчик собрался перед боссом =)
Uljahn: вот пример с 7-7 https://www.codingame.com/replay/471476801
ilt: дальше в какой-то момент ты поймешь что все ранее сделанное не имеет большого смысла
gybson_samara: почему?
gybson_samara: для перебора точно такая же оценка ходов и нужна, разве нет?
Uljahn: потому что поле взаимосвязано, есть фримувы
ilt: для перебора да, для монтекарло нет
Uljahn: для перебора не нужна оценка по сути, только статистика выигрышей
gybson_samara: ну это глубина какая
ilt: если имеется ввиду минимакс то оценка нужна
gybson_samara: с оценкой можно 10-20 ходов посчитать
ilt: для монтекарло вообще не нужна оценка, а нужна статистика
ilt: принцип другой
Uljahn: минимакс тут не подходит - слишком большой коэффициент ветвления в начале и на фримувах
ilt: Uljahn что ты хотел показать этим реплеем?
gybson_samara: фримувы можно и не давать
Uljahn: что 7-7 - это плохой ход
ilt: сливает в одну калитку да
Uljahn: gybson_samara: это как?
gybson_samara: Uljahn ну не ходить так, чтобы противнику выпал фримув
gybson_samara: насколько это можно
gybson_samara: хотя бы в начале, а как осталось мало клеток свободных, то тогда да
Uljahn: при этом придётся делать неоптимальные вынужденные ходы
gybson_samara: придется
Uljahn: а к концу партии просчитать уже легче
gybson_samara: но если у противника на мази захват и он туда попадет при фримуве
Uljahn: противник этим воспользуется и загонит в угол
Hamibar: Нужно хардкодить наверное что-бы из других борд тоже не ходило в центр, тогда будет профит.
ilt: это теклес и есть
Hamibar: Но лучше не хардкодить а нормального монте карло пилить
gybson_samara: я просто делаю оценку -50 (надо -100 наверн) для клетки, если ей соответствует занятая глобальная
Uljahn: поэтому центры на периферийных бордах захватывают в последнюю очередь
gybson_samara: ну да, оно так и выходит
Uljahn: монте-карло и MCTS это совершенно разные вещи, кстати
gybson_samara: как Маркс и Энгельс =)
gybson_samara: пипец улучшил =) не сходил первым ходом 4-4 чтобы враг в центр не сходил
Hamibar: монте карло в монако, MCTS в крестих)
Uljahn: MCTS в пределе (при бесконечном количестве симуляций) строит такое же дерево, что и минимакс, но миник - это как поиск в ширину, а тут больше в глубину с адаптацией (ещё и коэффициент есть для подстройки)
tutubalin: MCTS в пределе - это брутфорс )
Uljahn: как и минимакс
Uljahn: построение полного дерева игры
Uljahn: за счёт некоторых оптимизаций можно часть веток обрезать как в альфа-бете
tutubalin: мне кажется, за то время, сколько тут в UTTT играют, уже можно было полное дерево просчитать на кластере
Uljahn: )))
Uljahn: а мне кажется, что если бы могли, то просчитали бы уже и пейпер накатали
tutubalin: ivoryy может специально в DeepMind устроился, чтоб их мощности заюзать
tutubalin: https://ru.wikipedia.org/Ничейная_смерть
Uljahn: https://en.wikipedia.org/wiki/Solved_game
Uljahn: всё равно, в условиях ограничений оптимальная игра труднодостижима
Uljahn: поэтому крестики хороши как полигон для оптимизаций
tutubalin: благодаря симметрии для первого хода в UTTT существует всего 15 (а не 81) возможных вариантов
Uljahn: я не смог придумать, как это использовать, разве что книгу дебютов пожать получится
Uljahn: если бы был единый лимит времени на игру (как в RAIC), а не по ходам, то было бы интереснее, наверное
inoryy: tutubalin эй, зачем палить то так
Uljahn: так он вроде и сам в гугл устроился?
Uljahn: Automaton2000: обколются своими крестиками, а потом битки майнят на суперкомпьютерах
Automaton2000: я так и не понял
ilt: непойму как ход 7-7 может иметь 80% побед на миллионе визитов
ilt: то ли в роллаутах бага, то ли так может быть
ilt: на втором ходу
Uljahn: дебажил роллауты?
Uljahn: ничьи правильно считает? ещё в бэкпропе результата бага может быть
ilt: роллауты дебажил
ilt: как раскладывает результаты по дереву тоже
tomatoes: это на третьем ходе? 44 55 77?
ilt: на втором
ilt: 4-4 ответ 5-5
ilt: дальше выбирает 7-7
Uljahn: а фримувы проверял? там рандомно выбирает из возможных в начале?
ilt: да
Uljahn: а на 7-7 ответы с какой статистикой? счёт/посещения
ilt: по разному
ilt: но бывает и 80% побед с большим количеством визитов
Uljahn: в силу симметрии, счёт у 4-5 и 5-4 должен быть примерно одинаков, как и у 3-5 и 5-3
vrabosh: а сколько там в крестиках вариантов может быть? обычных как я помню 800 гдето
ilt: Uljahn вернул старую версию, мне теклес не помогают
MelnikovIgor: Что такое теклес?)
ilt: ход в ту же доску куда сходил противник
ilt: на начальном этапе
MelnikovIgor: эм
MelnikovIgor: зачем ходить туда куда проитвник ходил?)
ilt: неправильно выразился
ilt: допустим начало 4-4 5-5
ilt: Здесь предлагается делать ход 8-8
ilt: чтобы следующий ход противника был на этой же доске
MelnikovIgor: А, ты доменные оптимизации делаешь
MelnikovIgor: Я бы начал с чистого МКТС
MelnikovIgor: Без доменных улучшений
MelnikovIgor: Мне ни одно из них не помогло
ilt: что такое доменные оптимизации?
ilt: у меня и есть версия чистого MCST
MelnikovIgor: Ну то что ты пытаешься эвристикой улучшить
ilt: пытался ее ускорить но что-то пошло не так
MelnikovIgor: Заставляешь ходить на определенную доску и тд
ilt: MelnikovIgor а сколько у тебя роллаутов на втором ходу?
inoryy: забавно что это теклесом называют, эту страту юзали сразу в первую же неделю как уттт вышел
MelnikovIgor: @ilt 6-10k 2ое место в голде максимум
MelnikovIgor: ilt 6-10k, сейчас до GOLD 2jq дошел
MelnikovIgor: ilt 6-10k, сейчас до GOLD 2ое место максимум дошел
MelnikovIgor: Но я на шарпе пишу
MelnikovIgor: Мне принципиально на нем пройти
MelnikovIgor: На плюсах уже в легенде был бы
inoryy: c# не настолько от с++ отстает
MelnikovIgor: Ну конечно
MelnikovIgor: Очень)
MelnikovIgor: очень
ilt: у меня чуть поменьше и я тоже на яве хочу пройти
inoryy: когда игра только вышла на яве бот довольно долго держал #1
MelnikovIgor: А сейчас посмотри топ 30)
MelnikovIgor: Одни плюсы
MelnikovIgor: JIT делает неоптимальный ассемблер
ilt: все-таки у меня есть баги
MelnikovIgor: А про то что надо избегать GC вообще молчу
ilt: надо их ловить
MelnikovIgor: Как кстати в яве хранишь стейт борда?
inoryy: это не меняет того что этот парень держал #1, т.е. он спокойно прошёл голд босса в первую же неделю
MelnikovIgor: Ну значит крутой чел, без вопросов, но факт есть факт
inoryy: в любой мульти язык решает только когда на топ~10 метишь
ilt: MelnikovIgor а ты за ничью очки даешь?
MelnikovIgor: У меня за ничью 0
MelnikovIgor: За выигрыш от 0 до 1
MelnikovIgor: За проигрыш от -1 до 0
MelnikovIgor: Хотя может вариант от 0 до 1 рандировать с ничьей в 0.5 будет лучше?
MelnikovIgor: ранжировать*
BorisZ: inoryy когда крестики открыли там не было лиг
MelnikovIgor: опа)
BorisZ: это был первый мульти который не от контеста произошел, может и единственный
Uljahn: тогда голд-босса не нафидили ещё, даже кубер с миником на джаве прошёл в легу
Uljahn: а может он просто в топе оказался, которые автоматом вкатились
Uljahn: кстати, https://github.com/carlini/printf-tac-toe
BorisZ: но сейчас посмотрел - 4 шарпа, 12 джав в леге, всяко кто-то а может и все через босса прошли
Uljahn: да можно конечно пройти
Uljahn: просто надо чутка упороться
BorisZ: Uljahn голдбосса нафидили - что значит?
BorisZ: его сила игры то константная, от циферок рейтинга не зависит
BorisZ: и один котлин - тоже джава
tutubalin: Uljahn с printf - круто! люблю такое
Uljahn: от ретинга зависит, как сильно тебе надо рекать топ-10, а не только босса
Uljahn: возможны всякие RPS случаи
BorisZ: не знаю, в каких-то играх наверняка так, в крестиках не могу себе представить
BorisZ: может быть так, но один хрен с какого-то момента человек уже не понимает почему тот или иной ход делается
Uljahn: даже в ванильном MCTS могут быть у всех разные константы и число роллаутов
BorisZ: про константу котора в формуле - я пробовал ее крутить, в каком-то диапазоне оно примерно одинаково играет, довошьно большом
BorisZ: а число роллаутов как раз практический единственный показатель силы
BorisZ: но там если минимаксы есть как ты говоришь, они выбиваются, может из-за них и возникнет камень-ножницы, хз
MelnikovIgor: Кручение константы тоже не особо помогло
Uljahn: http://cgstats.magusgeek.com/app/multi-tic-tac-toe/MelnikovIgor
Uljahn: вот как раз сабмит в топе идёт)
Uljahn: MelnikovIgor: сколько роллаутов на втором ходе?
MelnikovIgor: Uljahn 10k
MelnikovIgor: У меня пишется в вывод
735487: 10к сильно мало. надо не меньше 25к а лучше больше 30к
MelnikovIgor: Что-то все идеи закончились)
Uljahn: первую секунду всю используешь?
MelnikovIgor: Да
MelnikovIgor: Все время использую
inoryy: BorisZ 28 февраля 2018 уже точно были лиги
inoryy: более того я даже 100% помню я спрашивал почему в утт есть лиги когда заметил что в других кастомных не было
735487: решил тоже попробовать одну мульку и сабмитнуть ))
inoryy: когда уттт только вышел там почти все на миниках были и как-то пролезали в легу )
Uljahn: теоретически можно пролезть за счёт того, что рекаешь всех в топ-10 кроме босса :thinking:
gybson_samara: я целый день в топ-10 кручусь =)
inoryy: там босс сильно урезанный, только 5мс на ход давалось или че-то такое
gybson_samara: и весь топ-10 со мной, оргия какая-то
Uljahn: http://cgstats.magusgeek.com/app/multi-tic-tac-toe/gybson_samara боссу сливаешь сильно
gybson_samara: Uljahn в тестах 5-1 примерно его выигрываю
Uljahn: :relieved:
tutubalin: блин. иногда вылетают таймауты на пустом месте
tutubalin: вроде время засекаю как можно раньше и 5мс оставляю про запас
Uljahn: блин, тоже нашёл один таймаут в ласт бэтлс, на ровном месте
Uljahn: когда жмёшь "replay in same condition" - подсовывают другой проц :smiley:
ilt: нашел один забавный баг в роллаутах
ilt: победа на полной минидоске считается ничьей
735487: хехе фикси
735487: а я нашел способ сделать на 20% больше роллаутов. но качество игры от этого не стало лучше
tutubalin: я когда с фиксированного дерева на динамическое переписал, у меня неожиданно выросло число и ролаутов, и сим
tutubalin: но прирост качества оказался не такой крутой, как я ожидал
MelnikovIgor: Что за фиксированое и динамическое дерево7
tutubalin: у меня сперва дерево было фиксированной глубины. ноды ниже определённой глубины не создавались
gybson_samara: ну как надоедает болтаться в топ-3, прям бесит, и хз че делать =)
gybson_samara: только не говорите "делай симу" =)
735487: фикси баги :)
ilt: и делай симу :)
ilt: блин в старой версии еще роллауты неправильно считаются
ilt: надо будет все перебрать заново :(
ilt: нашел одно неочевидно проблемное место в новой версии
Uljahn: wleslavo вроде без симы пролез в голду
YurkovAS: Uljahn в csb давно у пена и дапорана боты были лучше, чем смитсимаксовые неумана, смитса и робостака?
inoryy: оба сильнее
Uljahn: сомневаюсь
inoryy: у пена НН была уже, я бы где-то между пб и агаде поставил, дапо был бы топ5 наверно
Uljahn: тогда 150мс было на ход, сложно сравнивать
YurkovAS: а, нейронка, миник больше интересует, стоит ли еще раз попытаться или уже забить..
inoryy: понижение мс только на руку пену бы сыграло
inoryy: у топ5 минико-подобное
Uljahn: я про миник и говорил
YurkovAS: у даропана был миник же? и сейчас бы он был бы топ5?
Uljahn: penn видел в топе тоже
inoryy: да, у него был очень сильный бот с кучей кастомных правил
inoryy: понижение мс его бы не сильно слило, точно сильнее мсмита
inoryy: хотя бы потому что у дапо был avx2 двиг а у мсмита нет
inoryy: у топ5 сейчас нейронки + миникоподобный поиск где оценочная это нейронка
YurkovAS: слил статистику меду и микеичу, своими экспериментами. теперь они ниже нааба. одно улучшаешь - другое ломается, как всегда... костыли одни..
inoryy: топ4*
inoryy: обрати внимание на скачек в 7пт с 5 на 4 )
inoryy: https://github.com/pb4git/Nash-DQN-CSB-Article
YurkovAS: топ4 да, даже топ5-ый только 1 раз выйрал. если поставить глубину 8, тогда мой бот может выйграть ~3 партии за сабмит у топ3-4.