Lingo的使用.docx
- 文档编号:1150532
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:8
- 大小:100.23KB
Lingo的使用.docx
《Lingo的使用.docx》由会员分享,可在线阅读,更多相关《Lingo的使用.docx(8页珍藏版)》请在冰豆网上搜索。
Lingo的使用
Lingo使用
——旅游路线最短问题
题目:
从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:
伦敦
墨西哥城
纽约
巴黎
北京
东京
伦敦
-
56
35
21
51
60
墨西哥城
56
-
21
57
78
70
纽约
35
21
-
36
68
68
巴黎
21
57
36
-
51
61
北京
51
78
68
51
-
13
东京
60
70
68
61
13
-
运用lingo软件求解
模型建立前问题分析:
1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先后到达的关系),有些城市之间就可能没有这种关系,所以给出的两两城市距离中有些在最后的最短路线距离计算中使用到了,有些则没有用。
这是一个0-1规划的问题,也是一个线性规划的问题。
2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就导致了这六个城市其中有的两个城市是直接相连的,另外也有两个城市是不连接的。
这就可以考虑设0-1变量,如果两个城市紧接着去旅游的则为1,否则为0。
就如同下图
3.因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。
求解:
为了方便解题,给上面六个城市进行编号,如下表(因为北京是起点,
将其标为1)
北京
伦敦
墨西哥城
纽约
巴黎
东京
1
2
3
4
5
6
假设:
设变量xij。
如果xij=1,则表示城市i与城市j直接相连(即先后紧接到达关系),否则若xij=0,则表示城市i与城市j不相连。
特别说明:
xij和xji是同一变量,都表示表示城市i与城市j是否有相连的关系。
这里取其中xij(I 模型建立: 由于这是一个最短路线的问题,且变量已经设好。 目标函数: minz=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+ 21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56 约束条件: 1.上面目标函数中的变量是表示两个城市是否直接相连接的关系,且最短路线是可以形成圈的,如下图 如上图城市a和城市b有直接相连接的关系,所以之间变量为1,而城市a与城市e则没有直接相连接的关系,之间变量为0。 其余的也有同样约束,所以有下面的约束。 条件1: 变量xij为0-1变量 @bin(xij) 2.最短旅程路线中,每一个城市都要和其他两个城市相连接,即有一个进入路线和一个出去路线,所以含第i个城市的所有变量xij和xji之和为2。 所以又有如下的约束 条件2: 城市1(北京)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x12+x13+x14+x15+x16=2 城市2(伦敦)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x12+x23+x24+x25+x26=2 城市3(墨西哥城)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x13+x23+x34+x35+x36=2 城市4(纽约)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x14+x24+x34+x35+x36=2 城市5(巴黎)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x15+x25+x35+x45+x56=2 城市6(东京)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2 x16+x26+x36+x46+x56=2 则可以编制程序如下 ! 目标函数最小; min=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56; ! 变量0-1约束; ! 城市1(北京)与城市2(伦敦)之间关系变量x12的0-1约束; @bin(x12); ! 城市1(北京)与城市3(墨西哥城)之间关系变量x13的0-1约束; @bin(x13); ! 城市1(北京)与城市4(纽约)之间关系变量x14的0-1约束; @bin(x14); ! 城市1(北京)与城市5(巴黎)之间关系变量x15的0-1约束; @bin(x15); ! 城市1(北京)与城市6(东京)之间关系变量x16的0-1约束; @bin(x16); ! 城市2(伦敦)与城市3(墨西哥城)之间关系变量x23的0-1约束; @bin(x23); ! 城市2(伦敦)与城市4(纽约)之间关系变量x24的0-1约束; @bin(x24); ! 城市2(伦敦)与城市5(巴黎)之间关系变量x25的0-1约束; @bin(x25); ! 城市2(伦敦)与城市6(东京)之间关系变量x26的0-1约束; @bin(x26); ! 城市3(墨西哥城)与城市4(纽约)之间关系变量x34的0-1约束; @bin(x34); ! 城市3(墨西哥城)与城市5(巴黎)之间关系变量x35的0-1约束; @bin(x35); ! 城市3(墨西哥城)与城市6(东京)之间关系变量x36的0-1约束; @bin(x36); ! 城市4(纽约)与城市5(巴黎)之间关系变量x45的0-1约束; @bin(x45); ! 城市4(纽约)与城市6(东京)之间关系变量x46的0-1约束; @bin(x46); ! 城市5(巴黎)与城市6(东京)之间关系变量x56的0-1约束; @bin(x56); ! 条件约束,即每个城市的连接路线约束; ! 城市1(北京)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x12+x13+x14+x15+x16=2; ! 城市2(伦敦)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x12+x23+x24+x25+x26=2; ! 城市3(墨西哥城)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x13+x23+x34+x35+x36=2; ! 城市4(纽约)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x14+x24+x34+x35+x36=2; ! 城市5(巴黎)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x15+x25+x35+x45+x56=2; ! 城市6(东京)有且仅有一个进入路线和一个出去路线,所以和它连接的路线条数为2; x16+x26+x36+x46+x56=2; 运行结果如下 Globaloptimalsolutionfound. Objectivevalue: 212.0000 Extendedsolversteps: 0 Totalsolveriterations: 0 Variable Value ReducedCost X12 1.000000 51.00000 X13 0.000000 78.00000 X14 0.000000 68.00000 X15 0.000000 51.00000 X16 1.000000 13.00000 X23 0.000000 56.00000 X24 0.000000 35.00000 X25 1.000000 21.00000 X26 0.000000 60.00000 X34 1.000000 21.00000 X35 0.000000 57.00000 X36 1.000000 70.00000 X45 1.000000 36.00000 X46 0.000000 68.00000 X56 0.000000 61.00000 Row SlackorSurplus DualPrice 1 212.0000 -1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000 6 0.000000 0.000000 7 0.000000 0.000000 结果说明与分析: 上面显示旅程最短的距离是212 可以看出求出的所有变量的值都是0或1,其中x12=1,x16=1,x25=1,x34=1,x36=1,x45=1,这说明了 城市1(北京)和城市2(伦敦)相连接 城市1(北京)和城市6(东京)相连接 城市2(伦敦)和城市5(巴黎)相连接 城市3(墨西哥城)和城市4(纽约)相连接 城市3(墨西哥城)和城市6(东京)相连接 城市4(纽约)和城市5(巴黎)相连接 形成的圈是“北京 (1)-伦敦 (2)-巴黎(5)-纽约(4)-墨西哥城(3)-东京(6)-北京 (1)”,如下图 最短旅程的旅游线路: 北京→伦敦→巴黎→纽约→墨西哥城→东京→北京(上图外环线) 或者也可以按这条路线的逆方向旅行,即 北京→东京→墨西哥城→纽约→巴黎→伦敦→北京(上图内环线) 总旅程: 51+21+36+21+70+13=212 方法评价: 现代计算机技术运用广泛,它运行速率快,解决了问题广,很多情况下都可以求出最优解;若用手工计算则速度很慢,容易出错,求出来的还可能不是最优解。 所以要充分利用身边的计算机技术来解决生活中的问题。 此题运用lingo软件,它求出来的解通常是最优解。 此题还可以用Hamilton圈法和C-W节约算法,但是这两种方法步骤复杂,而且求出来的不一定是最优解。 感想: 运筹学就是教我们如何优化作业,得到最优解或者满意解。 现实中有许多的事情都需要优化的,当我们去旅游是,我们会考虑走哪些条路线时费用最少;生产物品时,我们要考虑定货批量和库存持有成本与定货成本之间的关系,从而找到最佳的定货批量等等。 这些都需要我们去优化找到比较满意的答案。 大部分生活中实际的问题若用手工去算的话,是十分复杂的。 就像这一题,如果用手工算,则花费的时间要是用lingo软件算时间的几倍甚至更多。 运用软件求解要有基本的软件知识,其次就是读懂题目,脑中有大概的解题思路,接着就是将他们转化为机器语言,即程序。 运行后电脑返
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lingo 使用
![提示](https://static.bdocx.com/images/bang_tan.gif)