动态规划-图论

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§1动态规划模型
如图所示,给定一个线路网络,两点之间连线上的数字表示
两点间距离,试求一条从A到E的路线,使总距离为最短。

Mattlab求解:
首先利用Excel建立两个工作表edge和n分别存储图的上三
角阵和顶点数量。

其中edge=
99999 5 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 3 7 99999 99999 99999 99999 99999 99999 99999 99999 6 3 99999 99999 99999 99999 99999 99999 99999 99999 99999 6 99999 99999 99999 99999 99999 99999 99999 99999 3 8 99999 99999 99999 99999 99999 99999 99999 99999 1 99999 99999 99999 99999 99999 99999 99999 99999 99999 3 99999 99999 99999 99999 99999 99999 99999 99999 7 99999 99999 99999 99999 99999 99999 99999 99999 99999
n=9,然后在Matlab调入以上数据。

同时将自编的动态规划
软件“dynamic.m”调入当前目录之中,在Matlab命令窗口
输入dynamic,回车后则在窗口显示出路径Path 和距离distance
§2 最小生成树
例1 某工厂要架设局域网联通工厂各个部门。

已知工厂有7个部门,各个部门间铺设网线的距离如上图所示,计算出铺设网线的最短距离。

Matlab 的算法:
首先,将上图的邻接矩阵存储为G ,顶点数存储为N ;即:G=
99999 50 60 99999 99999 99999 99999 50 99999 99999 65 40 99999 99999 60 99999 99999 52 99999 99999 45 99999 65 52 99999 50 30 42 99999 40 99999 50 99999 70 99999 99999 99999 99999 30 70 99999 99999 99999
99999 45 42 99999 99999 99999
2
5
3
1
4
7
6
50
60 45
65
52
40
50
70
30
42
N=7,然后调入到Matlab 命令窗口中,另外将自编程序prim.m 存放到当前目录中,最后,输入prim 后回车。

打开变量result ,即可看见最小生成树的连接方式。

例2 某六个城市之间的道路网如下图所示,要求沿着已知长度的道路联结六个城市的电话线网,使得电话线的总长度最短。

§3 最短路
例3 如下图所示的交通网络,边上的权重代表城市之间的距离,求城市1的最短路径。

v 5
v 6
v 2
v 4
6
2
7
5
3
5 4 4
1 V1
v 3
Matlab的算法:
首先,将上图的邻接矩阵存储为G,顶点数存储为N;即:G=
99999 10 99999 30 100
99999 99999 50 99999 99999
99999 99999 99999 99999 10
99999 99999 20 99999 99999
99999 99999 99999 60 99999
N=5,然后调入到Matlab命令窗口中,另外将自编程序dijkstra.m存放到当前目录中,最后,输入dijkstra后回车。

打开变量path,即可看见最最短路的连接方式。

例4: 如下图所示的单行线交通网,每个弧旁边的数字表示这条单行线的长度。

现在有一个人要从v1出发,经过这个交通网到达v8,要寻求是总路程最短的线路。

v 6
v 4
v 8 9
1
V 1
v 5
§4 网络最大流
如上图所示,每条弧相关的括号中,第一个数据表示该条弧的容量,第二个表示该弧流量,最大流量必须满足以下条件的限制: 1. 可行性条件:
xi>=0, x1<=3, x2<=5, x3<=1, x4<=4, x5<=1,
x6<=2, x7<=5, x8<=2
2.始点Vs和收点Vt容量的要求:
X1+x2<=8, x7+x8<=7
3.流量平衡要求
总流入量和总流出量相同:
X1+x2-x7-x8=0
4.内节点流入量和流出量相同:
X1+x5-x3-x4=0
X2+x3-x6=0
X6-x5-x8=0
X4-x7=0
目标函数为:max z=x1+x2
软件求解:Matlab函数:linprog(线性规划), ip(整数规划)Lindo软件求解结果如下:
OBJECTIVE FUNCTION V ALUE
1) 5.000000
V ARIABLE V ALUE REDUCED COST
X1 3.000000 0.000000
X2 2.000000 0.000000
X3 0.000000 1.000000
X4 3.000000 0.000000
X5 0.000000 0.000000
X6 2.000000 0.000000
X7 3.000000 0.000000
X8 2.000000 0.000000
例5.如下图所示为一城市水管网络流量图,试求一条从始点Vs 到收点Vt的最大流
§5最小费用最大流问题
网络最大流只考虑了流量的问题,实际在运用时还有“费用”因素存在。

人们总是希望在得到最大流的同时,使费用最少,这就是最小费用最大流问题
如上图所示:括号里第一个数字表示最大容量,第二个数字表示单位流量的费用,第三个表示待求实际流量。

从前面可知,网络的最大流问题的解不唯一,我们可以分别计算两次线性规划求出最小费用最大流,求解过程如下:
v t
24v s
(1)建立求解最大流的线性规划模型,求出最大流
(2)将求出的最大流作为已知限制条件,构建求解最小费用最大流的线性规划模型。

由前面已经求出最大流为5,则将x1+x2=5作为增加的约束条件,另将目标函数改为:
Min z=2x1+3x2+x3+5x4+2x5+4x6+x7+2x8
即线性模型如下:
Min 2x1+3x2+x3+5x4+2x5+4x6+x7+2x8
st
x1<=3
x2<=5
x3<=1
x4<=4
x5<=1
x6<=2
x7<=5
x8<=2
X1+x2<=8
x7+x8<=7
X1+x2-x7-x8=0
X1+x5-x3-x4=0
X2+x3-x6=0
X6-x5-x8=0
X4-x7=0
x1+x2=5
运用Lindo求解,可得结果如下:
OBJECTIVE FUNCTION V ALUE
1) 42.00000
V ARIABLE V ALUE REDUCED COST
X1 3.000000 0.000000
X2 2.000000 0.000000
X3 0.000000 1.000000
X4 3.000000 0.000000
X5 0.000000 6.000000
X6 2.000000 0.000000 X7 3.000000 0.000000 X8 2.000000 0.000000。

相关文档
最新文档