2017-03-12 29 views
1

나는 항공편 가격 내가 가장 저렴한 여행 CITY_END 끝나는 및 CITIES_THROUGH 배열에서 최대 N 도시를 통해가는 CITY_START에서 시작을 찾는 TSP 문제를 해결하려면DEAP로 TSP를 해결하는 방법 - 첫 번째 마을과 마지막 마을을 얼리는 방법?

CITY_ORIGIN, CITY_DESTINATION, PRICE 

대형 데이터 집합을 가지고있다.

TSP example 코드를 사용하여 비단뱀 lib 디렉토리와 함께이 작업을 해결하기 위해 노력하고있어.

DEAP TSP 예에서 첫 번째 도시와 마지막 도시를 고정하는 방법은 무엇입니까?

f.e.

CITY_START = "London" 
CITY_END = "Paris" 
CITY_THROUGH = ["Amsterdam", "Berlin", "Rome", "Barcelona"] 
CITY_MAX = 2 

그래서 나는 가능한 솔루션 등의 부분 집합에서 가장 저렴한 비행을 찾는 알고리즘을 제한하려면 :

London -> [CITY_MAX random cities from CITY_THROUGH] -> Paris 

답변

0
내가 중첩 사전에 비행 가격 데이터를 매핑하는 게 좋을 것

:

flight_price = {"london": {"paris": 100}} 

이제 평가 기능을 조정하면됩니다.

def evalTSP(individual): 
    cities = ["london"] + individual + ["paris"] 
    price = sum(flight_price[start][end] for start, end in zip(cities, cities[1:])) 
    return price, 


evalTSP([]) 
>>> 100