TSPTW с генетическим алгоритмом

Я реализую TSPTW (коммивояжер с временным окном) с генетическим алгоритмом с 81 городом, я применил следующие шаги:

mutation prob=0.03
population size=100
-Generate random population according to the value of population size intialized
-Sort the generated population
-Looping for populations and determine two parents by roulette selection, apply crossover on the parents, get child and add it to children list
-I am saving the best solution over the algorithm
-Sort the Children, replace worst tour in populations with best one of children
until no good children is existing is better than worst solution in populations
-loop (1 to population size)in all populations and Apply mutation of each worst solution with solution i , if the mutated solution is better than the worst solution of children. I insert it in populations in its place according to its fitness function and remove the worst one.

Я не могу найти хороший результат, и я запускаю его в определенное время, но я обнаружил, что иногда он застревает в решении и не может получить лучший результат. я изменил

параметры (размер популяции = 20000, 1000,100, вероятность мутации = 0,03, 0,02,..)

Я также протестировал его с велокроссовером и заказал кроссовер.

Я хотел бы знать, правильно ли мои действия? Как я могу правильно указать размер популяции и вероятность мутации?


person Yasmin    schedule 30.05.2013    source источник
comment
Ваша мутация неверна. Мутация может случиться с любым из детей, а не только с худшим (если я правильно понял ваш последний шаг). Это, вероятно, не источник вашей проблемы, поэтому это не ответ.   -  person NWS    schedule 30.05.2013
comment
Я уже добавил лучших детей в популяции, поэтому, когда мутация выполняется в популяциях, она также включает некоторых лучших детей.   -  person Yasmin    schedule 30.05.2013
comment
Глядя на ваши шаги снова, я подозреваю, что вы запутались в том, как пересечься и создать новую популяцию. Вы читали: en.wikipedia.org/wiki/Genetic_algorithm и статьи en.wikipedia.org/wiki/Selection_%28genetic_algorithm%29 & en.wikipedia.org/wiki/Crossover_%28genetic_algorithm%29 ?   -  person NWS    schedule 30.05.2013


Ответы (1)


Ваш алгоритм, наверное, слишком элитарный. Это позволяет только лучшим решениям проникнуть в вашу популяцию. Я предполагаю, что в какой-то момент он будет состоять из всех подобных индивидуумов. Без разнообразия и вашей элитарной замены только небольшое количество мутаций может привести к появлению нового генетического материала.

Я бы рекомендовал использовать элитарность только в том случае, если вы позволяете выжить только лучшим представителям предыдущего поколения. Все остальные люди должны быть заменены новым поколением.

Или вы могли бы использовать метод отбора потомства, который мы изобрели. Чтобы выжить, каждый ребенок должен быть лучше, чем его родители. В противном случае их отбрасывают и выбирают новую пару родителей, чтобы произвести нового ребенка. Вы зацикливаетесь, чтобы произвести новых детей, пока у вас не будет достаточно, чтобы заполнить новое население. Затем вы меняете свое население и начинаете заново. Генетический алгоритм выбора потомства обычно превосходит генетический алгоритм с точки зрения качества, которого он может достичь. Он реализован в HeuristicLab. Вы сможете смоделировать TSPTW, если откроете VRPTW и разрешите только одно транспортное средство.

Другой вариант - использовать алгоритм на основе траектории, например. основанный на запретном поиске, таком как унифицированный запретный поиск. Ослабление ограничения, вероятно, необходимо из-за решения с временным окном и для достижения различных локальных оптимумов.

person Andreas    schedule 30.05.2013
comment
Я проверю библиотеку, но табу всегда дает мне очень хороший результат, почти между 0-5 нарушениями ограничений, поэтому, если я использовал его с детьми, прежде чем добавлять их в популяции, я думаю, что это даст мне хороший результат не потому, что генетика сам по себе, а потому что табу. Я не понял, что вы имеете в виду, я бы рекомендовал использовать элитарность только в том, что вы ... новым поколением. Вы имеете в виду, что если лучшее решение, которое я сохранил, лучше, чем лучшее решение в текущих сгенерированных дочерних элементах, я не добавлю этих дочерних элементов в популяции, иначе заменю все популяции новыми дочерними элементами? - person Yasmin; 30.05.2013
comment
В стандартном генетическом алгоритме вы не делаете никаких сравнений между старым и новым поколением относительно их пригодности. Вы уже приняли во внимание пригодность при выборе родителей. 1-Элитизм в GA означает, что вы берете лучшее из старого населения плюс (n-1) детей, чтобы сформировать новое население/поколение. Если вы используете выбор, пропорциональный приспособленности, а также используете пригодность вместо замены, вы слишком жадны и преждевременно сойдетесь. Большой проблемой генетических алгоритмов является генетический дрейф (потеря соответствующей генетической информации). Все это можно прочитать в википедии. - person Andreas; 30.05.2013
comment
Между прочим, HeuristicLab не библиотека. Это программное обеспечение, работающее в Windows, с графическим интерфейсом. Вы можете также программировать против него, конечно. - person Andreas; 30.05.2013