Chat:Ru/2020-06-22
 tutubalin: VitaliKhileuski играю иногда
 Uljahn: клэши скучные, их не пообсуждаешь в чате :smirk:
 Uljahn: Automaton2000: делай больше - кидай дальше
 Automaton2000: я даже не знаю в какую сторону
 Uljahn: )
 735487: Automaton2000: кидай в какую удобно
 Automaton2000: а что с ним не так?
 tutubalin: Uljahn да тоже можно пообсуждать. особенно если сперва толпой заломиться
 tutubalin: там же даже отдельная чаткомната для каждого клеша создаётся - не просто так
 vrabosh: а трон норм пообсуждать?
 vrabosh: а что за клэш
 tutubalin: Clash of Code
 Uljahn: а чё трон обсуждать? там довольно простая лега даже на питоне
 Uljahn: нашёл зачётную функцию в питоне: sys._debugmallocstats()
 zuko3d: как ты выигрышную партию ищешь?
 vrabosh: 3x3 имею введу
 zuko3d: а. Там же можно каждую ситуацию закодировать одним интом и хранить массив с результатами.
 Uljahn: vrabosh: у тебя уже битборды для каждого игрока есть, в начале хода можно перебрать все варианты и проверить на победу, результат занести в массив, где индекс - состояние битборды игрока
 Uljahn: уже который раз подсказываем)
 Uljahn: в начале игры, вернее. когда времени дофига дают
 vrabosh: надо думать над алгоритмом дешевым, который параллельно деревья проходит или не уходит в дебри просто так.
 vrabosh: я могу сказать идти на глубину 5, но в одной ветки глубина 5 это 1млн операций, а во второй глубина 20 может быть всеволишь 20к
 vrabosh: и логично сначало коротки ветви проверить, если они не выигрышные, то в длиных идет основная игра.. вот надо теперь понять как это делать дешево. без стэков массивов
 Uljahn: точных методов не существует, везде приходится чем-то жертвовать, либо точностью, либо скоростью, либо глубиной
 Uljahn: логично проверять ветки, в которых выигрыши случаются чаще - это суть MCTS
 Uljahn: логично обрезать ветки, где ничего хорошего не случается
 Uljahn: это есть как в MCTS, так и в альфа-бета минимаксе
 Uljahn: кстати, откуда ты заранее можешь знать длину веток?
 wlesavo: трон да, я не думал что на столько изи, 200 строк питона с нулевой глубиной и без действий соперника
 vrabosh: глубину вот и не знаю..
 wlesavo: вчера на ночь оставил обучаться первую версию, не понятно как оценить перфоманс конечно, но моему мктсу проигрывает даже на крестиках, но вроде выглядит не совсем рандомно
 vrabosh: можно попробовать.. чтото типа сколько ходов у меня на этой глубине тесть, столько передавать дальще.. 
 vrabosh: и допустим 8 + 6 + 8 + 2 и если больше 30 останавливать
 vrabosh: тогда такие такие штуки как 2+1+3+2 - далеко глубоко уходить будут
 vrabosh: wlesavo, как ты обучаешь?
 Uljahn: wlesavo: у тебя на селфплее обучение? и спустя несколько итераций гоняешь турнир против своего MCTS?
 wlesavo: vrabosh есть такой алгоритм старый TD lambda, сеть фитует по репрезентации стейта вероятность победы и по вероятности победы определяет следующее действие  
 Uljahn: )))
 wlesavo: Uljahn пока не автоматизировано, я руками сыграл против мктс ща пару игр :grinning:
 Uljahn: как матёрый датасаентист заговорил
 Uljahn: у MCTS фиксированное колиичество роллаутов?
 wlesavo: ну получается да, на селфплее, ходы для обоих игроков выбираются из одной и той же сети
 wlesavo: да зафиксировал роллауты просто на 50к
 Uljahn: там вроде одна сеть используется для генерации игр, а другая обучается на этом, потом между собой играют серию матчей, и остаётся та, что побеждает
 wlesavo: ну это прямо очень примитивнаяя реализация, без сети для полиси тяжеловато
 wlesavo: да вариаций очень много
 wlesavo: я пока самое примитивное что можно сделал
 Uljahn: а если супервайзед вариант попробовать?
 Uljahn: брать статистики из дерева MCTS и учиться их предсказывать :)
 wlesavo: по хорошему нужно вообще офполиси как в dqn сделано
 vrabosh: так mcts как я понял, не дает 100% победу, даже если допустим он бы доконца все просчитывал?
 Uljahn: даёт, если до конца
 vrabosh: неделю назад вроде подобное тестил на обычных крестиках.. может чтото не так делал
 Uljahn: если есть 100% победа, то MCTS найдёт этот вариант в конце-концов
 Uljahn: но может потребоваться много времени
 vrabosh: он же говорит, сколько побед будет в этой ветке, но он же не говорит, что эта победа 100%
 Uljahn: он чаще ходит в ту ветку, где победа вероятнее
 vrabosh: если для крестиков 3х3 взять
 Uljahn: если там 100% победа, он будет ходить в неё намного чаще
 Uljahn: по количеству визитов выберешь именно её
 vrabosh: надо будет потестить на 3х3 креситках.. если работает норм.. то думаю и на глабальное поле лучше mcts делать, его и проще параллезировать и быстрее должен работать
 Uljahn: если хочешь разобраться в формуле выбора ветки - то начни с UCB1 без дерева
 Uljahn: "его и проще параллезировать" - как это?
 vrabosh: ну типа проверил 1 глубину для всех, потом 2 глубину для всех
 Uljahn: только недавно читал статью на архиве, там нифига не просто
 vrabosh: а не идешь в одну ветку до конца
 Uljahn: ты минимакс опять описываешь
 Uljahn: в MCTS глубина адаптивная - для каждой ветки своя
 Uljahn: тебе похоже надо разобраться с тем, что такое дерево игры и что такое случайное доигрывание
 vrabosh: надо будет. но пока интуитивно делаю.. хочу так весь cg пройти до серебра\золота, а потом уже можно будет начать книги читать)
 vrabosh: тогда думаю точно пойму что в этих книгах пишут)
 Uljahn: сомневаюсь, что золото чему-то научит)
 Uljahn: ты бы видел, на каких костылях там боты
 vrabosh: прошлый контест понял как волновой граф делать. тут минимакс разобрался
 vrabosh: ну и когда уже книги читаешь.. начинаешь понимать.. оо а яж могу это вот в этой игре использовать и пошел тестить
 vrabosh: я вот после того как разобрался в волновом графе, сразу за день золото  топ100 в троне взял
 vrabosh: а до этого в серебре гдето там возился)
 Uljahn: а, ну так-то да
 Uljahn: приятно на 200 строчках питона в легу войти, когда знаешь правильные алгоритмы)
 VitaliKhileuski: мужики
 VitaliKhileuski: вам по 40 лет
 VitaliKhileuski: какие игры
 VitaliKhileuski: в клеш оф код в топ 200 завалитесь хотя бы
 Uljahn: и что произойдёт?
 VitaliKhileuski: ну как что
 VitaliKhileuski: я тебе респект кину
 735487: были мы уже в клешах. давай го в крестики или в гоночки в топ :) мы тебе респект кинем
 Uljahn: угу, клеши для 40-летних мужиков - не солидно :)
 tutubalin: VitaliKhileuski я в клешах топ-1 был
 wlesavo: хорош
 wlesavo: я денек поиграл 5к cp набил и норм
 tutubalin: проще всего набивать, пока некого живого нет. против ботов чисто )
 wlesavo: короткие клеши интересно в принципе иногда, потому что кодгольф оптимизаций слишком мало 
 tutubalin: или наоборот, когда по 8 человек в клеше - тогда даже за 2-е место иногда чуток очков дают
 tutubalin: чо-то клеши тормозят сегодня
 tutubalin: в главняке тоже жаловались
 Rush_iam: Новичок и хочу опробовать себя в программировании Бота -  но тут нет ранжировки по "сложности"... Может есть бывалые, которые опробовали много - с какого стоит начинать?
 tutubalin: Coders Strike Back
 Rush_iam: Это самый новый?
 Rush_iam: ааа... читаю описание, дял новичков.. спасибо, tutubalin!
 Uljahn: если с физикой и тригонометрией сложно - попробуй Трон, там на клетках, поочерёдные ходы и правила простые
 TTeaLL: а code royale по сложности где находится ?
 735487: мне была не сложной
 735487: вообще бери пробуй все что нравится
 735487: там сложность так то постепенно увеличивается. и в каждой игре в самый топ залезть сложно
 gybson_samara: зафигачил лямбду SUBBOARD = lambda arr, y, x, board : arr[board,y*3:y*3+3,x*3:x*3+3]
 gybson_samara: пока не придумал куда ее =))
 735487: зачем так то?
 gybson_samara: ну типа вместо функции
 gybson_samara: а как еще можно?
 gybson_samara: словарь?
 tutubalin: так лямбда не быстрее функции вроде
 tutubalin: смотри. у тебя две системы координат.
одна: x и y. используется при вводе и выводе
 tutubalin: вторая: доска и клетка. используется при рассчётах
 tutubalin: один раз в начале переводишь из первой во вторую. потом один раз в конце переводишь из второй в первую
 Uljahn: Automaton2000: фичу зафигачил - чатик озадачил
 Automaton2000: а ты в какой лиге?
 Uljahn: Automaton2000: в петросянской
 Automaton2000: а если у меня в общаке смайлы не показывает
 tutubalin: Automaton2000 ну от петросяна смайлы и не должны появляться
 vrabosh: все, надоели мне эти крестики..)
 Automaton2000: это у тебя за баг?
 Uljahn: :scream_cat:
 Uljahn: Automaton2000: сжечь еретика!
 Automaton2000: и я не понимаю что ты хочешь
 vrabosh: запускайте новый контест
 Uljahn: в общаке народ во что-то рубится, othello вроде свежее
 vrabosh: там легенды нету)
 735487: о смит карлисо подспустил
 735487: у меня для отелло есть дебютная книга :) 18 мегабайт
 735487: но в нее легче эвристику писать чем для крестиков. по крайней мере я хорошо эту игру знаю и думаю что смогу написать эвристику. надо будет попробовать
 YurkovAS: эх, была бы кнопка "забаниться в крестиках на N месяцев" :smiley:
 735487: да это все CSB и крестики это пипец надолго походу )))
 tutubalin: надоели крестики - делай нолики!
 735487: самое интересно что реально со временем доходит что надо усилять нолики )))
 vrabosh: я слышл гдето, что в шашках уже умеют предсказывать до конца бепроигрышную партию?
 vrabosh: не могу найти инфу.. не подскажите
 tomatoes: "checkers solved" в гугле
 Uljahn: Automaton2000: чтобы эффективно искать инфу в т.ч. в гугле, важно знать ключевые термины
 Automaton2000: это не значит что их нет
 tutubalin: vrabosh 
https://ru.wikipedia.org/wiki/Chinook