Я думал об этом уже довольно давно и понял, что вам нужно как минимум два умных «агента», чтобы заставить это работать должным образом.Основная идея заключается в том, что у вас есть два типа интеллектуальных действий:
- Управление подсознательным двигателем (SMC).
- Принятие решений в сознании (CDM).
Обучение для SMC может проводиться в режиме онлайн ... если вы действительно думаете об этом: определение успеха в управлении двигателем в основном выполняется, когда вы подаете сигнал своему роботу, он оценивает этот сигнал и либо принимает его, либо отклоняет его.Если ваш робот принимает сигнал, и это приводит к «отказу», то ваш робот переходит в «автономный режим» и больше не может принимать сигналы.Определение «сбой» и «офлайн» может быть сложно, но я думал, что это будет сбой, если, например, датчик на роботе показывает, что робот неподвижен (лежит на земле).
Таким образом, ваша функция пригодности для SMC может быть чем-то вроде: numAcceptedSignals/numGivenSignals + numFailure
CDM - это еще один агент ИИ, который генерирует сигналы, и функция пригодности для него может быть: (numSignalsAccepted/numSignalsGenerated)/(numWinGoals/numLossGoals)
Итак, что вы делаете, вы запускаете CDM, и весь выходящий из него сигнал поступает в SMC ... в конце игры вы запускаете свои фитнес-функции.Кроме того, вы можете объединить SMC и CDM в один агент, и вы можете создать комбинированную функцию пригодности на основе двух других функций пригодности.Я не знаю, как еще вы могли бы это сделать ...
Наконец, вы должны определить, что составляет учебную сессию: это половина игры, полная игра, всего несколько ходов и т. Д. ЕслиИгра длится 1 минуту, и у вас есть в общей сложности 8 игроков на поле, тогда процесс обучения может быть ОЧЕНЬ медленным!
Обновление
Вот краткая ссылка на статью, в которой использовались генетическиепрограммирование для создания "софт-ботов", которые играют в футбол: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.136&rep=rep1&type=pdf
Что касается ваших комментариев: я думал, что для управления подсознательным двигателем (SMC) сигналы будут исходить от сознательного лица, принимающего решения (CDM),Таким образом, вы развиваете своего агента SMC для правильной обработки команд (сигналов) агента CDM.Вы хотите максимизировать время безотказной работы агента SMC независимо от того, что говорит агент CDM.
Агент SMC получает входные данные, например, векторное усилие на соединении, и затем выполняет его через свою обработку.блок, чтобы определить, должен ли он выполнить этот ввод или он должен отклонить его.SMC должен выполнять только те входные данные, о которых он «не думает», что он восстановит, и он должен отклонять входные данные, которые, как он «думает», приведет к «катастрофическому отказу».
Теперь у агента SMC есть выход: принять или отклонить сигнал (1 или 0).МЧР может использовать этот сигнал для своей собственной подготовки ... МЧР хочет максимизировать количество сигналов, которые принимает SMC, и также хочет достичь цели: высокий балл для своей команды и низкий балл для команды противника.,Таким образом, CDM имеет свой собственный процессор, который развивается, чтобы удовлетворить обе эти потребности.Ваша ссылка предоставила трехслойный дизайн, в то время как мой - только двухслойный ... Я думаю, что мой был правильным шагом в направлении трехслойного дизайна.
Еще одна вещь, на которую следует обратить внимание: is падение действительно "катастрофический сбой" ?Что если ваш робот упадет, но CDM заставит его снова встать?Я думаю, что это было бы правильным поведением, поэтому вы не должны наказывать робота за падение ... возможно, лучше сделать это, оштрафовать его за количество времени, необходимое для достижения цели (не обязательно футбольного гола).).