图论中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()[email protected](link(i,j)|x(i,j)#GT#0:‘x(‘,i,‘,‘,j,‘)=‘,x(i,j));
enddata
[email protected](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

原文地址:https://www.cnblogs.com/kmxojer/p/12249493.html

时间: 2024-10-21 14:51:42

图论中TSP问题的LINGO求解与应用的相关文章

用LINGO求解线性规划的例子

附1:用LINGO求解线性规划的例子   一奶制品加工厂用牛奶生产A1.A2两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A1,或者在设备乙上用8小时加工成4公斤A2.根据市场需求,生产的A1.A2能全部售出,且每公斤A1获利24元,每公斤A2获利16元.现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为480小时,并且设备甲每天至多能加工100公斤A1,设备乙的加工能力没有限制.试为该厂制定一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1)若用35元可以

算法7-6:图论中的难题

二部图 难度:★★ 二分图是图论中的一种特殊模型,指顶点可以分成两个不相交的集使得在同一个集内的顶点不相邻(没有共同边)的图. 下图是一个二分图的例子,红点之间不会相邻,白点之间不会相邻. 判断图中是否存在环 难度:★★ 通过深搜就可以解决了. 欧拉环 难度:★★ 从一个顶点出发,所有的边都只经过一次,最后回到起点.判断一张图中是否存在这样的路径. 哈密尔顿环 难度:★★★★ 从一个顶点出发,所有的顶点都经过一次,最后回到起点.判断一张图中是否存在这样的路径. 这个是一个经典的NP完全问题,目前

数学建模 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

Lingo求解线性规划问题

lingo是一个方便进行求解规划问题的软件,可以很快求出,写好代码后按照下图点击即可. 大致以下几种情况: !变量下界为0的简单线性规划; model: max=4*x1+3*x2; 5*x1+x2>10; x1+x2<8; x2<6; end !下界可以是任何值得简单线性规划; model: max=4*x1+3*x2; 5*x1+x2<14; x1+x2<18; x2<6; @free(x1);@free(x2); end !整数线性规划; model: max=4

用Lingo求解线性规划问题

第一步:输入目标条件和约束条件.每行以分号隔开.然后点击工具栏上的Solve按钮,或Lingo菜单下的Solve子菜单. 第二步:检查report中的结果. 默认情况下,Lingo不进行灵敏度分析. 需要在Lingo中一下配置才可以生成灵敏度分析报告:Lingo菜单>Options. General Solver选项卡>Dual Computations:Prices and Ranges. 然后点击Apply按钮. 重新点击Solve菜单和Range菜单以生成如下灵敏度分析报告(Range

TSP旅行商问题的Hopfield求解过程

  连续型Hopfield在matlab中没有直接的工具箱,所以我们们根据Hopfield给出的连续行算法自行编写程序.本文中,以求解旅行商 问题来建立Hopfield网络,并得到解,但是该解不一定是最优解,用Hopfield得到的解可能是次优解,或没有解.直接上问题: 8个城市的坐标: 0.100000000000000 0.1000000000000000.900000000000000 0.5000000000000000.900000000000000 0.100000000000000

图论中一类问题的总结 :必须边(点) 可行边(点)

很多图论问题之所以复杂 是因为这个模型本身是不唯一的,举个例子,一个二分图的最大匹配可能有很多个,而一个无向图的MST(最小生成树)也可能有不同的形态,这就导致了这样一类问题的诞生:1.某条边(或点)是否是满足这个模型的前提下必须存在的 2.可不可能使得这条边存在的前提下满足这个模型 当然这个问题还可以延伸出许多变种,例如所有边都是必须边,那么这个模型唯一 1.无向图固定起点S和终点T,某条边是否能够成为S-T最短路上的一条边? 这个问题比较容易,对S和T 分别做一次SSSP(单源最短路),到各

【算法】关于图论中的最小生成树(Minimum Spanning Tree)详解

喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 本节纲要 什么是图(network) 什么是最小生成树 (minimum spanning tree) 最小生成树的算法 什么是图(network)? 这里的图当然不是我们日常说的图片或者地图.通常情况下,我们把图看成是一种由"顶点"和"边"组成的抽象网络.在各个"顶点"间可以由"边"连接起来,使两个顶点间相互关联起来.图的结构可以描述多种复杂的数据对象,

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

最近zkx大佬在学图论,有一些定义很秀,压根读不懂,所以按照自己的理解来总结一下. 顶点集合 顶点集合:是原图中 点 的集合. 割点集合 割点集合:是个 顶点集合,在原 连通图 中删去 集合中的所有的点 和 与集合中的点相连的边 后,原 连通图 不再连通. 点连通度 点连通度:最小 的 割点集合 的大小(最小的割点集合中的点的个数). 割边集合 割边集合:是个 边 的集合,在原 连通图 中删去 集合中所有的边 后,原 连通图 不再连通. 边连通度 边连通度:最小 的 割边集合 的大小(最小的割边