Я пытаюсь разработать оптимальные стратегии для Итерированной дилеммы заключенного с использованием базового генетического алгоритма ( Стохастическая универсальная выборка , 1-точечный кроссовер , каноническийGA).Я реализовал этот алгоритм в Haskell и недавно добавил вывод диаграммы.К сожалению, полученные графики не соответствуют ожидаемому шаблону для этой проблемы, поэтому, похоже, у меня ошибка.
Все графики пригодности, которые я видел для этой проблемы, выглядят примерно так:
![My friend's graph, looking normal](https://i.stack.imgur.com/xlO4i.jpg)
Другие примеры можно увидеть в Об эволюции надежных стратегий для дилетмы итеративного заключенного, PJ Darwen и X. Яо (1993) стр. 6-7
Однако мой выводвыглядит так:
![My graph looking very strange](https://i.stack.imgur.com/KkHHE.png)
Если я установлю частоту мутаций в 1, я получу:
![Flipping between two identical values](https://i.stack.imgur.com/CuowI.png)
Возможно, предположив, что моя функция выбораэто не так случайно, как я думал, поскольку график подразумевает однородную совокупность.
Мой код находится в этом git-репозитории , если вы хотите его проверить.
Теперь вопрос: может ли кто-нибудь из вас предположить, что я могу делать неправильно в моей реализации GA, чтобы график выглядел следующим образом?
например, я бы предположил, что вряд ли это будет функция пригодности, которую я используюта же фитнес-функция Fили выведите, что оно максимизируется, поэтому даже если фитнес-функция неправильна, она все равно будет максимизировать эту неправильную функцию (хотя я уверен, что я могу ошибаться, я довольно новичок в генетических алгоритмах)
Я просто хотел бы получить предложения по поводу того, на какие функции смотреть. Я вырываю голову, пытаясь это исправить.
РЕДАКТИРОВАТЬ: После добавления некоторого кода отладки в мою функцию объединения кажется, что он всегдапрошли тех же особей (даже с мутацией, установленной на 1), так что, предположительно, где-то выбор идет не так.
РЕДАКТИРОВАТЬ: Выбор шел неправильно, но это не вызывало всех проблем, только однородность в популяции.