Я реализовал генетический алгоритм для решения задачи коммивояжера (TSP). Когда я использую только мутацию, я нахожу лучшие решения, чем когда я добавляю в кроссовер. Я знаю, что обычные методы кроссовера не работают для TSP, поэтому я реализовал методы Ordered Crossover и PMX Crossover , и оба страдают от плохих результатов.
Вот другие параметры, которые я использую:
Мутация : Мутация с одним свопом или инвертированная мутация подпоследовательности (, как описано здесь Tiendil ) с тестированием мутаций от 1 до 25%.
Выбор : Выбор колеса рулетки
Фитнес-функция : 1 / дистанция тура
Численность населения : протестировано 100, 200, 500, я также запускаю GA 5 раз, чтобы у меня было множество начальных популяций.
Условие остановки : 2500 поколений
При том же наборе данных в 26 баллов я обычно получаю результаты на расстоянии 500-600, используя чисто мутацию с высокой частотой мутаций. При добавлении кроссовера мои результаты обычно находятся в диапазоне 800 дистанций. Другая сбивающая с толку вещь заключается в том, что я также реализовал очень простой алгоритм Hill-Climbing, чтобы решить проблему, и когда я бегу 1000 раз (быстрее, чем 5 раз GA), я получаю результаты на расстоянии 410-450, и я ожидаю чтобы получить лучшие результаты, используя GA.
Есть идеи, почему моя GA работает хуже, когда я добавляю кроссовер? И почему он работает намного хуже, чем простой алгоритм Hill-Climb, который должен застрять на локальных максимумах, поскольку у него нет возможности исследовать его, когда он находит локальный максимум?