Ответ 1
Каждая библиотека генетического алгоритма должна иметь какой-то способ определить функцию фитнеса, которая действительно то, что вы ищете. AForge.NET предоставляет интерфейс IFitnessFunction. GeneticSharp предоставляет интерфейс IFitness. Да, вам нужно будет самостоятельно закодировать функцию фитнеса - ту часть, которая уникальна для вашей проблемной области. Вы можете сделать это как можно проще или сложнее.
После того, как каждая хромосома проходит функцию фитнеса и получает оценку, система использует любые критерии выбора, которые вам нравятся (турнир, колесо рулетки и т.д.), чтобы выбрать, какие хромосомы переходят к следующему поколению через кроссовер и/или мутацию.
Итак, вместо процесса, протекающего следующим образом:
- Сопоставьте хромосомы в текущем поколении
- Каждая пара хромосом играет круглую
- Победители создают следующее поколение
Генетические алгоритмы работают следующим образом:
- Каждая хромосома играет раунд и получает оценку
- Алгоритм выбора использует этот счет, чтобы выбрать победителей.
- Победители создают следующее поколение
В сущности, каждая хромосома уже конкурирует с любой другой хромосомой, всего на один шаг более абстрактной, чем вы, и я бы сыграл в игру.
Вероятно, вы можете настроить функцию фитнеса, чтобы вытащить случайного другого члена текущей популяции в качестве противника. Лучше было бы использовать лучшую хромосому из предыдущего поколения в качестве противника для всего текущего поколения.
Назначьте точки своей хромосоме, чтобы продвигаться дальше в игре и начислять очки за создание препятствий для противника (если это отдельное действие, отличное от обычного игрового процесса в вашей игре). Вернуть окончательный результат хромосомы в качестве выхода функции работоспособности.