Комментарии 47
Самообучение не нужно, т.к. это закрытая система, в которой не появляются новые факторыПростите, но Вы неправы. Самообучение может быть полезно как минимум в контексте адаптации к алгоритму оппонента.
Но есть ограничение времени хода и не думаю, что быстро удастся обнаружить стратегию противникаНикто и не говорит, что вы за один ход должны определить алгоритм врага.
Ну вот, написал… что самообучение в данном контексте не выгодно… Прочитайте, перед тем как минусовать хотя бы.
Вы меня, конечно, извините, но говорить что C++ многословен и считать это аргументом в пользу Java как — то не логично. Можно было просто написать что выбрали Java из личных предпочтений. А так спасибо что подогреваете интерес к конкурсу. Сам задумался об участии после прочтения статьи от ideas4ru
Это вторая статья с разбором стартовых пакетов для этого соревнования. Не очень ясно только, зачем это нужно: человек, который не может самостоятельно разобраться с готовым пакетом для создания своего бота, вряд ли напишет нормального бота, а вот сервера загрузит. Если посмотреть на таблицу рейтинга, можно заметить, что значительная часть ботов — v1, т.е. загружались 1 раз, а сейчас брошены. Все боты рубятся по очереди, и в данный момент между играми бот ждет около 200 минут.
Автора можно похвалить за популяризацию соревнования, но лучше бы вы, автор, написали про алгоритмы применительно к написанию такого бота, а не про кривую реализацию стартового пакета.
Например, ваш способ нахождения расстояния до еды совершенно бесполезен в лабиринте, т.е. почти всегда на официальных картах. Смотрите в сторону алгоритмов поиска кратчайшего пути в графах.
Или, скажем, вы упомянули, что муравьев можно распределять по ролям — это интересно. Если посмотреть на игру топовых ботов, можно заметить, что в них реализованы разные тактики для каждой роли. Минимально необходимый набор: разведчик, солдат, собиратель. Есть небольшая проблема — информацию о конкретном муравье бесполезно держать между раундами, т.е. на каждом раунде придется распределять роли, — такова особенность реализации игрового протокола, но эту проблему можно обойти.
Если вы реализуете стратегии, поиск пути для разных случаев и т.д., вы, скорее всего, упретесь в максимальное время, отведенное на раздачу приказов. Придется оптимизировать/менять алгоритмы — это ещё один пункт для подобной статьи, на мой взгляд.
Конечно же, интересно было бы почитать про стратегии. Очевидно, можно выделить несколько типов, которые стоит реализовать при написании бота:
Например, при атаке вражеских муравьев выгодно собираться в группы, — таким образом можно избежать потерь среди своих и нанести серьезный урон врагу (при встрече 1vs1 оба муравья умирают, при 2vs1 погибает вражеский муравей, свои 2 остаются в живых).
Важно упомянуть, что в игре реализован туман войны, поэтому область видимости каждого муравья ограничена — нет полной информации об игровом поле.
Короче, есть много интересных тем, а вы пишете про ерунду. :)
Автора можно похвалить за популяризацию соревнования, но лучше бы вы, автор, написали про алгоритмы применительно к написанию такого бота, а не про кривую реализацию стартового пакета.
Например, ваш способ нахождения расстояния до еды совершенно бесполезен в лабиринте, т.е. почти всегда на официальных картах. Смотрите в сторону алгоритмов поиска кратчайшего пути в графах.
Или, скажем, вы упомянули, что муравьев можно распределять по ролям — это интересно. Если посмотреть на игру топовых ботов, можно заметить, что в них реализованы разные тактики для каждой роли. Минимально необходимый набор: разведчик, солдат, собиратель. Есть небольшая проблема — информацию о конкретном муравье бесполезно держать между раундами, т.е. на каждом раунде придется распределять роли, — такова особенность реализации игрового протокола, но эту проблему можно обойти.
Если вы реализуете стратегии, поиск пути для разных случаев и т.д., вы, скорее всего, упретесь в максимальное время, отведенное на раздачу приказов. Придется оптимизировать/менять алгоритмы — это ещё один пункт для подобной статьи, на мой взгляд.
Конечно же, интересно было бы почитать про стратегии. Очевидно, можно выделить несколько типов, которые стоит реализовать при написании бота:
- Защита своего муравейника.
- Атака вражеского муравейника.
- Собирательство.
- Атака врагов.
Например, при атаке вражеских муравьев выгодно собираться в группы, — таким образом можно избежать потерь среди своих и нанести серьезный урон врагу (при встрече 1vs1 оба муравья умирают, при 2vs1 погибает вражеский муравей, свои 2 остаются в живых).
Важно упомянуть, что в игре реализован туман войны, поэтому область видимости каждого муравья ограничена — нет полной информации об игровом поле.
Короче, есть много интересных тем, а вы пишете про ерунду. :)
А вы находитесь на начальной стадии рассуждений. При написании стратегий можно обнаружить новые группы и убрать ненужные. Я расскажу о интересных темах, но без основы меня мало кто поймет… поэтому я допишу своего бота, потестирую его в боевом режиме и уже тогда расскажу. А смысл сейчас потенциальным врагам рассказывать возможно выигрышные стратегии?
Стратении ничего не решают, важна реализация.
Например тот же волновой алгоритм для поиска маршрутов для муравьёв вполне очевиден, но при уже 1000 муравьёв в реализации в лоб начинает кончаться время. И это только одина из маленьких частей.
> А смысл сейчас потенциальным врагам рассказывать возможно выигрышные стратегии?
Может быть чтобы потенциальные враги оценили эти стратегии, указали недостатки, развили идеи? Лично мне кажется, что до момента пока Вы не окажитесь в top 10 скрывать вообще ничего не стоит.
Например тот же волновой алгоритм для поиска маршрутов для муравьёв вполне очевиден, но при уже 1000 муравьёв в реализации в лоб начинает кончаться время. И это только одина из маленьких частей.
> А смысл сейчас потенциальным врагам рассказывать возможно выигрышные стратегии?
Может быть чтобы потенциальные враги оценили эти стратегии, указали недостатки, развили идеи? Лично мне кажется, что до момента пока Вы не окажитесь в top 10 скрывать вообще ничего не стоит.
Я не использую алгоритм поиска. Если нужно обойти препятствие, то дешевле дать муравью другое задание и забыть о преграде.
> Может быть чтобы потенциальные враги оценили эти стратегии, указали недостатки, развили идеи?
Я несколько раз повторил, что расскажу об стратегиях и своих мыслях когда проверю бота в реальной обстановке…
Я несколько раз повторил, что расскажу об стратегиях и своих мыслях когда проверю бота в реальной обстановке…
> Стратении ничего не решают, важна реализация.
Это спорное утверждение. Важна и стратегия и реализация, в случае примитивной стратегии, отличная реализация вам не поможет, и наоборот.
Это спорное утверждение. Важна и стратегия и реализация, в случае примитивной стратегии, отличная реализация вам не поможет, и наоборот.
в прошлом контесте какой-то умник выложил код бота из топ-50, в итоге набежали хомячки с его полными и частичными клонами и сильно увеличили энтропию в первых трех сотнях
Интересные темы надо реализовывать, а не трепаться по этому поводу :)
чем больше массовка, чем больше упоминаний (любых) контеста — тем лучше.
во время основного конкурса серверов будет больше, а с зомби бороться — это задача организаторов (снижать частоту боев для тех, кто давно не сабмитил и болтается внизу рейтинга)
во время основного конкурса серверов будет больше, а с зомби бороться — это задача организаторов (снижать частоту боев для тех, кто давно не сабмитил и болтается внизу рейтинга)
С++ — многословен, PHP — не круто…
А как-же лисп, хаскель, эрланг? Все эти языки доступны, достаточно выразительны и вообще всячески кошерны.
Сейчас я вижу у вас нечитабельную кашу (метод getDirections), очевидные вещи, которые поймёт каждый, скачавший стартовый пакет и попытавшийся что-то менять, итого никакой пользы.
Лучше бы правила перевели, большему количеству хабралюдей бы помогли. Заодно и повод бы дали порассуждать о стратегиях.
Пожалуйста, спасибо из вам за статья. Тоже кстати выбрал Java для написания своего бота, и именно сегодня начал разбираться с кодом. Так что завтра смогу подробнее оценить ваши идеи и код в применении. Удачи!
Спасибо за статью. Скачал в свое время javascript_starter и закачал его обратно без всяких изменений (как и было рекомендовано на сайте для быстрого начала). Сейчас этот бот занимает 152 место (http://aichallenge.org/profile.php?user=431). Хотел добавить хотя бы простой скан близлежащих ячеек для каждого муравья на предмет еды, но сайт ругается на мой быдло код. Оставил разбор на потом…
прошу прощения — ранг конечно же, а не место)
из самых простых решений которые хотелось бы реализовать (как только разберусь в причине ругани на код) это:
— обязательная запись карты (локаций воды) в свой массив
— для первых муравьев поиск еды по спирали, если еда дальше чем четверть карты, то двигаемся рандомно, но не туда где уже были (для разведки и сохранения локаций воды, если вся карта еще не просканирована и записана)
— когда муравьев станет больше, то расположиться расположить муравьев вокруг своего холма на некотором расстоянии друг от друга для быстрого сбора еды… в случае появления противника, соответствующее кол-во муравьев в том месте группируются
— пофиг на поиск пути, но карманы в стенах записывать и избегать
— обязательная запись карты (локаций воды) в свой массив
— для первых муравьев поиск еды по спирали, если еда дальше чем четверть карты, то двигаемся рандомно, но не туда где уже были (для разведки и сохранения локаций воды, если вся карта еще не просканирована и записана)
— когда муравьев станет больше, то расположиться расположить муравьев вокруг своего холма на некотором расстоянии друг от друга для быстрого сбора еды… в случае появления противника, соответствующее кол-во муравьев в том месте группируются
— пофиг на поиск пути, но карманы в стенах записывать и избегать
хммм на поиск пути не пофиг)… не учел такой простой вещи как наличие еды вблизи но за стенкой
Где-то ты все-таки перемудрил… Это я про раздел «Ошибочка» сейчас говорю.
Рассмотрим исходный код.
Функция определяет направление движения от Исходной точки до Цели.
1 аргумент — t1 — исходная точка
2 аргумент — t2 — цель
Представим поле, 100x100 клеток. Допустим муравей стоит в клетке (10,10), а его цель — в клетке (90,90). В каком направлении нужно двигаться муравью, чтобы побыстрее дойти до цели?
Конечно же влево-вверх (NORTH — WEST), ведь на поле нет стен, муравей пойдет вверх и выйдет снизу карты.
Это и расписано в коде. Если муравью до цели нужно идти больше чем полкарты
Весь код в комплексе, написанный здесь, я не проверял, но к исходному коду доверия как-то больше, чем к этому.
Рассмотрим исходный код.
Функция определяет направление движения от Исходной точки до Цели.
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.
Очень жаль… но я все равно попробую написать своего бота, я думаю найдутся желающие устроить неофициальные соревнования?
Очень жаль… но я все равно попробую написать своего бота, я думаю найдутся желающие устроить неофициальные соревнования?
Админы говорят что завтра регистрация снова будет открыта — чего то там они ребутят. Так что спокойно качаем код и планируем захват мира.
Как я понял — начинается основное соревнование завтра. Они выходят из беты.
вот так даже — топик форума
http://ai-contest.com/forums/viewtopic.php?f=3&t=1499
http://ai-contest.com/forums/viewtopic.php?f=3&t=1499
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Старт в Google AI Challenge на Java