《运筹学B》实验指导书(2版)(3)

2019-09-01 10:25

50人,B处40人,C处60人,D处20人,E处70人,F处90人,问小学应建在哪一个村子,使学生上学最方便(走的总路程最短)。

四、实验报告要求

实验报告要求包含下面几个部分: (1) 阐述实验目的; (2) 问题; (3 数学模型 (4 计算程序 (5 计算结果;

(6 分析、检验和结论; (7 心得体会;

10

实验二:Lingo求解最大流、最小费用流问题 一、实验目的

通过本实验熟悉Lingo软件中的集合、运算、编辑等命令,了解最大流和最小费用的数学规划模型;能利用最大流和最小费用流的思想建立实际问题的数学模型,并利用Lingo求解。

二、问题及其Lingo软件求解 (1)最大流问题

假设有一个有向网络图G(V,E),对于每条弧(Vi,Vj)有一个非负的权cij,称为该弧的

容量。图中有两个点,一个称为发点,记为S,它只有出弧,没有入弧,即只有流出而没有流入;另一个称为收点,记为t,它只有入弧,而没有出弧,即只有流入而没有流出。这样的网络称为运输网络。

对于运输网络,是定义实值函数f,对于每条弧(Vi,Vj),有一个值f(i,j)与之对应,

f(i,j)表示弧(Vi,Vj)上的流量。假设f(i,j)满足下列条件:

(1)对每条弧,流量不超过容量,即0?f(i,j)?cij。 (2)发点S流出的总量等于收点t流入的总量;

(3)对于除发点和收点之外的任一点,流入该点的总量等于流出该点的流量; 则称该函数为网络图G(V,E)上的一个可行流。令V(f)??i?Vf(s,i),称V(f)为可行流f

的流量。若存在一个可行流f,使得V(f)最大,则称可行流f为最大流。 最大流的数学模型为:

minv(f)??v(f),i?s?(p3) ???f(i,j)??f(j,i)???v(f),i?t

s.t.?j?Vj?V?0,i?s,t????0?f(i,j)?cij,(vi,vj)?E例题2-1 现需要将城市S的石油通过管道运送到城市t,中间有4个中转站v1,v2,v3和v4, 城市合中转站的连接以及管道的容量如下图所示,求城市s到城市t的最大流.

11

解:现求上述问题的最大流,根据上述数学模型,给出Lingo模型如下:

model: sets:

nodes/s,1,2,3,4,t/; arcs(nodes, nodes)/

s,1 s,2 1,2 1,3 2,4 3,2 3,t 4,3 4,t/: c, f; endsets data:

c = 8 7 5 9 9 2 5 6 10; enddata max=flow;

@for(nodes(i) | i #ne# 1 #and# i #ne# @size(nodes): @sum(arcs(i,j):f(i,j)) - @sum(arcs(j,i):f(j,i))=0); @sum(arcs(i,j)|i #eq# 1 : f(i,j)) = flow; @for(arcs: @bnd(0, f, c));

运行得到求解报告为:

Global optimal solution found at iteration: 0 Objective value: 14.00000

Variable Value Reduced Cost FLOW 14.00000 0.000000 F( S, 1) 7.000000 0.000000 F( S, 2) 7.000000 0.000000 F( 1, 2) 2.000000 0.000000 F( 1, 3) 5.000000 0.000000 F( 2, 4) 9.000000 -1.000000 F( 3, 2) 0.000000 0.000000 F( 3, T) 5.000000 -1.000000 F( 4, 3) 0.000000 1.000000 F( 4, T) 9.000000 0.000000

故最大流为:

f(s,1)=7, f(s,2)=7, f(1,2)=2, f(1,3)=5, f(2,4)=9, f(3,2)=0,

f(3,t)=5, f(4,3)=0, f(4,t)=9.流量为v(f)=14。最大流网络见下图。

V1

(9,5) V3

(5,5)

t

7) (8, (5,2)(2,0)s (7,7) 8 (6,0) (10,9)

(9,9)

12

上面程序用到了稀疏集的方法。若用邻接矩阵的方法,程序可推广到复杂网络。 Lingo模型为: sets:

nodes/s,1,2,3,4,t/;

arcs(nodes, nodes): p, c, f; endsets data:

p = 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0; c = 0 8 7 0 0 0 0 0 5 9 0 0 0 0 0 0 9 0 0 0 2 0 0 5 0 0 0 6 0 10 0 0 0 0 0 0; enddata max = flow;

@for(nodes(i) | i #ne# 1 #and# i #ne# @size(nodes):

@sum(nodes(j): p(i,j)*f(i,j)) = @sum(nodes(j):p(j,i)*f(j,i)) ); @sum(nodes(i):p(1,i)* f(1,i)) = flow; @for(arcs:@bnd(0, f, c));

注;上面程序中矩阵P为邻接矩阵,当两点无弧时,定义弧的容量为0。 (2)最小费用最大流问题

例题2-2 在上面例题3中,由于输油管道的长短不一,每条输油管道上的单位石油的运输费用也不相同,因此,除考虑输油管道的最大流外,还需考虑输油管道的输送石油的总费用,现求最小费用最大流。 下面给出了带有费用的运输网络,其中第一个数字表示网络容量,第二个数字表示网络的单位费用。

V1 (9,2) V3 2) (8,s (5,6)

t

(5,5)(2,1) 8 (6,4) (10,7)

(7,8) (9,3)

解:假设f(i,j)表示弧(Vi,Vj)上的流量,cij为弧(Vi,Vj)的单位运费,uij为弧(Vi,Vj)的容量,di表示节点Vi的净流量,则最小费用最大流可表示为如下数学规划问题:

13

min(p4)

?c(i,j)?Eijfij??f(i,j)??f(j,i)?di ?j?Vs.t.?j?V??0?f(i,j)?uij,(vi,vj)?E其中

?v(f),i?s?di???v(f),i?t

?0,i?s,t?当取v(f)为最大流时,由规划问题(p4)求到的最大流,就是最小费用最大流。上述问题的Lingo程序为:

sets:

nodes/s,1,2,3,4,t/:d; arcs(nodes, nodes)/

s,1 s,2 1,2 1,3 2,4 3,2 3,t 4,3 4,t/: c, u, f; endsets data:

d = 14 0 0 0 0 -14;

c = 2 8 5 2 3 1 6 4 7; u = 8 7 5 9 9 2 5 6 10; enddata

min=@sum(arcs:c*f);

@for(nodes(i) | i #ne# 1 #and# i #ne# @size(nodes): @sum(arcs(i,j):f(i,j)) - @sum(arcs(j,i):f(j,i))=d(i)); @sum(arcs(i,j)|i #eq# 1 : f(i,j))=d(1); @for(arcs:@bnd(0,f,u));

运行得到求解报告:

Global optimal solution found at iteration: 3

Objective value: 205.0000

Variable Value Reduced Cost F( S, 1) 8.000000 -1.000000 F( S, 2) 6.000000 0.000000 F( 1, 2) 1.000000 0.000000 F( 1, 3) 7.000000 0.000000 F( 2, 4) 9.000000 0.000000 F( 3, 2) 2.000000 -2.000000 F( 3, T) 5.000000 -7.000000

14


《运筹学B》实验指导书(2版)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:肠内营养指南

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: