欢迎使用Markdown编辑器写博客
function dialsuanfaxishujuzhen(T)
clc
disp('======================================================================================');
disp(' 《基于LOGIT的STOCH配流法——改进的dial算法》');
disp('运行环境:MATLAB 8.3.0.532 ');
disp('制 作 人:兰州交通大学 刘志祥');
disp('Q Q:531548824');
fprintf('说 明:本程序用于进行静态配流,在经典Dial算法的基础上进行修改,重新定义了有效路径,使得在用\n户的容忍绕路范围内比原来多走h倍路(一般情况下0<h<1,针对路段T(i,j)),即最多不超过2倍的路程,若\nh=0则等同经典算法.dial算法分四大步骤:一是求最短路,二是求边权似然数,三是求路权,四是配流\n');
disp('======================================================================================');
disp('按任意键继续...');
pause;
disp(' ***请按照提示输入以下参数***');
Q=input('总 需 求 量:');
thita=input('参 数 thita:');
h=input('容忍绕路倍数:');
r=input('起 点:');
s=input('终 点:');
n=size(T,1);
L=zeros(n,n);
W=zeros(n,n);
X=zeros(n,n);
disp('step1->:求最短距离,其中');
disp('---------------------------------------------------------------------------------------');
disp(' R—起点r到其他点的最短距离');
disp(' S—其他点到终点s的最短距离');
disp('按任意键继续...');
pause;
for i=1:n
for j=1:n
if T(i,j)==inf
T(i,j)=0;
end
end
end
T=sparse(T);
Tmin=graphallshortestpaths(T);
[dist,path]=graphshortestpath(T,r,s);
disp('________________________________________________________________');
R=Tmin(r,:)
S=Tmin(:,s)'%注意因为方向性,这里作转置处理
disp('________________________________________________________________');
disp(