До конца ICFPC — 50 часов. Команда успела разбежаться по домам и слегка выспаться. Почти собрались обратно. Автор этих строк за ночь и утро обмотал синей изолентой запускалку и сохранялку игр «наших искусственных» интеллектов с алгоритмами на серверах организаторов. Так нашли и пофиксили NullReferenceExceptions в AI (тесты писать надо, но, как обычно, некогда). Одновременно нагрузили «на 898 %» Firebase, куда сохраняли результаты игр — но новые записи уходят десятки секунд:
Продолжаем писать AI, увеличивать количество игр в онлайне с другими ботами, фиксить баги и собирать обратно трещащую по швам инфраструктуру
А автор этих строк уходит спать! Напишите мне, как сделать интереснее для вас эту трансляцию — я @igorlukanin. Займусь этим после пробуждения :)
До окончания ICFPC — 39 часов. Похоже, мы довели инфраструктуру до совершенства и автоматизировали всё, что нужно. Почти вся команда переключились на совершенствование алгоритмов AI, которых у нас уже 9, и будет ещё больше. Сравниваем их работу в визуализаторе и считаем статистику, а потом смотрим её в блокнотах IPython и на самодельных дашбордах
Проблемы, которые были актуальны ещё несколько часов назад, ушли на второй план :)
Ночью организаторы опубликовали последнее дополнение к правилам.
Поэтому я в паре с Игорем (основным ведущим этого канала) взялись за поддержку новых правил прямо ночью, прямо невыспавшимися и уставшими, чтобы утром все могли подхватить эти наработки и развить.
В 6 утра мы закончили и даже докрутили пару наших стратегий на использование новых фич,
написали подробный отчет в командный чатик и пошли спать. Так вот, доброе утро, я только что проснулся! :-)
Было приятно узнать, что команда подхватила наши наработки и уже в 10 утра начали массово внедрять их в другие стратегии и править баги.
В итоге коммиты в наш репозиторий идут почти круглосуточно.
Тем временем 2 часа до окончания!
Поэтому я в паре с Игорем (основным ведущим этого канала) взялись за поддержку новых правил прямо ночью, прямо невыспавшимися и уставшими, чтобы утром все могли подхватить эти наработки и развить.
В 6 утра мы закончили и даже докрутили пару наших стратегий на использование новых фич,
написали подробный отчет в командный чатик и пошли спать. Так вот, доброе утро, я только что проснулся! :-)
Было приятно узнать, что команда подхватила наши наработки и уже в 10 утра начали массово внедрять их в другие стратегии и править баги.
В итоге коммиты в наш репозиторий идут почти круглосуточно.
Тем временем 2 часа до окончания!
Помогать команде я уже не буду — только помешаю, если попытаюсь, поэтому расскажу тут немного инсайтов про наше решение.
За час до конца это всё равно никому не поможет.
У нас примерно 14 работоспособных стратегий поведения. Типичный бот состоит из комбинации двух-трех стратегий. Комбинируются они в итоге так: если первая стратегия знает что делать — пусть делает, если не знает — спросим следующую.
У некоторых стратегий есть параметры настройки с несколькими разумными значаниями. Итого, у нас порядка 500 вариантов ботов, из которых должен остаться только один.
Последние пару часов ребята выбирают самого классного бота из этого многообразия. Учитывая, что выбирать правильную комбинацию стратегий можно ещё и ориентируясь на размер карты, количество игроков и другие характеристики, задача ой какая небанальная. Можно хоть неделю ей заниматься. Но у нас остался только час. Та-да-да-дааам!
За час до конца это всё равно никому не поможет.
У нас примерно 14 работоспособных стратегий поведения. Типичный бот состоит из комбинации двух-трех стратегий. Комбинируются они в итоге так: если первая стратегия знает что делать — пусть делает, если не знает — спросим следующую.
У некоторых стратегий есть параметры настройки с несколькими разумными значаниями. Итого, у нас порядка 500 вариантов ботов, из которых должен остаться только один.
Последние пару часов ребята выбирают самого классного бота из этого многообразия. Учитывая, что выбирать правильную комбинацию стратегий можно ещё и ориентируясь на размер карты, количество игроков и другие характеристики, задача ой какая небанальная. Можно хоть неделю ей заниматься. Но у нас остался только час. Та-да-да-дааам!
UberfullessnessAi.All — список всех разумных комбинаций стратегий после грубого отсева, размером 280 ботов :)
А ConnectClosestMinesAi — это алгоритм с именем, написанный ещё в начале контеста, дотачиваемый на протяжении оставшегося времени. Где-то внутри UberfullessnessAi.All есть и комбинация соответствующая ему, но так нагляднее.
А ConnectClosestMinesAi — это алгоритм с именем, написанный ещё в начале контеста, дотачиваемый на протяжении оставшегося времени. Где-то внутри UberfullessnessAi.All есть и комбинация соответствующая ему, но так нагляднее.
Мы тут немного отсыпались после окончания контеста. Результатов пока нет — организаторы обещают играть турниры между всеми полученными ботами и постепенно выкладывать результаты. Финальные — будут только в сентябре, на конференции ICFP.
Мы же готовим наш репозиторий к публикации. Пишем ридми, меняем все захардкоженные в коде пароли :) Скоро будет!
Мы же готовим наш репозиторий к публикации. Пишем ридми, меняем все захардкоженные в коде пароли :) Скоро будет!
Мы выложили на Гитхаб весь код, который написали на контесте: https://github.com/skbkontur/icfpc2017-kontur-ru
GitHub
GitHub - kontur-contests/icfpc2017-kontur-ru: kontur.ru team @ ICFPC 2017
kontur.ru team @ ICFPC 2017. Contribute to kontur-contests/icfpc2017-kontur-ru development by creating an account on GitHub.
Запушили на Гитхаб код из нашего внутреннего Гитлаба за минуту, а потом два дня писали README.md :)
Рассказали в нём, из каких логических частей состоит код в репозитории и какой был вклад каждого члена команды. Отдельно описали эволюцию нашего подхода к решению задачи и объяснили, как играет финальная стратегия.
Рассказали в нём, из каких логических частей состоит код в репозитории и какой был вклад каждого члена команды. Отдельно описали эволюцию нашего подхода к решению задачи и объяснили, как играет финальная стратегия.
Забавно распределились места по объёму кода в репозитории: лидируют 3 файла Jupiter Notebooks от наших датасаентистов, разбухшие от закодированных в Base64 красивых картинок. Но на самом деле большая часть кода написана на C#. Всего получилось 235 файлов, 13 тыс. строк и 450 КБ кода.