2013-05-30 2 views
3

, 나는 다음과 같이 적용과 :TSPTW 유전자 알고리즘 내가 81 개 도시와 유전자 알고리즘과 TSPTW (시간 창 여행 세일즈맨)을 구현하고

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, ..)

나는 또한 사이클 크로스 오버로 테스트했습니다 및 정렬 크로스 오버

내가 알고 싶은 것은, 나의 발길은 맞습니까? 어떻게 인구 크기와 돌연변이 확률을 정확하게 지정할 수 있습니까?

+1

귀하의 돌연변이가 잘못되었습니다. 돌연변이는 최악의 경우가 아니라 모든 어린이에게 일어날 수 있습니다 (마지막 단계에 대한 나의 독서가 정확하다면). 이것은 아마도 문제의 원인이 아니므로 대답이 아닙니다. – NWS

+0

나는 이미 개체군에 더 좋은 아이들을 추가했다. 그래서 돌연변이가 개체군에 대해 이루어 졌을 때, 그것은 또한 더 좋은 아이들을 포함한다. – Yasmin

+0

당신의 단계를 다시 살펴보면, 교차하는 방법과 새로운 개체군을 생성하는 방법에 대해 혼란스러워지고 있다고 생각된다. 읽었습니까 : http://en.wikipedia.org/wiki/Genetic_algorithm 및 기사 http://en.wikipedia.org/wiki/Selection_%28genetic_algorithm%29 & http://en.wikipedia.org/wiki/ Crossover_ % 28genetic_algorithm % 29? – NWS

답변

2

알고리즘이 너무 엘리트입니다. 그것은 당신의 인구를 입력하는 더 나은 솔루션을 허용합니다. 어떤 시점에서 모든 유사한 개인으로 구성 될 것이라고 가정합니다. 다양성이 남아 있지 않고 엘리트 주의적 대체물이 없기 때문에 적은 양의 돌연변이 만이 새로운 유전 물질을 도입 할 수 있습니다.

이전 세대의 최고의 개인 만 생존 할 수 있다는 점에서 elitism을 사용하는 것이 좋습니다. 나머지 개인은 모두 새로운 세대로 대체되어야합니다.

또는 우리가 발명 한 자손 선택 방식을 사용할 수 있습니다. 생존 할 수있는 각 어린이는 부모보다 나은 부모가되어야합니다. 그렇지 않으면 그들은 버려지고 새 부모를 낳아 새로운 아이를 낳습니다. 새로운 인구를 채우기에 충분할 때까지 새로운 아이들을 생산하도록 반복합니다. 그런 다음 인구를 대체하고 새롭게 시작하십시오. 자손 선택 유전 알고리즘은 일반적으로 달성 할 수있는 품질 측면에서 유전 알고리즘보다 우수합니다. HeuristicLab에 구현되었습니다. VRPTW를 열고 하나의 차량 만 허용하는 경우 TSPTW를 모델링 할 수 있어야합니다.

또 다른 옵션은 궤도 기반 알고리즘으로 진행하는 것입니다. 통합 된 금기 검색과 같은 금기 검색에 기초하여 제약 조건 완화는 아마도 시간 창 솔루션 (time windowed solution)과 서로 다른 지역 최적 값 (local optima)으로 인해 필요하다.

+0

도서관을 확인 하겠지만 타부 (Tabu)는 항상 0-5 제약 조건 위반 사이에 아주 좋은 결과를주었습니다. 그래서 인구에 추가하기 전에 아이들과 함께 사용하면 좋은 결과를 얻을 수 있다고 생각하지 않습니다. 유전 자체는 그렇지만 타부 때문입니다. "나는 당신을 ... 신세대에서만 엘리트주의를 사용하는 것이 좋습니다."라는 말이 무슨 뜻인지 알지 못했습니다. 내가 구한 최선의 해결책이 현생 자녀를위한 최선의 해결책보다 낫다면, 나는이 아이들을 인구에 추가하지 않을 것이며, 그렇지 않으면 모든 인구를 새로운 아이들로 바꿀 것입니까? – Yasmin

+0

표준 유전 알고리즘에서는 이전 세대와 새로운 세대를 비교하지 않습니다. 당신은 이미 부모 선정을 고려하여 체력을 고려했습니다.1-Elitism은 GA에서 당신이 새로운 인구/세대를 형성하기 위해 (n-1) 명의 자녀들을 더하여 옛 인구의 장점을 최대한 활용한다는 것을 의미합니다. 당신이 적당 비례 선택을 사용하고 또한 보충에있는 적당을 사용하면 당신은 지나치게 욕심이고 조숙하게 수렴 할 것이다. 유전자 알고리즘의 가장 큰 문제점은 유전자 드리프트 (유전 정보의 손실)이다. 위키 백과에서 모든 것을 읽을 수 있습니다. – Andreas

+0

HeuristicLab은 라이브러리가 아닙니다. Windows에서 실행되는 소프트웨어로 GUI가 있습니다. 당신은 물론 그것을 반대 할 수도 있습니다. – Andreas