數學建模 TSP(旅行商問題) Lingo求解


model: sets: cities/1..9/:level; link(cities, cities): distance, x; !距離矩陣; endsets data: distance = 0 200 660 170 127 225 490 420 330 200 0 820 300 90 60 310 225 151 660 820 0 530 770 120 1110 1050 960 170 300 530 0 280 350 600 550 450 127 90 770 280 0 110 370 310 210 225 60 120 350 110 0 280 250 120 490 310 1110 600 370 280 0 290 190 420 225 1050 550 310 250 290 0 160 330 151 960 450 210 120 190 160 0 ; enddata n = @size(cities); !目標函數; min=@sum(link:distance * x); @For(cities(k): !進入城市k; @sum(cities(i) | i #ne# k: x(i,k)) = 1; !離開城市k; @sum(cities(j) | j #ne# k: x(k,j)) = 1; ); !保證不出現子圈; @for(cities(i) | i #gt# 1: @for(cities(j) | j #gt# 1 #and# i#ne#j: level(i)-level(j) + n*x(i,j) <= n-1); ); !限制u的范圍以加速模型的求解,保證所加限制並不排除掉TSP問題的最優解; @for(cities(i) | i #gt# 1: level(i) <= n-2); !定義x為 0\1變量; @for(link:@bin(x)); end 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM