图论中TSP问题的LINGO求解与应用

Posted kmxojer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图论中TSP问题的LINGO求解与应用相关的知识,希望对你有一定的参考价值。

巡回旅行商问题(Traveling Salesman Problem,TSP),也称为货郎担问题。该问题可简单描述为走遍n个城市的最短路。几十年来,出现了很多近似优化算法。如近邻法、贪心算法、最近插入法、最远插入法、模拟退火算法以及遗传算法。

问题1 设有一个售货员从10个城市中的某一个城市的出发,去其他9个城市推销产品。10个城市的距离已经给出。10个城市相互距离如下表。要求每个城市到达一次仅以此后,回到原出发城市。问:他如何选择旅行路线,使总路程最短。

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 

model:
sets:
city/1..10/:u;
link(city,city):d,x;
endsets
data:
d=0  7  4  5  8  6  12 13 11 18
  7  0  3  10 9  14 5  14 17 17
  4  3  0  5  9  10 21 8  27 12
  5  10 5  0  14 9  10 9  23 16
  8  9  9  14 0  7  8  7  20 19
  6  14 10 9  7  0  13 5  25 13
  12 5  21 10 8  13 0  23 21 18
  13 14 8  9  7  5  23 0  18 12
  11 17 27 23 20 25 21 18 0  16
  18 17 12 16 19 13 18 12 16 0;
@text()=@writefor(link(i,j)|x(i,j)#GT#0:‘x(‘,i,‘,‘,j,‘)=‘,x(i,j));
enddata
min=@sum(link:d*x);
@for(city(j):@sum(city(i)|j#ne#i:x(i,j))=1);
@for(city(i):@sum(city(j)|j#ne#i:x(i,j))=1);
@for(link(i,j)|i#ne#j#and#i#gt#1:u(i)-u(j)+10*x(i,j)<=9);
@for(link:@BIN(x));
end

  

x(1,4)=1 x(2,7)=1 x(3,2)=1 x(4,3)=1 x(5,6)=1 x(6,8)=1 x(7,5)=1 x(8,10)=1 x(9,1)=1 x(10,9)=1

1 4 3 2 7 5 6 8 10 9 1

以上是关于图论中TSP问题的LINGO求解与应用的主要内容,如果未能解决你的问题,请参考以下文章

图论中的重要算法(Dijstra,Bellman-Ford,Floyd,Ford-Fulkerson,匈牙利算法)的详细解读及实现

数据结构与算法最小生成树算法

2020/02/15 理解图论中的拉普拉斯算子与拉普拉斯矩阵

网络最大流量与载量容量的关系

Nebula Graph -- 7. 图论中的路径简介

图论中的一些名词的定义。