2017-03-12 15 views
1

私はCITIES_THROUGH配列から最大N都市を、CITY_ENDで終わると行くCITY_STARTで始まる最も安い旅行を見つけるのTSPの問題を解決したい便の価格DEAPでTSPを解く - 最初と最後の町をフリーズするには?

CITY_ORIGIN, CITY_DESTINATION, PRICE 

を持つ大規模なデータセットを持っています。

私はTSP exampleコードを使用してDEAP python 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 
関連する問題