Я построил алгоритм GA для решения TSP.Метод алгоритма GA для TSP
Это упражнение в книге Норвига (AIAMA). Он предположил, что мы читаем мнение Ларраньяги о проблеме для представлений и тому подобное. Я узнал о каком-то кресте над операторами и мутациях и попробовал несколько из них, чтобы посмотреть, что лучше мне подходит. Я также разработал функцию фитнеса, основанную на стоимости каждого пути.
Ну, несмотря на все, что у меня есть вопрос о моем дизайне алгоритмов, я никогда не работал с AI, поэтому не знаю, подходит ли мой подход для GA.
Вот что я сделал:
Я взял вектор путей (мое первоначальное население)
, а затем в каждом цикле я организовал этот вектор по возрастанию стоимости и взял лучшие пути X в этом векторе и удалили другие пути.
Затем я применяю XOver и Mutation (с определенной скоростью) и помещаю их в положение старых удаленных значений вектора.
Я тогда сделать то же самое (вектор заказа - извлечь лучшее и т.д.)
и продолжать делать это до тех пор, пока не стабилизируется.
Это хороший подход? Если это не даст мне север. Причина, когда я выбрал лучшее и не сохранил их (просто создал из них совершенно новый поп, через Xover и мутацию), я не получил хороших результатов. Таким образом (сохраняя лучшие из них - в некоторых экспериментах я сохранил только лучший), у меня лучшие результаты, и результат всегда сходится и хорошо быстро
Государственное представление: для представления состояния я решил использовать представление пути (я был уже используя его с самого начала и решил придерживаться его после того, как я прочитал Larrañaga et all), это так: если у нас есть, скажем, 5 городов и посетите первый город, затем второй, затем третий ... наше представление пути было бы (1, 2, 3, 4, 5)
Начальная генерация населения: На самом деле, я генерирую случайные точки для представления городов (это то, что мне просила книга, генерировать случайные точки в замкнутый квадрат) - но для сравнения я создал популяцию и придерживайтесь его при сравнении результатов - я думаю, что если бы я не придерживался одного конкретного населения, мне бы нечего было знать о моих улучшениях.
Наилучшие подходящие личности: наиболее подходящие люди - это те, у кого есть лучшие транспортные расходы. (Я не знаю, должен ли я иметь - в этой проблеме - использовал что-то еще как параметр
кроссовер: я пробовал некоторые операторы кроссовера и сравнивал мои повторные действия с представленным в книге и в итоге использовал один из Заказ CrossOvers (Larrañaga и др. (1999)): Этот кроссовер берет случайные сокращения (образуя подпуть) из обоих родительских путей, а затем копирует оставшуюся часть пути (города, которые еще не были посещены внутри этого подпути) из другой родитель (начиная со второго разреза, а не в позиции «0») - добавление городов, которые они отображаются в другом родителе.
пример: пути (1 2 3 4 5) (3 4 2 1 5) выбор подпутей (234) и (421) мы будем иметь в качестве потомков (5 | 2 3 4 | 1) (5 | 4 2 1 | 3) < - часть внутри | | поступает от одного родителя, а другая часть от другого родителя
мутация: для мутации я выбрал подход IVM (инверсионная мутация). он берет суб-путь от исходного пути и вставляет его обратно (инвертируется) в случайную точку.
пример: путь (1 2 3 4 5) суб путь (2 3 4) и случайные вставки после 5
генерации: (1 5 | 4 3 2)
виню SO для использования «TSP» шестерки слова pr0blem еще запрещен фильтром из названий вопросов. –
Я отредактировал сообщение со всем, что вы задали –
отредактировал ответ – UmNyobe