实验二 图论、动态规划求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西华大学上机实验报告
一、实验目的
1、掌握网络图的计算机输入,求解最小树、最短路、最大流问题。
2、掌握动态规划的基本原理及求解方法,熟悉软件操作,正确完成模型求解过程及分析过程。
二、实验内容或设计思想
1、首先将欲求的网络用计算机语言表达,再用lingo计算软件求出模型问题的解。
2、最小树应用破圈方法求解
3、最大流算法用找流量可增链的方法求解
4、网络最短路运用了动态规划,函数迭代、矩阵运算等的基本原理求解
三、实验环境与工具
计算机,lingo软件,运筹学软件。
四、实验过程或实验数据
1、最短路问题
【例题】给定10个点,各点城市之间的距离和路线如下程序所示。试用LINGO软件解网络最短路。解:(1)lingo程序代码:
!最短路问题;
model:
data:
n=10;
enddata
sets:
cities/1..n/: F; !10个城市;
roads(cities,cities)/
1,2 1,3
2,4 2,5 2,6
3,4 3,5 3,6
4,7 4,8
5,7 5,8 5,9
6,8 6,9
7,10
8,10
9,10
/: D, P;
endsets
data:
D=
6 5
3 6 9
7 5 11
9 1
8 7 5
4 10
5
7
9;
enddata
F(n)=0;
@for(cities(i) | i #lt# n:
F(i)=@min(roads(i,j): D(i,j)+F(j));
);
!显然,如果P(i,j)=1,则点i到点n的最短路径的第一步是i --> j,否则就不是。
由此,我们就可方便的确定出最短路径;
@for(roads(i,j):
P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0)
);
End
(2)计算的部分结果为:
Feasible solution found at iteration: 0
Variable Value
N 10.00000
F( 1) 17.00000
F( 2) 11.00000
F( 3) 15.00000
F( 4) 8.000000
F( 5) 13.00000
F( 6) 11.00000
F( 7) 5.000000
F( 8) 7.000000
F( 9) 9.000000
F( 10) 0.000000
P( 1, 2) 1.000000
P( 1, 3) 0.000000
P( 2, 4) 1.000000
P( 2, 5) 0.000000
P( 2, 6) 0.000000
P( 3, 4) 1.000000
P( 3, 5) 0.000000
P( 3, 6) 0.000000
P( 4, 7) 0.000000
P( 4, 8) 1.000000
P( 5, 7) 1.000000
P( 5, 8) 0.000000
P( 5, 9) 0.000000
P( 6, 8) 1.000000
P( 6, 9) 0.000000
P( 7, 10) 1.000000
P( 8, 10) 1.000000
P( 9, 10) 1.000000
(3)结论:
2、动态规划求解
【例题】书本例6-4
解:(1)lingo程序代码:
Model:
Sets:
Nodes/a,b1,b2,b3,c1,c2,c3,d1,d2,e/:d;
Arcs(nodes,nodes)/a,b1 a,b2 a,b3 b1,c1 b1,c2 b1,c3 b2,c1 b2,c2 b2,c3 b3,c1
b3,c2 b3,c3
C1,d1 c1,d2 c2,d1 c2,d2 c3,d1 c3,d2 d1,e d2,e/:w,p;
Endsets
N = @size(nodes);
D(n) = 0;
@for(nodes(i)|i#LT#n:d(i)= @min(arcs(i,j):w(i,j)+d(j)));
@for(arcs(i,j):
P(i,j)=@if(d(i)#eq#w(I,j)+d(j),1,0)
);
Data:
W=2 5 3 7 5 6 3 2 4 5 1 5 1 4 6 3 3 3 3 4;
Enddata
End
(2)求解结果:
Feasible solution found.
Total solver iterations: 0
Variable Value
N 10.00000
D( A) 11.00000
D( B1) 11.00000
D( B2) 7.000000
D( B3) 8.000000
D( C1) 4.000000
D( C2) 7.000000
D( C3) 6.000000
D( D1) 3.000000
D( D2) 4.000000
D( E) 0.000000
W( A, B1) 2.000000
W( A, B2) 5.000000
W( A, B3) 3.000000
W( B1, C1) 7.000000 W( B1, C2) 5.000000 W( B1, C3) 6.000000 W( B2, C1) 3.000000 W( B2, C2) 2.000000 W( B2, C3) 4.000000 W( B3, C1) 5.000000 W( B3, C2) 1.000000 W( B3, C3) 5.000000 W( C1, D1) 1.000000 W( C1, D2) 4.000000 W( C2, D1) 6.000000 W( C2, D2) 3.000000 W( C3, D1) 3.000000 W( C3, D2) 3.000000 W( D1, E) 3.000000
W( D2, E) 4.000000
P( A, B1) 0.000000
P( A, B2) 0.000000
P( A, B3) 1.000000
P( B1, C1) 1.000000 P( B1, C2) 0.000000 P( B1, C3) 0.000000 P( B2, C1) 1.000000 P( B2, C2) 0.000000 P( B2, C3) 0.000000 P( B3, C1) 0.000000