Текущий используемый алгоритм — это генетический алгоритм, использующий мутацию и упорядоченный кроссовер. Мы изменили исходный алгоритм упорядоченного кроссовера, удалив депо (конечные точки), а затем выполнив кроссовер и добавив их после. Алгоритм родительского выбора использует выбор рулетки с
доброта = 1 / time_to_travel_route.
Без кроссовера алгоритм дает хорошие результаты (используя только мутации), но их добавление значительно ухудшает их. Вот ссылка на пост с похожей проблемой: Почему добавление кроссовера в мой генетический алгоритм дает мне худшие результаты?
Следуя совету, данному в посте, благость была изменена на
доброта = 1 / (time_to_travel_route) ^ n с переменным n
Однако это все равно не дало положительного результата.
Численность населения: пробовал от 100 до 10000
Условие остановки: пробовал от 10 поколений до 1000
Алгоритм фитнеса: пробовал 1 / (time_to_travel_route) ^ n с варьированием n от 1 до больших чисел
Алгоритм мутации: Алгоритм использует 2-опц. Все потомство мутировало. Алгоритм мутации пробует разные мутации, пока не найдет лучшее решение. Однако, если он найдет худшее решение, он может просто вернуть худшую популяцию с вероятностью p. Это сделано, чтобы добавить немного случайности и избежать локальных минимас. Мы варьировали р от 5 до 20 процентов.
Задача ещё не решена.