Обучи ИИ в WC3

Published

Начало

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

Что надо делать?

— Минимальный набор действий это: скачать карту, запустить на ~30+ минут. Ввести слово "save". Дождаться появления файла по пути ./save/GA_test_01/Cod.txt. Скинуть. Лучший найденный скидывается вам обратно. И так несколько раз =)

Кратко об ии

— Каждый объект представляет собой кольцевую цепочку команд. Каждая команда является точкой на отрезке. Проекция дерева решений на отрезок однозначно соотносит точку и конкретное решение.
» Примерный список команд
  • Сравнить
    • Число
    • Юнит (случайный, ближайший, дохлый)
      • Жизнь
      • Дистанция
      • Количество
    • Зомби (...)
      • Жизнь
      • Дистанция
      • Количество
    • Я
      • Жизнь
      • Отклонение времени
      • Отклонение времени2
    • Кольцо
      • Положение
      • Дистанция
    • Центр
      • Дистанция
  • Сделать
    • Я
      • Остановится
      • Инвиз
    • Юнит (...)
      • Бежать
      • Атаковать
      • Проколоть
    • Зомби (...)
      • Бежать
      • Атаковать
      • Проколоть
    • Зона
      • К
      • От
      • Вправо
      • Влево
    • Пространство
      • Наверх
      • Вниз
      • Направо
      • Налево
» Другие вопросы
Как сохранить ИИ?
Для сохранения лучшего экземпляра введите слово "save". Файл кода будет лежать в папке варкрафта ./save/GA_test_01/Cod.txt
Могу я сохранить понравившийся ии?
Да, для этого нажмите на юнита и введите слово "s save". Код сохранится, даже если юнит умрет до конца условного раунда.
Можно загрузить сохраненный ии?
Да, введите слово "download". В начале следующего раунда он будет загружен и подключен.

Ехало

Первое видео
Задача - прожить как можно дольше
Приветствую вырезки интересного поведения, а также предложения по улучшению обучающей среды и внутренних механизмов.
Скачать:
v02 Динамичное кольцо:
03 KodG3_king of the mountain.w3x оцениваются убийства и количество выживших
Можете улучшить готовый вариант или собрать свой с нуля Cod.txt
v01 Статичное кольцо:
02 KodG3_kill_and_life.w3x оцениваются убийства и жизни
01 KodG3_only_kill.w3x оцениваются только убийства
Пишите, какую разницу в поведении юнитов обучаемых разным способом вы заметили.


Views: 852

Bergi_Bear #25 - 5 months ago 0
Голосов: +0 / -0
Кстати по поводу атаки из невидимости, если мне не изменяет память ии не способен совершить атаку из инвиза
Yagosha #26 - 5 months ago 0
Голосов: +0 / -0
Образовалась одна интересная особь, чьё поведение заметно отличается и выглядит умнее остальных) Все сначала сразу бегут в центр, сбиваются в одну кучу с зомбаками, и начинают применять шипы, пока не перебьют всех зомби, задевая друг друга, после чего продолжают болтаться возле дерева, уходя в инвиз, но друг к другу агрессии не проявляют. А этот предпочитает остаться в стороне, а когда в центре перебьют всех зомби, подбегает и осторожно пытается добить выживших, ударил, отбежал, ударил, отбежал.
Прикрепленные файлы
Vlod #27 - 5 months ago 0
Голосов: +0 / -0
IIIНекромантIII, спасибо! Про усложнение, удерживать флаг от кого, от зомби?) Просто бегать и стоять возле рандомных флагов легкая задача. Отмечу, что хоть мы и видим много юнитов, на самом деле мы обучаем одного. Если требуется два типа, то нужно создать две группы, одной сказать защищать, а другой нападать, тогда получатся кери и хиллеры, к примеру. С другой стороны мы обучаем группу, поэтому можно не разделять, кто то случайно станет хиллером, а кто то кери, а мы будем брать детей от двух случайных выживших, но в таком случае желательны более жесткие условия выживания и больший размер популяции.
Esea #28 - 5 months ago (изм. ) 2
Голосов: +2 / -0
Хм... у меня частые забеги за кольцо, при том бывает достаточно забавная ситуация когда один бежит за другим а тот бежит за кольцо.
Vlod #29 - 5 months ago (изм. ) 0
Голосов: +0 / -0
bifurcated, придерживается тактики самоубийства - звучит забавно) 1) Урон от инвиза я убрал см. РО 2) Все команды no target - указание в виде области или точки. По этому он физически не может никого ударить из инвиза, ему не дает вакрафт. Да таргет система в управлении стара как мы, по этому хотелось уйти от нее. Но спасибо за наводку, кажется я понял откуда дерганья у стандартной атаки. Сейчас ии как может узнать что он в инвизе? Нажать на инвиз и получить в ответ false. Не слишком удобный способ) Логично добавить ему флаг проверки на бафф, пока систему команд не трогал для совместимости Cod.txt между картами. Сам список команд добавил в описание. Спасибо!

Bergi_Bear, из инвиза да, только impale пустить.
Возможно, дерганья были из за отдачи кучи команд атаки в точку в один тик. Попробую сменить это на цель-объект и проверить.
function action_who_attack takes integer ind, unit tu returns boolean
  return IssuePointOrderById(Men[ind], 851983, GetUnitX(tu), GetUnitY(tu))
endfunction

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

Esea, бывает и паровозик из трех) Помните, что каждый кон один из слабых заменяется на абсолютно рандомного. А те, что имеют ауру меткости - либо дети двух случайных лучших, либо тоже два рандома
Esea #30 - 5 months ago 3
Голосов: +3 / -0
Первый мой сейв (статическое кольцо убийства и жизни). Даже не знаю что сказать. Заметил 2 интересных персонажей: коричневый который то бегал на небольшое расстояние туда сюда рядом с деревом то вообще убегал за кольцо, и красный который один раз наматывал круги рядом с кольцом, но умер забежав за него (видимо его беговой круг расширялся). Ну и еще не могу смотреть на бесполезные инвизы и неравноценные размены ударами.
Прикрепленные файлы
IIIНекромантIII #32 - 5 months ago 0
Голосов: +0 / -0
удерживать флаг от кого, от зомби
Друг от друга.

Ну, я не особо понимаю чему можно научить такую штучку, да и есть ли смысл учить чему-то, кроме как для собственного удовольствия.
Yagosha #33 - 5 months ago 1
Голосов: +1 / -0
Я оставил на ночь несчастных ботов развиваться в их бессмысленном мире. Теперь уже они пытаются в первую очередь убить друг друга, а не зомби и, что самое главное, научились уверенно бить киркой, без сброса приказа!

Прикрепленные файлы
Vlod #34 - 5 months ago 2
Голосов: +2 / -0
Esea, движение по кругу оказывается движением по спирали из за погрешности, поэтому юниты, которые не учитывают дистанцию до кольца, будут нещадно уничтожены)
Смотри, пользоваться инвизом по кд явно лучше, чем вообще им не пользоваться, а поиск правильного условия задача более сложная. Сначала ребенок учится двигать ногами, а потом уже бегать кросс, тут то же самое

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

Yagosha, воо, похоже ваши боты развились дальше всех! Это очень важно, так как ранее некоторые ссылались на дерганья киркой во время удара. Хотя со временем ГА легко оптимизирует положение команд.
На этой карте бонусы даются за убийства и за малое число выживших работников. Интересно, что с течением времени вторая задача перетягивает первую
Yagosha #35 - 5 months ago 0
Голосов: +0 / -0
Vlod, вы только посмотрите на красного чемпика в видео, как он держит дистанцию и маневрирует, ни разу не подставился, и ему не хватило буквально секунды чтобы добрать синего. Он доминировал ещё парочку раундов, а потом в его голове что-то щёлкнуло и, к моему огорчению он почему-то решил самоликвидироваться и целенаправленно убежал за круг в самом начале :(