Pull to refresh

Comments 47

Самообучение не нужно, т.к. это закрытая система, в которой не появляются новые факторы
Простите, но Вы неправы. Самообучение может быть полезно как минимум в контексте адаптации к алгоритму оппонента.
Но есть ограничение времени хода и не думаю, что быстро удастся обнаружить стратегию противника. К тому же я написал, что в любом случае должна присутствовать подстройка под врага.
Извините, ответил ниже.
С вами на одной карте могут играть до 9 противников. Под каждого будет трудновато подстроиться.
Но есть ограничение времени хода и не думаю, что быстро удастся обнаружить стратегию противника
Никто и не говорит, что вы за один ход должны определить алгоритм врага.
Может тоже поучаствуете в конкурсе? Посмотрим, у кого муравьи будут круче.
Может тоже поучаствуете в конкурсе?
Я бы с удовольствием поучаствовал, если было бы время.
У всех есть девушки, хомячки, дети и работа)) А ещё много кто спорить может, непробиваемый «И че?»… эх.
Ну вот, написал… что самообучение в данном контексте не выгодно… Прочитайте, перед тем как минусовать хотя бы.
Вы меня, конечно, извините, но говорить что C++ многословен и считать это аргументом в пользу Java как — то не логично. Можно было просто написать что выбрали Java из личных предпочтений. А так спасибо что подогреваете интерес к конкурсу. Сам задумался об участии после прочтения статьи от ideas4ru
Я сам довольно часто пишу на C++, намного больше, чем на Java. И первый стартовый пакет скачал для C++, но почему-то передумал. Точно не могу сказать почему…
Ну для данной задачи С++ точно не многословен, тем более в сравнении с явой.
Это вторая статья с разбором стартовых пакетов для этого соревнования. Не очень ясно только, зачем это нужно: человек, который не может самостоятельно разобраться с готовым пакетом для создания своего бота, вряд ли напишет нормального бота, а вот сервера загрузит. Если посмотреть на таблицу рейтинга, можно заметить, что значительная часть ботов — v1, т.е. загружались 1 раз, а сейчас брошены. Все боты рубятся по очереди, и в данный момент между играми бот ждет около 200 минут.

Автора можно похвалить за популяризацию соревнования, но лучше бы вы, автор, написали про алгоритмы применительно к написанию такого бота, а не про кривую реализацию стартового пакета.

Например, ваш способ нахождения расстояния до еды совершенно бесполезен в лабиринте, т.е. почти всегда на официальных картах. Смотрите в сторону алгоритмов поиска кратчайшего пути в графах.

Или, скажем, вы упомянули, что муравьев можно распределять по ролям — это интересно. Если посмотреть на игру топовых ботов, можно заметить, что в них реализованы разные тактики для каждой роли. Минимально необходимый набор: разведчик, солдат, собиратель. Есть небольшая проблема — информацию о конкретном муравье бесполезно держать между раундами, т.е. на каждом раунде придется распределять роли, — такова особенность реализации игрового протокола, но эту проблему можно обойти.

Если вы реализуете стратегии, поиск пути для разных случаев и т.д., вы, скорее всего, упретесь в максимальное время, отведенное на раздачу приказов. Придется оптимизировать/менять алгоритмы — это ещё один пункт для подобной статьи, на мой взгляд.

Конечно же, интересно было бы почитать про стратегии. Очевидно, можно выделить несколько типов, которые стоит реализовать при написании бота:
  • Защита своего муравейника.
  • Атака вражеского муравейника.
  • Собирательство.
  • Атака врагов.

Например, при атаке вражеских муравьев выгодно собираться в группы, — таким образом можно избежать потерь среди своих и нанести серьезный урон врагу (при встрече 1vs1 оба муравья умирают, при 2vs1 погибает вражеский муравей, свои 2 остаются в живых).

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

Короче, есть много интересных тем, а вы пишете про ерунду. :)

А вы находитесь на начальной стадии рассуждений. При написании стратегий можно обнаружить новые группы и убрать ненужные. Я расскажу о интересных темах, но без основы меня мало кто поймет… поэтому я допишу своего бота, потестирую его в боевом режиме и уже тогда расскажу. А смысл сейчас потенциальным врагам рассказывать возможно выигрышные стратегии?
Стратении ничего не решают, важна реализация.
Например тот же волновой алгоритм для поиска маршрутов для муравьёв вполне очевиден, но при уже 1000 муравьёв в реализации в лоб начинает кончаться время. И это только одина из маленьких частей.

> А смысл сейчас потенциальным врагам рассказывать возможно выигрышные стратегии?
Может быть чтобы потенциальные враги оценили эти стратегии, указали недостатки, развили идеи? Лично мне кажется, что до момента пока Вы не окажитесь в top 10 скрывать вообще ничего не стоит.
Я не использую алгоритм поиска. Если нужно обойти препятствие, то дешевле дать муравью другое задание и забыть о преграде.
> Может быть чтобы потенциальные враги оценили эти стратегии, указали недостатки, развили идеи?
Я несколько раз повторил, что расскажу об стратегиях и своих мыслях когда проверю бота в реальной обстановке…
> Стратении ничего не решают, важна реализация.

Это спорное утверждение. Важна и стратегия и реализация, в случае примитивной стратегии, отличная реализация вам не поможет, и наоборот.
Предполагается что нет смысла рассказывать о плохой стратегии.
в прошлом контесте какой-то умник выложил код бота из топ-50, в итоге набежали хомячки с его полными и частичными клонами и сильно увеличили энтропию в первых трех сотнях
Интересные темы надо реализовывать, а не трепаться по этому поводу :)
Я не спец в игровых ботах-блуждателях. Хотя, конечно, поставил себе базовый пакет и чуть-чуть поэксперементировал. Но вникание в тему требует чрезмерных на данных момент временных ресурсов.

PS Хотя, наверное не удержусь :)
чем больше массовка, чем больше упоминаний (любых) контеста — тем лучше.

во время основного конкурса серверов будет больше, а с зомби бороться — это задача организаторов (снижать частоту боев для тех, кто давно не сабмитил и болтается внизу рейтинга)
С++ — многословен, PHP — не круто…

А как-же лисп, хаскель, эрланг? Все эти языки доступны, достаточно выразительны и вообще всячески кошерны.

Сейчас я вижу у вас нечитабельную кашу (метод getDirections), очевидные вещи, которые поймёт каждый, скачавший стартовый пакет и попытавшийся что-то менять, итого никакой пользы.
Лучше бы правила перевели, большему количеству хабралюдей бы помогли. Заодно и повод бы дали порассуждать о стратегиях.
А как-же лисп, хаскель, эрланг?

Я их не знаю… а перечислил только те, на которых писал.

Сейчас я вижу у вас нечитабельную кашу (метод getDirections)

Это не мой код, а стартового пакета. К тому же он работает и нет смысла пока его трогать.
Кэп подсказывает, что код стартового пакета и в этом, и в двух предыдущих соревнованиях очень простой и незамысловатый. Его имеет смысл полностью переписать во-первых по причине того, что для создания сложной системы понадобится куда более сложная архитектура, а во-вторых, потому что можно, как и в прошлые разы, достичь существенного ускорения, особливо при чтении данных на больших картах.
Пожалуйста, спасибо из вам за статья. Тоже кстати выбрал Java для написания своего бота, и именно сегодня начал разбираться с кодом. Так что завтра смогу подробнее оценить ваши идеи и код в применении. Удачи!
Спасибо за статью. Скачал в свое время javascript_starter и закачал его обратно без всяких изменений (как и было рекомендовано на сайте для быстрого начала). Сейчас этот бот занимает 152 место (http://aichallenge.org/profile.php?user=431). Хотел добавить хотя бы простой скан близлежащих ячеек для каждого муравья на предмет еды, но сайт ругается на мой быдло код. Оставил разбор на потом…
прошу прощения — ранг конечно же, а не место)
из самых простых решений которые хотелось бы реализовать (как только разберусь в причине ругани на код) это:
— обязательная запись карты (локаций воды) в свой массив
— для первых муравьев поиск еды по спирали, если еда дальше чем четверть карты, то двигаемся рандомно, но не туда где уже были (для разведки и сохранения локаций воды, если вся карта еще не просканирована и записана)
— когда муравьев станет больше, то расположиться расположить муравьев вокруг своего холма на некотором расстоянии друг от друга для быстрого сбора еды… в случае появления противника, соответствующее кол-во муравьев в том месте группируются
— пофиг на поиск пути, но карманы в стенах записывать и избегать
хммм на поиск пути не пофиг)… не учел такой простой вещи как наличие еды вблизи но за стенкой
такая простая вещь подвешивает простых ботов :)
если есть еда рядом (в пределах 1-3 клеток), то смотрим есть ли преграда на прямолинейном пути… есть — голодаем и идем дальше, нету — с безумным воплем набрасываемся на нее и, дико озираясь, вгрызаемся во вкусняшку :)
Где-то ты все-таки перемудрил… Это я про раздел «Ошибочка» сейчас говорю.
Рассмотрим исходный код.
Функция определяет направление движения от Исходной точки до Цели.
1 аргумент — t1 — исходная точка
2 аргумент — t2 — цель

Представим поле, 100x100 клеток. Допустим муравей стоит в клетке (10,10), а его цель — в клетке (90,90). В каком направлении нужно двигаться муравью, чтобы побыстрее дойти до цели?
Конечно же влево-вверх (NORTH — WEST), ведь на поле нет стен, муравей пойдет вверх и выйдет снизу карты.
Это и расписано в коде. Если муравью до цели нужно идти больше чем полкарты (if (t2.row() - t1.row() >= this.rows / 2))>, то ему быстрее «обернуться» вокруг карты (directions.add(Aim.NORTH);), чем идти напрямую (SOUTH). И так далее.

Весь код в комплексе, написанный здесь, я не проверял, но к исходному коду доверия как-то больше, чем к этому.
открыта, просто «Five Minute Quickstart Guide» ведет на прошлогоднюю страничку
а по-моему закрыта, из всех адресов убирается поддомен beta.
Очень жаль… но я все равно попробую написать своего бота, я думаю найдутся желающие устроить неофициальные соревнования?
Админы говорят что завтра регистрация снова будет открыта — чего то там они ребутят. Так что спокойно качаем код и планируем захват мира.
Как я понял — начинается основное соревнование завтра. Они выходят из беты.
да, но регистрация не-беты будет открыта до декабря как то. В том топике на который ты ссылку ниже дал инфа о прошлогодних соревнованиях.
Это не то. Я вчера бота загружал на бету. :) Гляньте на ссылки в топике — речь о другом контесте.
Согласен. Не та ссылка :)
Кстати регистрацию на бете тоже закрыли. Сегодня запуск анонсировали, и говорят, что надо будет пересоздать аккаунты.
Only those users with full accounts are able to leave comments. Log in, please.