11 сентября 2010 в 01:51

Google AI Challenge — быстрый старт tutorial

Как вы можете знать, вчера начался Google AI Challenge. В этом топике я хочу вкратце рассказать, с чего начать, описать более-менее подробно правила игры и тонкости API, которые трудно или невозможно найти в официальной документации. Перед тем, как пожаловать под хабракат, настоятельно рекомендую вам, если вы того ещё не сделали, прочитать о том, что же, собственно, такое это Google AI Challenge. Сделать это можно, например, в недавнем хабратопике.


1. Вникаем в суть

1.1. Игровой процесс с точки зрения бота


Для начала поведаю о том, как устроено взаимодействие ботов и системы проверки(чекера). Организаторы турнира решили, что самый лучший способ это взаимодействие устроить — объявить каждого робота отдельным процессом, и общаться с ним с помощью стандартного ввода и вывода. Не будем рассуждать на тему того, хорошее это решение, или нет, а просто примем это как данность. Игра, в отличие от того, как может показаться, является пошаговой. На каждый ход боту на stdin подаётся описание текущего состояния игры. Оно включает в себя:
  1. Описание всех планет на карте; для каждой планеты известно следующее:
    • Уникальный ID планеты
    • Её декартовы координаты
    • ID владельца планеты (NB: если планета нейтральная, то ID равен нулю, если принадлежит игроку, то ID равен единице)
    • Количество кораблей на планете
    • Скорость прироста кораблей
  2. Описание всех флотов, находящихся в полёте:
    • ID владельца флота
    • Число кораблей в флоте
    • ID планеты, от которой летит флот
    • ID планеты, к которой летит флот
    • Сколько ещё ходов лететь флоту (NB: Число ходов, которое флот потратит на перемещение от планеты A к планете B, равно округлённому вверх евклидовому расстоянию между А и B)


В ответ на это бот пишет в stdout последовательность команд, а затем говорит, что окончил свой ход. Команда есть только одна: отправить X кораблей от планеты A к планете B. Обратите внимание, что если планета A вам не принадлежит, или планеты A или B не существует, или на планете A кораблей меньше, чем X, или X меньше нуля, то вас дисквалифицируют из матча.

1.2. Как считается рейтинг


Вообще говоря, рейтинг считаетя как-то хреново. По заверениям разработчиков, он считается по системе, схожей с той, что используют в профессиональных турнирах по шахматам. На деле всё выглядит примерно так: как только игрок загружает новую версию бота, его рейтинг обнуляется (а может быть и нет, этого я пока не до конца понял), по некоторому алгоритму начинаются сражения робота с другими участниками. Алгоритм запутанный и совершенно неочевидный. Например, после того, как я залил нового бота (который по моим тестам на 97 картах из ста порвал прошлого), мой рейтинг понизился. Мне кажется, что это связанно именно с глючностью или несовершенностью алгоритма выбора соперников: я почему-то постоянно сражаюсь с теми, кто рейтингом ниже меня, но не сражаюсь с теми, у кого он выше. Впрочем, рейтинг не особо важен, потому что окончательный результат от него не зависит (прошу прощения, не могу найти пруфлинк), да и времени ещё больше двух месяцев.

2. Приступаем к делу


2.1. Регистрация


Тут особо-то сказать нечего, кроме того, что нельзя иметь несколько аккаунтов и что изменять их тоже нельзя, даже пароль. Если вы хотите играть в команде, то нужно указать это в биографии сразу.

2.2. Осознаём starter package


Для удобства участников, организаторы сделали специальные starter packages для основных языков. Эти пакеты включают в себя чекер, смотрелку реплеев, несколько простейших ботов-примеров и шаблон для создания своего бота. Скачать стартовый набор для своего любимого из представленных языка можно тут. Я люблю java, и поэтому буду дальше рассказывать именно на примере этого языка. К радости тех, кто моих пристрастий не разделяет, для других языков всё отличается мало.

После того, как вы скачаете .zip-архив и распакуете его в угодное вам место, пред вами предстанет такая структура папок:

java_starter_package/
|-- example_bots/
|-- maps/
|-- tools/
|-- Fleet.java
|-- MyBot.java
|-- Planet.java
|-- PlanetWars.java


В папке example_bots, как вы можете догадаться, находятся простые боты-примеры вместе с исходными кодами, а в папке maps, как кто-то подсказывает, лежат карты. Папка tools уже интереснее (кстати, её содержимое одинаково для стартовых наборов на всех языках): там лежит два jar-файла, без исходников. Первый из них — это PlayGame.jar, который является чекером. Пользоваться им нужно так:
java -jar tools/PlayGame.jar maps/map1.txt 1000 1000 log.txt "java -jar my_bots/trunk/MyBot.jar" "java -jar  example_bots/ProspectorBot.jar"


На всякий случай поясню: первый аргумент — путь к карте, второй аргумент — максимальная длина хода в миллисекундах (да-да, ход ограничен по времени: если какой-то из ботов будет думать слишком долго, он автоматически проиграет), третий аргумент — максимальное число ходов. Далее в аргументах идёт имя файла для логов, команда, которую нужно выполнить, чтобы запустить первого бота, и команда для второго. В принципе, движок поддерживает и большее число игроков, можно указать их так же в командной строке. Однако в турнире все матчи проводятся один на один.

Второй файл в папке tools — это ShowGame.jar, который визуализирует матч, описание которого ему нужно подать в стандартный ввод. Это сделано специально чтобы можно было передать вывод чекера сразу в визуализатор:

java -jar tools/PlayGame.jar params | java -jar tools/ShowGame.jar


Далее остаются лежащие в корне файлы *.java. Назначения Fleet.java и Planet.java очевидно — они содержат классы, описывающие флот и планету соответственно. Класс PlanetWars уже более содержателен: он умеет парсить то, что чекер подаёт боту на stdin и представлять результат в более-менее удобном для пользователя виде. Интерфейс (который, правда, не обозначен явно) примерно такой:

public interface IPlanetWars {
	int NumPlanets();
	Planet GetPlanet(int planetID);
	
	int NumFleets();
	Fleet GetFleet(int fleetID);

	List<Planet> Planets();
	List<Fleet> Fleets();

	int Distance(int sourcePlanet, int destinationPlanet);

	void IssueOrder(int sourcePlanet, int destinationPlanet, int numShips);
	void FinishTurn();
}


Я сказал «примерно», потому что привёл лишь основную часть интерфейса, необходимую для понимания механизма взаимодействия; на самом деле доступно несколько больше методов, но они уже по большей части для удобства. Кстати, учитывая, как мало код соответствует Java Coding Conventions, велика вероятность, что он полу-автоматически транслировался из языка в язык, и потому не различатся между ними вовсе.

Все файлы, которые были рассмотрены ранее, не обязательно оставлять. Можете их смело менять(кстати, настоятельно рекомендую: написаны они с точки зрения удобства пользователя хиловато) или даже удалять. А вот файл MyBot.java удалять нельзя, и метод main в нём нужно тоже иметь, поскольку именно он будет вызван чекером. Вся логика в примере находится в методе DoTurn, который имеет на входе экземпляр класса PlanetWars.

Код в starter package более-менее прилично прокомментированн, так что вам не составит труда понять, как чем пользоваться, и написать своего первого простенького бота. Хочу только сказать, что не разрешено создавать потоки и писать в файл.

2.3. Отправляем решение


Чтобы отправить решение, нужно взять все(все!) исходные(!) файлы, которые нужны, чтобы ваш бот откомпилировался, упаковать их в zip-архив, и загрузить их по этой ссылке. Учтите, что размер архива не должен превышать двух мегабайт. Хотя вы, конечно, вряд ли напишите столько кода ;). Через какое-то время вам на почту придёт письмо, в котором Скрипт Компиляции поделится с вами результатом своей работы. Если всё пойдёт хорошо, то текст будет примерно такой:

This is just to let you know that your latest submissions to the Google AI Challenge has successfully compiled. Here is the output of the compile script, in case you're curious:

Found entry.zip. Attempting to unpack.
unzip -u entry.zip > /dev/null 2> /dev/null

Found MyBot.java. Compiling this entry as Java
javac Bot.java Fleet.java MyBot.java Planet.java PlanetWars.java SimpleBot.java
jar cfe MyBot.jar MyBot Bot.class PlanetWars.class Planet.class Fleet.class MyBot.class SimpleBot$1.class SimpleBot.class


Sincerely,
The Compile Script


Через какое-то время после этого в вашем личном кабинете появится запись о том, что вы отправили бота:



А ещё через какое-то время ваше детище начнёт доблестно сражаться с остальными ботами:



Каждое такое сражение можно просмотреть, нажав на ссылку «View Game» справа. Свой рейтинг можете посмотреть либо в разделе Current Rankings, либо у себя в профайле.

Хочу также добавить, что не стоит отправлять ботов сразу, гораздо целесообразние сначала потестировать его у себя на разных картах. Для этого местные умельцы (ваш покорный слуга в том числе) сбацали скриптик, который автоматически прогоняет бота по всем картам и всем ботам из примеров (и другим вашим ботам, если такие имеются) и выдаёт статистику по победам. Взять этот скриптик можно тут.

На этом всё. Буду рад вопросам, уточнениям и исправлениям.

Кровавых вам боёв и сладких снов! ©

UPD: Печально, но сайт соревнования лежит. Для страждущих выложил в этом комментарии ссылки на скрипты для тестирования ботов. Starter package для Java можно скачать по этой ссылке. Если кто-нибудь поделится ссылками на стартовые наборы для других языков, будет классно! ;)

UPD2: Подняли, но пока частично. Обещают всё исправить к концу выходных. Кстати, теперь контест стал полностью опенсорсным!
Глеб Смирнов @gvsmirnov
карма
103,5
рейтинг 0,0
Похожие публикации
Самое читаемое

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

  • 0
    Спасибо за статью — на выходных как раз собираюсь сесть за написание собственного бота.
    • 0
      А пожалуйста! Давайте, the more the merrier! :)
  • 0
    А, не принимая участия, по какой ссылке можно посмотреть бои? И можно ли вообще. Или для этого достаточно зарегистрироваться где-то?
    • 0
      Выбираете тут игрока, смотрите у него список игр, и тыкаете в какую-нибудь :)
      • 0
        Profile temporarily disabled. Sorry!
        --Daniel

        хехе.
  • 0
    java -jar tools/PlayGame.jar maps/map1.txt 1000 1000 log.txt «java -jar example_bots/RageBot.jar» «java -jar example_bots/RageBot.jar» | java -jar tools/ShowGame.jar
    WARNING: player 1 timed out.
    WARNING: player 2 timed out.
    Turn 1
    Draw!

    что я делаю не так? ._."
    • 0
      а вот есть убрать конвеер, то создаётся лог, но как этот лог визуализировать?
      • 0
        «cat log.txt | java -jar tools/ShowGame.jar»?
        • 0
          type log.txt | java -jar tools/ShowGame.jar
          Exception in thread «Thread-2» java.lang.ArrayIndexOutOfBoundsException: 1
          at ViewerPanel.run(ViewerPanel.java:85)
          at java.lang.Thread.run(Unknown Source)
          • 0
            Всё же, наверно, надо логить PlayGame с параметрами, а не визуализатор?
            • –3
              сам догадался?
    • 0
      Рекомендую как временное решение взять tools из старого старткита Java. Мне это помогло с такой же проблемой.
      • 0
        а выложи его пожалуйста куда-нибудь, а то ссылка то ли тормозит то ли битая
        • 0
          Вот. Эта версия у меня нормально работает.
          • 0
            это та же версия, что и у меня ._.
            • 0
              Тогда могу предложить совсем старую. Правда она тормозит, потому что там в цикле складываются строчки оператором плюс :)

              Может, у вас какая-нибудь старая версия java? Покажите
              java -version
              • 0
                И ещё попробуйте увеличить таймаут:

                java -jar tools/PlayGame.jar maps/map1.txt 1000 10000 log.txt "java -jar example_bots/RageBot.jar" "java -jar example_bots/RageBot.jar" | java -jar tools/ShowGame.jar
                • 0
                  пробовал. но задержка перед выдачей таймаута не увеличилась. а вот увеличение второго параметра её увеличивает пропорционально.
                • 0
                  надо с форума версии 1.2 использовать

                  хотя хз, сейчас могли уже и стартовые пакеты поправить
              • 0
                java -version
                java version «1.6.0_16»
                Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
                Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)
                • 0
                  Не очень новая. Вы попробуйте обновиться, это всегда* полезно :)
    • 0
    • 0
      Это баг (они не правильно обрабатывают локализованный разделитель целой и дробной части в числах). Временное решение (для юникс-подобных систем):

       export LC_ALL="en_US.UTF-8" 

      потом выполняем нужную команду.
  • 0
    Что-то они, по сравнению с флэш-версией, приведенной в предыдущем топике про контест, слишком быстро плодятся, и делятся не пополам… (
    • 0
      В оригинальной флешке тоже можно не только пополам делить. жмешь 1, отсылаться будут 10% кораблей, 0 — 100% )
      • 0
        + регулируется колесиком мышки. дискретность 5%
  • +2
    Предлагаю потом создать хабрасоревнование на этой платформе: собрать в одном топике ссылки на ботов созданных хабралюдьми и посмотреть, чай же AI будет «Быстрее, выше, сильнее!» ;)
  • +1
    Что ai-contest.com тормозит по страшному. Хотя вообще удивительно, что он на PHP написан, на google это не похоже.
    • 0
      а это и не google
    • +3
      Тормозит не то слово, а организатор клуб компьютерных наук университета Ватеролу. Гугл тока спонсор. По крайней мере в шапке сайта так написано…
    • 0
      Warning: mysql_connect() [function.mysql-connect]: Too many connections in /var/www/vhosts/ai-contest.com/www/mysql_login.php on line 17
      Array ( [type] => 2 [message] => mysql_connect() [function.mysql-connect]: Too many connections [file] => /var/www/vhosts/ai-contest.com/www/mysql_login.php [line] => 17 ) cannot connect: 1
  • +1
    Черт. Убил всю ночь на своего бота, а теперь из-за тормозов ничего не потестировать толком :(
  • 0
    Спасибо, буду участвовать.
  • 0
    ещё бы узнать сколько ставят они таймаут на ход, сейчас известно что количество ходов ограничивают 200, у кого больше кораблей тот и победил
    • 0
      количество ходов ограничивают 200

      Пруфлинк?
      • 0
        на странице «View Game», который просмотрщик игр, внизу написано
    • 0
      Вроде как те же 200 миллисекунд и есть.
      • +1
        1000 мс
  • 0
    Для этого местные умельцы (ваш покорный слуга в том числе) сбацали скриптик, который автоматически прогоняет бота по всем картам и всем ботам из примеров (и другим вашим ботам, если такие имеются) и выдаёт статистику по победам.

    Вы не могли бы выложить скрипт где-то в другом месте? Сайт лежит и неизвесно когда его поднимут.
    • +1
      Да, пожалуйста:

      runBatch.sh — скрипт запуска одного бота против кучи других на многих картах
      runBatchPvP.sh — скрипт запуска одного бота против другого на многих картах(показывает результат на каждой карте и указывает таймауты)

      Пользователям Windows рекомендую поставить cygwin и не забыть, что переводы строк должны быть unix-style, а не windows-style ;)
  • –2
    Какое отношение этот проект Гугла имеет к искусственному интеллекту? Это соревнование на лучший алгоритм, как по мне.
    • +3
      Если вы хотите идти в бой с тупым детерменированным алгоритмом, то это ваше решение :)
      Искуственный интеллект тут при том, что можно использовать более другие средства. Например, нейронные сети, нечёткую логику, Q-Learning и прочее.
      • –2
        Согласен, что к интеллекту этот проект не имеют никакого отношения.
        Если считать за эталон интеллект человека, то в эту игру он будет проигрывать далеко не сложным и явно не интеллектуальным алгоритмам.
        • +2
          Человеческий интеллект можно считать эталоном далеко не для всех задач.
          • –1
            Какой еще интеллект, который можно взять за эталон, вы знаете? Интеллект крысы?
  • 0
    Задача на искусственный интеллект и нет ни одного Лиспа? :)
    • 0
      Там на форуме активно хотят и обсуждают clojure
  • 0
    Собираю у себя на сайте полезные ссылки по теме, посмотреть можно тут. Если есть ещё что-нибудь, что не вошло в список — напишите мне личное сообщение тут, добавлю. Заранее спасибо!
  • 0
    Скачал, запустил (ОС Windows XP). Столкнулся с проблемой, описанной немного выше в комментариях:
    java -jar tools/PlayGame.jar maps/map1.txt 1000 1000 log.txt «java -jar example_bots/RageBot.jar» «java -jar example_bots/RageBot.jar» | java -jar tools/ShowGame.jar
    WARNING: player 1 timed out.
    WARNING: player 2 timed out.
    Turn 1
    Draw!
    


    Советовали взять предыдущую версию starter_package. Посмотрел, чем они отличаются:

    Старая версия дает боту такие данные:
    P 11.6135908004 11.6587374197 0 119 0
    Новая такие:
    P 11,613591 11,658737 0 119 0

    Вот из-за запятой в координатах, программа и рушится почему-то (PlanetWars.java: 255):
    double x = Double.parseDouble(tokens[1]);
    double y = Double.parseDouble(tokens[2]);
    

    Заменил на
    double x = Double.parseDouble(tokens[1].replace(',', '.'));
    double y = Double.parseDouble(tokens[2].replace(',', '.'));
    


    Перекомпилировал ботов — все заработало. Грешу на настройки локали какие-нибудь. Не уверен, что такой хак заработает на тестовом сервере.
    • 0
      Может быть, кто-то расскажет, как надо было _правильно_ обрабатывать эту ситуацию? Сам не силен в Java
    • +1
      А дело-то в локалях :)
    • +2
      как тут правильно высказались, проблема в локалях.
      вот правильное решение, нужно указать правильную локаль:
      java -Duser.language=en -jar tools/PlayGame.jar  maps/map1.txt 1000 1000 log.txt "java -jar example_bots/RageBot.jar" "java -jar example_bots/RageBot.jar" | java -jar tools/ShowGame.jar
      

  • 0
    Есть ли там возможность сохранять промежуточные данные между матчами? (для создания самообучаемых алгоритмов или анализа эффективности тех или иных алгоритмов)
    • +1
      Нельзя писать в файл, то есть каждый раз бот запускается с чистой памятью. Иначе было бы менее интересно, да и результат двух боёв тех же самых ботов был бы разным, за счёт наличия памяти о предыдущем бое.
      • +1
        Спасибо за ответ.
        То есть, обучение между матчами принципиально реализовать нельзя?

        А есть ли там возможность получать реплеи в удобоваримом для дальнейшей программной обработки формате, для анализа действий оппонентов?
        • +1
          Нельзя реализовать автономное обучение, с другой стороны, вы можете сохранить некую базу в исходном коде — главное, чтобы ход обрабатывался меньше секунды.
          На счёт реплеев — нужно ждать ответа топикстартера, я ещё не закончил своего бота.
        • +2
          Обычный реплей:
          ai-contest.com/visualizer.php?game_id=4435964
          Данные для него:
          ai-contest.com/game_info.php?game_id=4435964
  • 0
    у кого было подобное, как бороться?

    C:\javaPW>java -jar tools/PlayGame.jar maps/map7.txt 1000 1000 log.txt «java -ja
    r example_bots/RandomBot.jar» «java — jar example_bots/DualBot.jar» | java -jar
    tools/ShowGame.jar

    WARNING: player 2 crashed.
    Exception in thread «main» java.lang.NullPointerException
    at Engine.main(Engine.java:139)
    Exception in thread «Thread-2» java.lang.ArrayIndexOutOfBoundsException: 1
    at ViewerPanel.run(ViewerPanel.java:85)
    at java.lang.Thread.run(Unknown Source)
    • +1
      Пробельчик уберите в «java — jar example_bots/DualBot.jar» после дефиса
      • 0
        черт.) как все просто. спасибо за быстрый ответ.
  • 0
    Не хотите создать команду хабрахабра для участия в этом конкурсе? Объединение в команды не запрещено, но 1 робот от команды может быть вроде как.
    • +2
      мы подерёмся обсуждая детали алгоритмов и не пошлём ни одного х)
    • 0
      а как это сделать?

      было бы любопытно.

  • +1
    Забавная деталька: на форуме уже создали proxy bot на LISP, как я понимаю — он посылает текущую ситуацию боту на стороне, тот даёт ответ, и прокси бот передаёт ответ серверу. Помимо того, что пишет автор, это, теоретически, даёт возможность использовать _любые_ вычислительные мощности, то есть самый разухабистый код будет обрабатывать ход менее секунды. Ну и возможность сохранять что угодно в файл, ибо невозможно понять, что там выполняет бот на чужой машине.
    Где-то поблизости писали про недавно запущенный в России суперкомпьютер, после запуска которого для него не смогли найти задачу. Пара бутылок чего-нибудь покрепче, и — вперёд, нейронные сети, вперёд.
    Если совсем серьёзно — то я бы не стал использовать, и даже не потому, что не знаю LISP'а, не хочется быть дисквалифицированным.
  • +1
    Ещё немного информации: тут я собрал все starter packages, доступные на данный момент, и, до кучи, доработанные библиотеки для разных языков. И — очевидная, но важная информация: языки имеют разную производительность выполнения одинакового кода, нр никаких поблажек медленным языкам нет.
    • 0
      а яваскрипт там есть в планах? .-.
      • 0
        • 0
          клёво *о*

          а тем временем, я написал бота на питоне, который рвёт стандартных ботов как котят, но на соревнованиях ему назначают проигрышь без единого хода ._. вот и думай из-за чего т-т
          никто не хочет сравнить его со своим?
          • +1
            Крэшится на старте. Вы, небось, написали на питоне 2.7. А там 2.5: code.google.com/p/ai-contest/issues/detail?id=65
            • 0
              блиин т-т сколько ж гемора-то…

              писал я действительно на 2.7 но никаких особых фич не использовал ._.
              вот исходник: pastebin.com/cD7LUwnc
          • 0
            Может, вылетает по таймауту. Либо, как написали выше, версия питона.
  • 0
    посмотрел рейтинг — питонисты держат первые места, интересно…
  • 0
    Очень хочется поучаствовать, жаль, что не программист.
  • +4
    Кстати о рейтинге. В разделе Current Rankings можно увидеть, что он считается по системе подсчета рейтинга ELO, которая неплохо обоснована математически.
    Краткая суть ее такова — предполагается, что у каждму игроку соответствует число («сила» ирока) такое, что отношение его силы и силы противника есть матожиданием вероятности победы игрока. Распределение вероятности нормальное. После каждой партии рейтинги изменяются так, чтобы с увеличением количества партий рейтинг игрока стремился к его силе.
  • 0
    У меня пока 49 место, но есть еще идеи в запасе =)
    • 0
      хоть и выиграл меня, но за мной будешь, я 48
      • 0
        Почти дописал новую версию, вечерком залью, посмотрим что изменится =)
      • 0
        Посмотрел реплей. Выиграл с натяжкой, но новый бот должен был сделать это быстрее =)
    • 0
      давай сразимся %-) narod.ru/disk/24853027000/tenshi1.zip.html
    • +1
      я выше :)
      ai-contest.com/profile.php?user_id=7672

      лучшее достижение — 7е место в 5 утра по Москве

      Но это все временно, т.к. примерно 300 (примерная оценка исходя из динамики роста участников и уменьшения количества ботов за последние сутки — когда не работал upload) ботов не ждут своей очереди на загрузку
      • 0
        на форуме орги отписались, что проблема решена, и около 800 новых ботов вот-вот вольются в рейтинг :)
  • +1
    Вы перепутали местами максимальное количество ходов и ограничение по времени

    java -jar tools/PlayGame.jar
    ERROR: wrong number of command-line arguments.
    USAGE: engine map_file_name max_turn_time max_num_turns log_filename player_one player_two [more_players]
    • 0
      И правда. Спасибо, пофиксил.
  • 0
    вторая версия бота сейчас стабильно в первой сотне ( лучшая позиция — 7е место ),

    еще две более крутые версии уже сутки не могут засабмититься :(

    судя по положению бота xtile1 ( у которого интеллекта нет, есть лишь захардкоденные эвристики, да и те с ошибками ) интеллектом в соревновании пока не пахнет :)

    удачи всем участникам!
    • +1
      Уже вторые сутки держусь в первой двадцатке. Сегодня пару часов был на первом месте. Если тебе нужны хорошие соперники, то посмотри эту тему TCP Server.

      Тебе также удачи!
      • 0
        Shurf? )
        • 0
          Tracer :)

          Старая (по факту еще с воскресенья) версия бота довольно неплохо держится в топе, но если сравнивать с тем, что тусуется на TCP Server — она уже морально устарела. Думаю скоро выкачу новую.
    • 0
      а есть какое-то доказательство, что в данной игре нужен интеллект? пока у меня складывается впечатление, что тут все сводится к выработке идеального алгоритма.
      пока что реплеи на сервака это подтверждают.
      • +1
        <irony>А есть какое-то доказательство, что в данной жизни человеку нужен интеллект? Пока у меня складывается впечатление, что тут все сводится к выработке идеального алгоритма. Пока что новости о госраспилах это подтверждают.</irony>
        • 0
          irony aside, как-то не очень устраивать AI challenge, а в итоге получить битву необучаемых алгоритмов
          • +1
            Ну я могу про своего бота (в первой двадцатке) сказать, что каждая новая версия моего бота самообучалась на предыдущей версии моего бота. Так что с этой точки зрения элементы AI есть.
            • 0
              написали бы статью про то, как писать таких ботов, которые обучаются на самих же себе
              я вот например, даже не имею представлению как это происходит, а читать что либо абстрактное не хочется, а сразу хочется практики и примеров
              если есть желание, разумеется
              • +1
                Ну я думаю, что когда само соревнование кончится, я наверное чего-нибудь напишу — сейчас это делать не стоит, а то конкуренты не дремлют :)
                • 0
                  когда конкурс закончится, закончится и мой запал, и если вы напишите статью, я уже буду читать её с меньшим интересом, и скорее всего без применения на практике

                  я предполагаю, что те кто в топе, и так знают об этой теме и умеют её применять, и не факт что слабые игроки после прочтения вашей статьи за время оставшееся до конца конкурса осилять все тонкости данной темы, но зато смогут научится чему-то новому с применением на практике

                  не прошу вас раскрывать все хитрости, или выкладывать своего бота, а написать вводную статью на данную тему с небольшими примерами, чтобы было ясно куда копать дальше, для знающих будет не интересно, а для незнающих — познавательно
                  • 0
                    до конца конкурса еще 2.5 месяца, а там реально каждый день-два лидеры меняются.

                    в стартовых примерах есть жизнеспособные боты и есть примеры их ковыряния.

                    можно из пальца и статью высосать, на деле же нужно сделать всего несколько вещей

                    — стартовая экспансия
                    — перехваты
                    — система помощи своим ( т.е защита ), оценка степени угрозы
                    — оценочная функция для нападения и критерии нападения.

                    это для простейшего статичного бота, который даже между ходами ничего не помнит — но этого хватит, чтобы на время забраться в топ-50.

                    • 0
                      это у меня все есть, человек писал о «самообучении» на предыдущей версии самого же себя
                      • 0
                        разве что обучение заключается в подборе более оптимальных коэф. в формулах )
          • 0
            Окей. Тогда приведите мне пожалуста пример пример реального AI, который бы не был в конечом счете «выработкой идеального алгоритма» решения какой-то задачи.
  • 0
    Узнал о контесте только позавчера. Пока только вошел в top100 (был в пятидесятке, то оттуда быстро прогнали). Всего участников пока две тысячи. Глядя на проигранные бои появляется много идей дальнейшего улучшения алгоритма. А вообще — забавно, да.

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