Я нахожусь в процессе написания генетического алгоритма для решения головоломок судоку и надеялся получить какой-то вклад. Алгоритм время от времени решает головоломки (примерно 1 из 10 на одной и той же головоломке с макс. 1 000 000 итераций), и я пытаюсь получить небольшую информацию о частоте мутаций, репопуляции и сплайсинга. Любой вклад очень ценится, поскольку это совершенно новый для меня, и я чувствую, что я не делаю вещи на 100% правильно.
Краткий обзор алгоритма
Фитнес-функция
Подсчитывает количество уникальных значений чисел от 1 до 9 в каждом столбце, строке и подполе 3 * 3. Каждое из этих уникальных значений в подмножествах суммируется и делится на 9, в результате чего получается плавающее значение между 0 и 1. Сумма этих значений делится на 27, обеспечивая общее значение пригодности в диапазоне от 0 до 1. 1 указывает на решенную задачу.
Численность населения:
100
Выбор:
Метод рулетки. Каждый узел выбирается случайным образом, где узлы, содержащие более высокие значения пригодности, имеют немного лучший шанс выбора
Размножение:
Две случайно выбранные хромосомы / доски обменивают случайно выбранный поднабор (строка, столбец или 3 * 3 подмножества). Выбор подмножества (какой ряд, столбец или поле) является случайным. Полученные доски вводятся в популяцию.
Коэффициент воспроизводства: 12% населения за цикл
На одну итерацию приходится шесть репродукций, что приводит к 12 новым хромосомам за цикл алгоритма.
Мутация: мутация происходит с частотой 2% населения после 10 итераций без улучшения наивысшей приспособленности.
Ниже перечислены три метода мутации, которые имеют различный вес вероятности отбора.
1: поменять местами случайно выбранные номера. Метод выбирает два случайных числа и обменивает их по всей доске. Этот метод, по-видимому, оказывает наибольшее влияние на рост на ранних стадиях алгоритма роста. 25% шанс выбора
2: ввести случайные изменения: случайным образом выбрать две ячейки и изменить их значения. Этот метод, кажется, помогает предотвратить схождение алгоритма. % 65 шанс выбора
3: подсчитать количество каждого значения на доске. Решенная доска содержит число 9 от каждого числа от 1 до 9. Этот метод берет любое число, встречающееся менее чем 9 раз, и случайным образом заменяет его числом, встречающимся более чем 9 раз. Это, кажется, положительно влияет на алгоритм, но используется только в редких случаях. % 10 шанс выбора
Мой главный вопрос: с какой скоростью мне применять метод мутации? Кажется, что по мере увеличения мутации у меня быстрее начальные результаты. Однако, как результат приближается к правильному результату, я думаю, что более высокая скорость изменений привносит в популяцию слишком много плохих хромосом и генов. Тем не менее, с более низкой скоростью изменения алгоритм, кажется, сходится слишком рано.
Последний вопрос: есть ли лучший подход к мутации?