2011-12-06 4 views
3

에 세일즈맨 여행 "해결"하기 위해 유전자 알고리즘을 적용하는 데 도움이 필요하고 난 그냥 같이, 여러 위치에서 좋은 경로를 얻기 위해 유전자 알고리즘을 사용하고 있습니다 :난 그냥 ai4r 라이브러리 <a href="http://ai4r.rubyforge.org/" rel="nofollow">http://ai4r.rubyforge.org/</a> 다운로드 루비

http://ai4r.rubyforge.org/geneticAlgorithms.html

하지만 시작 도시를 설정할 수 있어야합니다.

"고정"시작 도시에서 이것을 사용하는 방법에 대한 단서가 있습니까?

+1

[George Dantzig] (http://en.wikipedia.org/wiki/George_Dantzig#Mathematical_statistics)가되기에 행운을 빈다. –

+0

Didnt got, 불가능한가요? 나는 최상의 솔루션을 찾고 있지 않다. GA 발견 적 도구를 이미 사용하고있다. –

+1

어쩌면 나는 ""해결 ""을 잘못 해석했다. –

답변

0

일반적으로 Ruby 전용 구현을 살펴 보지 않고 시작 도시를 제거하고 처음 시작하는 가장자리가 시작 도시에서 GA가 생성 한 곳까지 있다고 가정합니다. 첫번째 가장자리가 비용/체력 기능에 포함되어 있는지 확인하십시오.

+0

수 있지만 기꺼이 될 것이지만 그것은 최적화 될 실 거예요? –

+0

그럼 원점을 제외한 다른 모든 도시의 경우 GA를 사용하여 테스트 한 후 원점 -> 대상 원점 -> 거리를 설정하는 fake_origin 사이의 최소 거리를 확인합니다 ... 지금까지 작성한 고환에 대해 좋은 것으로 보입니다 –

+0

첫 번째 모서리는 적합성 기능은 주문의 일부로 최적화합니다. 첫 번째 에지가 적합도 함수의 일부가 아니면 올바르게 최적화되지 않습니다. –

0

여행사 직원 문제의 해결 방법은 왕복 여행이므로 시작 도시와 무관합니다. 솔루션을 찾은 후에 왕복 여행 도시를 출발 도시로 삼을 수 있습니다.

편집 : 시작 도시로 돌아갈 필요가없는 경우 시작 도시를 떠나는 두 개의 거리 중 큰 것을 제거하여 종료 도시를 선택할 수 있습니다. 최종 솔루션에서 전체 왕복 여행 중 가장 큰 거리를 제거하면 왕복이 아닌 전반적인 최단 거리 투어가됩니다. 이것은 당신이 링크 한 웹 페이지에서했을 가능성이 높습니다 (더블린 - 모스크바가 가장 비싼 방향으로 보입니다). 그러나 비엔나와 마드리드의 경우 해당 페이지의 저자가 잘못된 위치를 사용했기 때문에 마드리드는 꺼져있는 것 같습니다.

출발 도시가 필요할 때 또 다른 방법은 추가 시간 제한이있을 때입니다. 이 제약 조건은 특정 시간에 각 도시가 있어야 할 필요가 있음을 지정합니다.이 경우 출발 도시가 호출되는 "저장소"에는 전체 여행을 다루는 시간 창이 있습니다. 그러나 TSPtw는 훨씬 복잡한 문제이며 종종 고급 유전 연산자가 필요합니다. 단 하나의 차량을 사용하는 경우 TSPtw를 CVRPtw (시간 Windows를 사용하여 용량 성 차량 라우팅 문제)로 모델링 할 수도 있습니다. 이 문제를 해결하기 위해 HeuristicLab에서 VRP 구현을 시도해 볼 수 있습니다. 추가 지원이 필요한 경우 mailing list이 있습니다.

0

조지아에서 TSP로가는 답은주기이므로 첫 번째 도시는 원하는 것을 의미합니다. 예를 들어, 대답이 [3 4 2 6 1 5]이고 첫 번째 도시를 2로 지정하려면 솔루션을 [2 6 1 5 3 4]으로 "굴릴"수 있습니다.

평가 기능에서 첫 번째 도시를 지정하면 문제를 1 개 줄일 수 있습니다. 이 경우 개인은 이것을 설명하기 위해 수정되어야한다는 것을 고려해야합니다. 예를 들어, 첫 번째 도시를 # 2 (6 개 도시의 문제)로 설정하고 [1 2 3 4 5] (6 개의 도시에서 1을 뺀) 개인이있는 경우 평가할 개인은 [2 1 3 4 5 6]입니다.

관련 문제