配流02—DIAL算法(改进)

欢迎使用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('________________________________________________________________');


%画出初始图及最短路,边权为阻抗值t
disp(
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值