用Matlab求最大流量
求的最大流量
建立数学模型:
流量函数:f=
分段容量要求:
内结点流入量等于流出量:
所以数学模型为;
其中ub=[4 6 6 3 4 2 6]'
MATLAB窗口输入:
f=-[1 0 1 0 0 0 0]';
aeq=[1 -1 0 1 1 0 0;0 0 1 -1 0 -1 0;0 0 0 0 -1 1 -1];
beq=[0 0 0]';
lb=zeros(7,1);
ub=[4 6 6 3 4 2 6]'
[x,fval,exitflag]=linprog(f,[],[],aeq,beq,lb,ub)
xx=[x';x';x']; %设置xx的大小(3行7列)以便与aeq(3行7列)点乘,x原来为列,x'则为一行
fx=xx.*aeq %形成网络流量矩阵fx
tfx=round(fx) %对fx取整
p=round(x) %对x取整
bq=aeq*p %若bq=beq,则整流p是可行流
tfv=f'*p %若tfv=fval,则p为网络图的最大整流
执行结果:
x =
fval = -
exitflag =1
fx =
- 0 0 0
0 0 - 0 - 0
0 0 0 0 - -
tfx =
3 -6 0 3 0 0 0
0 0 5 -3 0 -2 0
0 0 0 0 0 2 -2
p = 3
6
5
3
0
2
2
bq = 0
0
0
tfv =-8
可得出:bq=beq=[0 0 0] ',tfv=fval=-8;所以最大可行流流为[3 6 5 3 0 2 2] ',最大流量为8。
用Matlab求最大流量实例2 来自淘豆网m.daumloan.com转载请标明出处.