經常使用術語中的旅行推銷員問題(TSP)是最複雜的問題之一,歸結爲組合優化。旅行到n個城市(頂點)須要檢查(n-1)!可能性。3,000個地點有4 * 10 ^ 9131個可能的解決方案。app
本文調查了R包的性能:TSP和tspmeta。結果對個人使用很是滿意。性能
如下代碼輸入您的TSP225.csv文件並輸出您的解決方案和可視化。生成的'tour'對象是一類TOUR和整數;它包含您的解決方案。優化
coords.df <- data.frame(long=TSP225$Long, lat=TSP225$Lat)coords.mx <- as.matrix(coords.df)# Compute distance matrixdist.mx <- dist(coords.mx)# Construct a TSP objecttsp.ins <- tsp_instance(coords.mx, dist.mx )#tour <- run_solver(tsp.ins, method="2-opt")#Plotautoplot(tsp.ins, tour)
比較解決方案:下圖顯示了7種啓發式解決方案的最佳旅遊長度和協和式的確切解決方案。對於協和解決方案,我使用了在UW-Madison主持的NEOS-Server。spa
methods <- c("nearest_insertion" "2-opt")tours <- sapply(methods simplify = FALSE)dotchart( ), )
在2D中的#2 3000個隨機頂點3d
顯然,隨着頂點數量的增加,精確解和其餘啓發式解決方案之間的差別顯着增長。2-opt解決方案最接近最優。重複的2-opt解決方案和挑選最小的值讓我很是接近於確切的解決方案 。rest