Comments 20
Скажите, а вы не в курсе — кто-нибудь пытался использовать самообучающиеся модели, такие как нейросети и генетический алгоритм? Я думаю, что результат был бы довольно интересным, учитывая количество битв.
Победитель — Mr.Smile — использовал генетический алгоритм для подбора констант. Об этом можно почитать в его посте. Еще в обсуждениях на сайте несколько человек упоминали, что использовали нейросети и/или генетические алгоритмы. Но особого успеха стратегии этих людей вроде не достигали. Вообще, хорошо бы увидеть истории еще нескольких топовых участников; вполне возможно, что они тоже что-то интересное использовали.
>Победитель — Mr.Smile — использовал генетический алгоритм для подбора констант.
Спасибо, именно то, о чем я и хотел услышать.
Спасибо, именно то, о чем я и хотел услышать.
У меня в начале конкурса тоже были идеи о чем-то самообучающемся. Но для воплощения этих идей в жизнь нужно уметь локально проводить огромное количество боев. Организаторами инструментов для этого предоставлено не было. Чтобы самостоятельно сделать такое, потребовалось бы декомпилировать и модифицировать Local Runner — программу для запуска боев локально. По умолчанию она не поддавалась практически никакой настройке и позволяла запускать лишь один экземпляр стратегии игрока против пары простых дефолтных стратегий. Я в реверс-инжиниринге обфусцированного Java-кода не силен, поэтому идею забросил. Оказывается, несколько человек все же проделали всю нужную для этого работу, и выложили результаты для всеобщего пользования. Но я об этом узнал слишком поздно и никакого самообучения не вышло — пришлось обучать руками.
Я планировал использовать в паре мест и код уже был почти готов, но даже тестовые версии быстро уперлись в ограничение по размеру кода (в документации его не было) — пришлось все выкинуть.
Спасибо огромное! Вы гораздо ближе к народу, чем победитель
Все что до главы «раунд 2» — мысли и действия почти один в один :)
Все что до главы «раунд 2» — мысли и действия почти один в один :)
Спасибо за интересный рассказ. Ну а сам код стратегии вы покажете? =)
Присоединяюсь, хотелось бы заценить код.
Спасибо, читаю, очень интересно.
Яйца курицу, конечно, не учат, но просто любопытно: почему вы не используете linq?
Например, у вас есть метод, вычисляющий количество живих танков противника:
static protected int AliveEnemyCnt()
{
int r = 0;
foreach (Tank tank in world.Tanks)
if (!tank.IsTeammate && !IsDead(tank))
r++;
return r;
}
А вот однострочный эквивалент с использованием linq:
return world.Tanks.Count(tank => !tank.IsTeammate && !IsDead(tank));
Яйца курицу, конечно, не учат, но просто любопытно: почему вы не используете linq?
Например, у вас есть метод, вычисляющий количество живих танков противника:
static protected int AliveEnemyCnt()
{
int r = 0;
foreach (Tank tank in world.Tanks)
if (!tank.IsTeammate && !IsDead(tank))
r++;
return r;
}
А вот однострочный эквивалент с использованием linq:
return world.Tanks.Count(tank => !tank.IsTeammate && !IsDead(tank));
Я попросту очень мало работал с C#, и пишу на нем так же, как всю жизнь писал на C++. Уже в конце разработки я поставил ReSharper и заметил, что он предлагает мне подобным образом переписать многие куски кода. Я попробовал сделать это, но код в такой форме показался мне каким-то неродным, и я забил. В будущем постараюсь использовать LINQ почаще — видимо это модно)
Странно, что организаторы конкурса добавили возможность узнать имя соперника. Вообще, что от этого конкурса, что от последнего на aichallenge.org, остался осадок от того, что у многих ботов в топе AI как такового и не было.
А есть ли актуальные на данный момент конкурсы аналогичной направлености? Потому что сабжевый я фееречески проспал, особенно обидно что весь ноябрь провел в отпуске.
Про пушку — я делал несколько иначе — если пушке не хватало времени развернуться к врагу до конца перезарядки — помогал колесами. При этом при выполнении маневра уклонения «помогал колесами» отключалось :)
К сожалению, со свободным временем была засада, так что во второй раунд не вышел (и бросил после этого). Бот так и болтается в районе ~ 350 места
К сожалению, со свободным временем была засада, так что во второй раунд не вышел (и бросил после этого). Бот так и болтается в районе ~ 350 места
Если скорости поворота пушки недостаточно для поворота к цели за оставшееся время перезаряда, повернемся к цели всем корпусом.
Разве не то же самое?
Разве не то же самое?
как-то прочитал и запомнил иначе )
отвлекли в процессе чтения — вспомнил сейчас, обрадовался что хоть кто-то из топов упомянул о таком поведении в рассказе о.
Алзо, понравилось что высокий результат был получен без страшных генетических алгоритмов и разбиения поля на безумные сетки %)
Ну и повеселил чит «если это мегабайт, то ОПАСНОСТЬ!» %)
отвлекли в процессе чтения — вспомнил сейчас, обрадовался что хоть кто-то из топов упомянул о таком поведении в рассказе о.
Алзо, понравилось что высокий результат был получен без страшных генетических алгоритмов и разбиения поля на безумные сетки %)
Ну и повеселил чит «если это мегабайт, то ОПАСНОСТЬ!» %)
Sign up to leave a comment.
Путь к серебряной медали на Russian AI Cup 2012