Компания
1 140,21
рейтинг
8 сентября 2014 в 16:41

Разработка → Начался третий ежегодный чемпионат Russian AI Cup



Доброго дня и приятного понедельника всем! Сегодня начало не только рабочей недели, но и чемпионата по программированию искусственного интеллекта Russian AI Cup, организатором которого является Mail.Ru Group. Он проходит ежегодно, начиная с 2012 года. В этот раз перед участниками поставлена задача по написанию алгоритма для команды хоккеистов. Принять участие могут все желающие, любых возрастов и квалификаций. Главное — иметь базовые навыки программирования. Список возможных языков программирования ограничен, вы можете выбрать один из следующих вариантов: C++, Java, C#, Python, Ruby или Pascal. Кстати, в прошлом году предпочтения участников распределились таким образом: 36% выбрали C++, 25% — Java, 21% — C#.

Чемпионат состоит из четырёх этапов: песочницы, двух отборочных раундов и финала. По сути, песочница является аналогом квалификационных игр. В ней авторы могут на протяжении всего чемпионата обкатывать различные идеи и стратегии. По результатам игр в песочнице отберут 900 участников для первого раунда. В нём меряются силами команды из двух «хоккеистов». По окончании первого раунда 300 лучших участников перейдут во второй отборочный раунд. Здесь в каждой «хоккейной команде» будет участвовать уже по три виртуальных хоккеиста. И, наконец, 50 лучших стратегий по результатам второго раунда и 10 по рейтингу песочницы смогут сразиться в финале чемпионата. Цель каждой стратегии — забить как можно больше голов, как и в обычном хоккее. Для этого хоккеисты могут перемещаться по игровому полю и выполнять различные действия: подбирать шайбу, отдавать пас, бить по воротам и так далее. Все участники имеют возможность создавать игры, чтобы изучать сильнейших противников и совершенствовать свою тактику. Вот пример простой стратегии на Java — хоккеист сперва едет за шайбой, а, завладев ею, поворачивается в сторону ворот противника и бьёт:

import model.*;
import static java.lang.StrictMath.PI;
import static java.lang.StrictMath.abs;

public final class MyStrategy implements Strategy {
    private static final double STRIKE_ANGLE = 1.0D * PI / 180.0D;
    @Override
    public void move(Hockeyist self, World world, Game game, Move move) {
        if (world.getPuck().getOwnerHockeyistId() == self.getId()) {
            Player opponentPlayer= world.getOpponentPlayer();
            double netX = 0.5D * (opponentPlayer.getNetBack() + opponentPlayer.getNetFront());
            double netY = 0.5D * (opponentPlayer.getNetBottom() + opponentPlayer.getNetTop());
            double angleToNet = self.getAngleTo(netX, netY);
            move.setTurn(angleToNet);
            if (abs(angleToNet) < STRIKE_ANGLE) {
                move.setAction(ActionType.STRIKE);
            }
        } else {
            move.setSpeedUp(1.0D);
            move.setTurn(self.getAngleTo(world.getPuck()));
            move.setAction(ActionType.TAKE_PUCK);
        }
    }
}


«Мы заинтересованы в развитии IT-отрасли в России и с этой целью регулярно проводим IT-чемпионаты, которые собирают огромное количество участников, интересующихся информационными технологиями. Russian AI Cup даёт всем желающим возможность проверить свои силы в создании искусственного интеллекта и привести своего персонажа или свою команду к победе, получив ценные призы и еще более ценный опыт», — прокомментировал Дмитрий Волошин, руководитель департамента образования Mail.Ru Group.

Награды получат восемь сильнейших программистов. За 1 место — Mac Pro, за 2 место — MacBook Pro, за 3 место — MacBook Air, за 4, 5, 6, 7 и 8 места – iPad mini. Будут отмечены и победители из песочницы, для них приготовлены iPod nano.

Расписание этапов чемпионата:

Песочница — с 8 сентября по 19 октября. 15 сентября рейтинг будет обнулён.
Раунд 1: с 27 по 28 сентября.
Раунд 2: с 4 по 5 октября.
Финал: с 11 по 12 октября.

Ждём вас!
Автор: @TeamMRG

Комментарии (30)

  • +2
    А уравнения физики игрового мира не планируете добавлять в правила? Все-равно большинству придется их доставать как-то самостоятельно, либо из LocalRunner, либо измерениями. Это сэкономило бы кучу потраченного не на разработку стратегии времени.
    • +1
      Скорее всего не получится. Нами используется проект code.google.com/p/phys2d/, который в некотором роде базируется на box2d и распространяется по New BSD License. Там весь код усеян хитрыми формулами, которые вытащить оттуда никак не получится. Кроме того, там есть определенные баги и/или недостатки физики, которые мы закрывали внешними заплатками. В стиле «если происходит такое-то явление, то давайте уменьшим на 30% такое вот перемещение». Такие заплатки не дают возможности просто сослаться на код phys2d. Вероятно, можно просто сослаться на phys2d, но это не поможет участникам — код сложен, запутан, перенести какие-то формулы в свою стратегию крайне сложно. Возможно это даст преимущество Java-участникам, они смогут просто накопировать этот код в стратегию.
  • 0
    А в каких браузерах просмотр игр поддерживается? Safari 7.0.3 жму «Смотреть» — ничего не происходит. После этого даже курсор уже не меняется при наведении на кнопку
    • +1
      С браузером Safari это известная проблема, решим её в ближайшее время.
  • 0
    Я в прошлом году жаловался, что не люблю войнушки. Техподдержка спросила, что бы я предложил. Я предложил хоккей. Видимо, прислушались :) Что ж, грех теперь не поучаствовать.
  • +3
    Python опять без numpy?
    • +1
      Да, вообще полезных библиотек много. Разрешив использовать numpy, тут же придется разрешать scicy, а потом пользователи других языков будут просить каждый свою библиотеку — чем они хуже? В итоге получится много проблем с их настройкой и поддержкой. В настоящее время мы используем формальный критерий — библиотека есть в стандартной поставке языка, мы ее поддерживаем.
      • 0
        По такой логике можно было и языки другие не добавлять, оставить одну джаву и все. А то, разрешив питон, тут же придется и кобол еще разрешить.

        Питон без нумпая становится просто тыквой уже ко второму раунду. Невозможно со сложной стратегией уложиться в лимиты по времени. Лучше тогда уберите питон совсем, чтобы народ не смущать.
        • 0
          Ну вот идет финал и на первом-втором месте уверенно держится alberist, у которого стратегия (тадам!) на Питоне (http://russianaicup.ru/profile/alberist/strategies). Ну вот к чему был этот необоснованный скепсис?
          • 0
            Ну значит в этот раз можно было обойтись без алгоритмов с высокой вычислительной сложностью. В прошлые разы так не было. Что я еще могу сказать? )
    • 0
      Только хардкор. Хотя мне в прошлый раз numpy особо не понадобился.
      Тут больше логики чем чего то ещё. :)
      • +1
        И какое было место в итоге?
        • 0
          Прям в самое больное… поднимался до 240 но закончил где то 500.
          Я поздно начал писать и наступил на все возможные грабли, но в итоге я доволен, так как повысил свой скил.
          Даже была идея написать статью: «Как не надо писать для чемпионата...».
          А вообще в прошлый раз разонравилось наличие брудфорсеров, теперь вроде с этим более жёстко.
          • 0
            Подавляющее большинство алгоритмов AI основаны на брутфорсе так или иначе. Чистые эвристики типа «если это, значит делать так» редко хорошо играют
            • 0
              Я успел внедрить где то 40 эвристик, не самых простых но это был не брутфорс.

              Увы вы правы. Но мне не интересно писать «брутфорсные» алгоритмы, мне хочется написать подобие меня. Наверное глупо, но так лично мне куда интереснее.
              • 0
                Брутфорс тоже брутфорсу рознь. Многие алгоритмы, основанные на брутфорсе, тоже имеют внутри себя очень много domain-specific (специфичных для игры) эвристик, позволяющих раньше узнавать более похожие на правильные ходы или отбрасывать точно плохие, для того, чтобы сделать брутфорс на бОльшую глубину/ширину. Вот это, по-моему, интересно.
  • +1
    Ruby забыли. На нём тоже можно.
    • 0
      Спасибо, что заметили — забыли не упомянуть об этом. В этом году Ruby поддерживается
      • 0
        Такое ощущение, что GDK для Ruby сделали просто «чтобы было», например не согласованы геттеры, где-то просто .x, где-то get_x и т.д.

        Более того, я так понимаю, что ruby-код гоняется под JRuby? Почему?
  • 0
    Может тут кто знает: как такое возможно, что стратегия работает на Local Runner, а при отправке вылазит ошибка верификации:
    Ваша стратегия «упала» в коротком проверочном бою 2x2.
    Процесс стратегии непредвиденно завершился на тике 201.
    Вывод runner'а в stdout:
    Program successfully terminated
    exit code: 239
    time consumed: 0.03 sec
    time passed: 0.69 sec
    peak memory: 2236416 bytes
    Вывод стратегии в stdout:
    Exception occured: type=EAccessViolation, message=«Access violation».

    Причём всегда время на 201 тике. В чём может быть проблема?
    Вообще, было бы неплохо, если бы мы имели утилиту, с помощью которой они тестируют стратегии (типа Local Runner). И им работы меньше, и нам легче разобраться. А Repeater у меня не получилось запустить :(
    • 0
      Короткие проверочные бои длятся 200 тиков, так что проблема где-то в самом конце.
      • 0
        Интересно, что тут тогда делает 201й тик? И нет формы обратной связи — как сообщить админам о баге?
        • 0
          В комментариях к чему-нибудь на сайте.
        • 0
          Для этого есть официальный форум http://russianaicup.ru/forum/index.php?board=4.0
          • 0
            Регистрация в данный момент недоступна
            • +1
              На форуме используется тот же аккаунт, что и на основном сайте (в чемпионате). Соответственно форум доступен только участником.
              Зарегистрируйтесь на russianaicup.ru и сможете писать в форум.
              • 0
                Что-то не так.
                image
                • 0
                  Ничего кроме «странно» сказать не могу. Обращайтесь к разработчикам. В прошлом году я успешно писал письма (мне отвечали) на почту support гав russianaicup.ru.
                  • 0
                    обратился, исправили.
    • 0
      Проблема решена: наверное, при тестировании, проверялась возможность управления 3+ игроками, а не только тремя, как в песочнице и первом раунде.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка