交通分配之用户均衡分配模型之三(matlab源码).docVIP

  • 85
  • 0
  • 约1.74千字
  • 约 2页
  • 2019-08-07 发布于江西
  • 举报

交通分配之用户均衡分配模型之三(matlab源码).doc

例 总流量为100,走行函数为: 模型求解的Matlab 源码: syms lambda ; numf = 3; %路径总数 numx = 5;%路段总数 Q=100;%总流量 fid=fopen(D:\Program Files\MATLAB\R2011b\bin\我的matlab\traffic\UECOM.txt,w); %设置运行结果输出文件 T = [4 6 2 5 3 ]; %路段走行时间函数参数 cap = [(0.6/40) (0.9/40) (0.3/60) (0.75/40) (0.45/40) ]; %路段走行时间函数参数 Mxf = [1 0 0 1 0; 0 1 0 0 1 ; 1 0 1 0 1]; % 路段转路径矩阵 % Mfx = Mxf; % 路径转路段矩阵 %========================================================== %以上为程序需要输入的变量 xx= zeros(1,numx); t = zeros(1,numx); t = T + cap .* xx ;%路段走行时间函数 ft = (Mxf * t); %三条路径的走行时间初值。 路径1为路段1,4 ,路径2为路段2,5 ,路径3为路段1,3,5 N= 15; %最大迭代次数,也可使用其他收敛条件 [Min,index] = min(ft) ; xx = Mxf(index,:).*Q ; % 全有全无法为最短路径上的路段分配流量 for i =1 :N y = zeros(numx); %辅助路段流 t = T + cap .* xx ;%路段时间 ft = (Mxf * t) ; %路径时间 fprintf(fid,\n===========================================================================\n ); fprintf(fid,\n\n第 %2d 次迭代的 路径时间值:\n , i ); for (ii = 1: numf) fprintf(fid,%11.4f : ,ft(1,ii) ); end [Min,index] = min(ft) ; y = Mxf(index,:).*Q ; % 全有全无法为最短路径上的路段分配流量 fprintf(fid,\n第 %d 次迭代的 辅助流量值是:\n , i); for (ii = 1: numx) fprintf(fid,%11.4f: ,y(1,ii) ); end zz = xx + lambda * (y-xx); % 按方向(y-xx)进行一维搜索,步长为lamda t = T + cap .* zz ; f = sum( (y -xx).* t ,2); lambda1 =double( solve(f)) ; %求解方程,确定步长。 k = length(lambda1); % 如步长lambda1的解不唯一,取实数,且大于0 小于1; for m=1: k if lambda1(m,1) 0 lambda1(m,1) 1 isreal(lambda1(m,1)) lambda2 =lambda1(m,1); end end xx = xx + lambda2*(y - xx ); % 得到下一步的流量值, 且进行下一次迭代 fprintf(fid,\n第 %2d 次迭代后的路段流量值是:\n , i); for (ii = 1: numx) fprintf(fid,%11.4f: ,xx(1,ii) ); end end status = fclose(all) ft

文档评论(0)

1亿VIP精品文档

相关文档