配流05—增量配流算法
来源:互联网 发布:尤伦斯艺术海报 淘宝 编辑:程序博客网 时间:2024/06/05 06:54
说明:指定两点间的客流需求总量,建立费用函数(阻抗函数),一般情况下费用是流量的函数,就可以运用增量配流法配流,核心还是全有全无算法,只是该方法把流量等分为N份,每次全有全无配流1份,直至流量全部被加载。
例:简单网络如图所示,路径1,2,3的费用分别为c1,c2,c3。网络总流量为200,请用增量配流法进行配流并计算配流后的总费用。
c1=8+0.1*x1;
c2=10+0.25*x2;
c3=15+0.15*x3;
c2=10+0.25*x2;
c3=15+0.15*x3;
step1:建立费用函数m文件:feiyong.m
function [C,n]=feiyong
syms x1 x2 x3 real;
c1=8+0.1*x1;
c2=10+0.25*x2;
c3=15+0.15*x3;
C=vpa([c1;c2;c3],3);
n=length(C);
step2:主程序m文件:zlpl_feiyong.m
syms x1 x2 x3 real
x=[x1;x2;x3];%为了方便使用矩阵进行符号变量替换
clc
disp('========================================================================');
disp(' 《增量配流算法》');
disp('运行环境:MATLAB 8.3.0.532 ');
disp('制 作 人:兰州交通大学 刘志祥');
disp('Q Q:531548824');
fprintf('说 明:本程序用于求解增量配流问题,只需要输入交通需求量及配流次数并提前编\n制费用函数(feiyong.m)即可计算出配流结果。其中:\n');
fprintf(' T-交通需求\n N-配流次数\nC-费用函数\n x-路径流量\nX0-更新后的流量(初始为0)\nC0-更新后的费用\nX1-配流结果\nC1-配流后费用\n Z-目标函数值(Z1,Z2)\n');
disp('=========================================================================');
disp('*********************************');
T=input('输入交通需求量T:') ;
N=input('输入配流次数N:');
ZL=T/N;
disp('已知费用函数为:')
[C,n]=feiyong;
C
C0=C;
disp('*********************************');
disp('解:先初始化费用,令初始流量')
X0=zeros(n,1)
disp('则初始费用为:')
C0=subs(C,x,X0)
cont=0;
%增量配流过程,为了清晰演示,我们输出每一步配流过程,理解程序后自行消除不必要的输出。
while cont<N
m=min(C0);
for i=1:n
if m==C0(i,1)
k=i;
fprintf('费用最小的是C0(%d),即路径%d,',k,k);
end
end
cont=cont+1;
fprintf('进行第%d次全有全无配流:\n',cont);
disp('————————————————————————————');
X0(k)=X0(k)+ZL
C0=vpa(subs(C,x,X0),3)
disp('————————————————————————————');
end
fprintf('流量已完全加载,配流结束,结果为:\n');
X1=X0
C1=subs(C,x,X1);
disp('则路径的费用更新为:')
C1=vpa(C1,3)
Xx=[0;0;0]; %积分下界
Xs=X1; %积分上界
for i=1:n
JC(i)=int(C(i),Xx(i),Xs(i)); %对每一个路径积分
end
disp('最小费用值为:')
disp('1.积分算法')
Z1=vpa(sum(JC),5) %路径费用求和
disp('2.乘积算法')
Z2=vpa(C1'*X1,5)
step3 :运行主程序
说明:关于最后的费用计算,一般采用第积分算法(结果比较可靠)。本例题中,将T=200的流量5次分配,每次分配40,最终有路径1上120,路径2和3均为40.最小费用为3000.
0 0
- 配流05—增量配流算法
- 增量算法
- 增量式PID算法
- 增量型PID算法
- 如何实现文件增量同步——算法
- 如何实现文件增量同步——算法
- 如何实现文件增量同步——算法
- 如何实现文件增量同步——算法
- 子集生成算法——增量构造法
- 抽取增量数据算法说明
- 【增量算法】三维凸包
- 增量型算式 小算法
- 增量垃圾回收算法原理
- 增量法-插入排序算法
- 增量式PID控制算法
- 增量式PID控制算法
- GC增量算法的理论与实践
- 借助步长增量的搜索算法
- Delphi中Chrome Chromium、Cef3学习笔记(五)
- xshell ssh 退出后进程被杀死
- Redis --- 管理
- 二叉树的建立和遍历算法
- Scalaz(4)- typeclass:标准类型-Equal,Order,Show,Enum
- 配流05—增量配流算法
- Delphi中的四舍五入函数
- Android仿qq登陆界面
- 创建xml文档
- IOS中延时执行的几种方式的比较和汇总
- SoundPool(播放小音频)
- 三种ViewController跳转的异同
- My97DatePicker时间控件使用
- Unicode utf8等编码类型的原理