Я увеличил максимальное количество полигонов с 50 до 65535.
Когда я впервые попробовал запустить пример часовщика Моны Лизы, он работал бы в течение нескольких дней и не смотрел ничего похожего на целевое изображение. Алгоритм Роджера был лучше, но все еще оставался на месте через час. Используя новый алгоритм, мне удалось воссоздать целевое изображение менее чем за 15 минут. Показатель пригодности составляет 150 000, но невооруженным глазом кандидат выглядит практически идентично оригиналу.
Я собрал диагностический дисплей, который показывает, как менялось все население с течением времени. Это также говорит мне, сколько уникальных кандидатов активно в населении в любой момент времени. Низкое число указывает на отсутствие дисперсии. Либо давление населения слишком высокое, либо уровень мутаций слишком низок. По моему опыту, приличное население содержит не менее 50% уникальных кандидатов.
Я использовал этот диагностический дисплей для настройки алгоритма. Всякий раз, когда число уникальных кандидатов было слишком низким, я увеличивал частоту мутаций. Когда алгоритм застаивался слишком быстро, я проверял, что происходит в популяции. Очень часто я замечал, что количество мутаций было слишком велико (цвета или вершины перемещались слишком быстро).
Я рад, что провел прошлый месяц, изучая эту проблему.Это многому меня научило о природе ГА.Это гораздо больше связано с дизайном, чем с оптимизацией кода.Я также обнаружил, что крайне важно наблюдать за тем, как все население развивается в режиме реального времени, а не только изучать наиболее подходящего кандидата.Это позволяет вам довольно быстро выяснить, какие мутации эффективны и является ли ваша частота мутаций слишком низкой или высокой.
Я усвоил еще один важный урок о том, почему крайне важно предоставить фитнес-оценщику точно такое же изображение, как показанопользователю.
Если вы помните исходную проблему, о которой я сообщил, было то, что изображение кандидата было уменьшено перед оценкой, что позволило многим пикселям избежать обнаружения / исправления.Вчера я включил сглаживание изображения, показанного пользователю.Я полагал, что пока оценщик видит 100% пикселей (масштабирование не происходит), я должен быть в безопасности, но оказывается, что этого недостаточно.