- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 LINGO在图论和网络模型中的应用;图是一种直观形象地描述已知信息的方式,它使事物之间的关系简洁明了,是分析问题的有用工具,很多实际问题可以用图来描述。;一、图的基本概念 ;
无圈的连通图称为树,如果一棵树T包含了图G的所有顶点,称T为G的生成树.
如果图G的每条边e都对应一个实数C(e),称C(e)为该边e的权,称图G为赋权图.通常称赋权的有向图为网络.;二、最短路问题;2.算法原理
举例:
图中A,B,...,G表示7个城市,连线表示城市之间有道路相通,连线旁的数字表示道路??长度Wij,现要从城市A到G找出一条最短路线。
该问题有三个阶段,第一阶段从A到B或C,第二阶段到D,E或F,第三阶段到终点G,我们从终点向前倒过来找。;第三阶段,从D,E,F到G的最短路分别为1,3,4,记为f(D)=1,f(E)=3,f(F)=4;
第二阶段,与D,E,F有连线的出发点为B和C,从B出发分别经过D,E,F,至终点G的里程分别为:
WBD+ f(D)=3+1=4
WBE+ f(E)=3+3=6
WBF+ f(F)=1+4=5
故B到G的最短路是上述三者的最小值(4),可以写成f(B)=min{WBj+f(j)}=4,j是上一步考察过的三个点D,E,F;同理f(C)=min{WCj+f(j)},而
WCD+ f(D)=2+1=3
WCE+ f(E)=3+3=6
WCF+ f(F)=1+4=5
故F(C)=3;;第一阶段,出发点只有一个A,从A出发分别经过B,C,至终点G的里程分别为:
WAB+ f(B)=2+4=6
WAC+ f(C)=4+3=7
故A到G的最短路是上述两者的最小值6,可以写成f(A)=min{WAj+f(j)}=6,j是上一步考察过的两个点B,C,现在已经到了起点,结束运算,从A到G的最短路为6。
上述算法可以简写成
N是终点,1是起点, j是与i相联,上一步考察过,且与终点相通、f(j)为已知的点。;编写LINGO程序如下:
model:
sets:
cities/A,B,C,D,E,F,G/: FL; !定义7个城市;
roads(cities,cities)/
A,B A,C
B,D B,E B,F
C,D C,E C,F
D,G
E,G
F,G/: W, P;
!定义哪些城市之间有路相联,W为里程,P用来存放最短路的路径;
endsets;data:
W=2 4 3 3 1 2 3 1 1 3 4;
enddata
N=@SIZE(CITIES);
FL(N)=0; !终点的F值为0;
@for(cities(i) | i #lt# N:
FL(i)=@min(roads(i,j):W(i,j)+FL(j)));
!递推计算各城市F值;
!显然,如果P(i,j)=1,则点i到点n的最短路径的第一步是i -- j,否则就不是。由此,我们就可方便的确定出最短路径;
@for(roads(i,j): P(i,j)=@if(FL(i)
#eq# W(i,j)+FL(j),1,0));
end;部分计算结果:
FL(A) 6
FL(B) 4
FL(C) 3
FL(D) 1
FL(E) 3
FL(F) 4
FL(G) 0
最短路线为 A B D G
以上计算程序是通用程序,对其它图,只需在此程序基础上对数据作一些修改即可。;程序中的语句roads(cities,cities)/ A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/: W, P; 定义的集合称为稀疏集合,本例中cities有7个成员,但是并非每个城市到其它6个城市都有路相通,只有部分城市之间有路,故定义衍生集合roads时用列举法列出有路相通的每对城市 。;2.0-1规划法
用0-1规划法也能求解最短路问题,其思路如下.
设起点为1,终点为n.引入0-1型决策变量Xij,如果弧(i , j)在最短路上,则Xij=1,否则Xij=0.
对于除了起点1和终点n以外的任意一个顶点i,如果, 说明从i出发的所有弧中必然有一条弧在最短路上,也就是说最短路经过该顶点,此时所有从其它顶点到达该顶点的弧中必然也有一条弧在最短路上,因而必有:;
如果 ,说明最短路不经过顶点i,故必有
两种情况可以合并写成 :
对于起点1,则必然满足:
对于终点n,则必有:;目标函数是最短路上的各条弧的长度之和(总里程)最小,于是最短路问题可以用如下0-1规划来描述:
式中 表示全体边的集合
文档评论(0)