Рассматривал множество примеров с нейронными сетями, но это были довольно простые примеры, поэтому для текущей задачи - обучить бота играть в футбол - нет ясного представления, какие для этого нужны входные параметры.
Модель игры очень простая: поле, две команды по 3 чел. и один мяч, каждый объект из которых - окружность с определенным радиусом и массой.
У каждого объекта есть такие управляемые параметры как ускорение и направление (за исключением мяча, он перемещается под воздействием внешних объектов)
Каждый игрок может знать о мяче, тиммейтах и противниках.
Тупые боты в пару строк умеют двигаться только прямо к мячу. Была попытка добавить различное поведение с помощью условных операторов, например:
если защитник, не отходить далеко от ворот
если нападающие, оставаться в середине поля если уже два тиммейта у наших ворот
если мяч катится в сторону наших ворот, обограть его сбоку и выбить
С таким поведением уже лучше, но дальше все только усложняется при попытке добавить новые поведения так, чтобы не сломать предыдущие.
Что касается нейронных сете, как уже было сказано, находит только простые примеры, где очевидно какие параметры нужно. А для подобного бота какие?
На выходе нужно знать только то в каком направлении двигаться и с каким ускорением
На входе можно получить: свою позицию, позицию и направление мяча, позицию тиммейтов и оппонентов (соответственно из этого можно выделить такие данные: угол направления к мячу, количество тиммейтов и противников рядом в некотором радиусе, тиммейты или оппоненты, ведущие мяч)
Как это грамотно подать в сеть, чтобы не было какой-то привязанности к определенному положению на поле, и иметь разные поведения для защитника/нападающего (нужно ли разделять на две сети?)
вы должны понимать зачем вам нужно использовать именно нейронную сеть.
Вам лучше с самых азов зайти, кого обучать, как обучать и тд.
например упростить задачу до обучения "футболиста" в качестве "автономного агента", на основе конечного автомата, у которого есть состояние (окружения и его самого) и есть действия - и вы пробуете разные комбинации этих состояний и действий.
Например вы можете описать состояние футболиста как расположение мяча (справа слева впереди, впереди-справа, впереди слева и тд) - сопоставляешь этому состоянию отдельноое действие (движение вправо, влево и тд), дополнительно можешь сопоставить например расстояние до мяча.
например мяч вверху-слева дистанция 10 ячеек -> действие агента -> движения прямо
мяч справа слева дистанция 2 ячееки -> действие агента -> движение влево.
в итоге у тебя получается записанные сопоставления состояниям и действиям.
для того чтоб обучать оптимальному поведению тебе нужно вводить функцию оценки результата после действий, награждать (запоминать), действия которые приводят к увеличению результата, и отказываться от действий которые снижают результат.
результатом может быть например 1/"расстояния до меча"
в начале запускаешь агента с рандомными переборами взаимодействий между состояниями и действиями. Потом более менее обученных двигаться, запускаешь играть друг против друга например в футбол и тд.
добавляешь к результату оценку результата матча и тд.
можно использовать генетический алгоритм для более быстрого поиска оптимальных параметров конечного автомата, можешь попробовать потом нейросеть прикрутить. Можешь на основе статистики готовой какие-то выводы сделать (но у тебя статистики я так понимаю никакой нет, так что тебе все равно прийдется обучать бота, играя друг против друга, и перебирать случайные варианты).
Виталий Столяров, фитчи можешь прикручивать какие в голову взбредет (главно чтоб их можно было оценить) в качестве состояния - чем больше фитч, например расстояние до мяча, возможно какая-то позиция противника, тем сложнее может получится поведение бота, тем дольше и сложнее обучать агента.
следует помнить для полного перебора состояний и возможных реакций может не хватит жизни нашей вселенной, поэтому используются упрощения моделей и всякие методики типа генетических алгоритмов для поиска комбинаций, нейросети используются для быстрой гибкой подгонки параметров в моделях.
сами параметры (фитчти и действия), обычно ищутся с помощью других методик.
xmoonlight, хех ты для начала задачу с бинарными признаками реши, а потом уже переходи к подгонке параметров (градусов, расстояний))))
у него статистики нету ни по каким положениям и не откуда эту статистику брать. Ему нужно тогда либо моделировать в ручную, либо писать самообучающихся агентов.
модель с углами можно описать также в нескольких дискретных состояний (поворотов например на 30 градусов), чего будет вполне достаточно для качественного решения.
дима кубитский, ну по бинарным признакам - как раз всё просто: "все бусинки на нитке" или нет) (где нитка - это цепь из событий, необходимых для успешности "хода")
А вот что нет статистики - это не проблема. Главное - создать агента.