function dialsuanfa(T)
%程序说明
clc
disp('========================================================================================');
disp('                   《基于LOGIT的STOCH配流法——dial算法》');
disp('运行环境:MATLAB 8.3.0.532 ');
disp('作者信息:兰州交通大学  刘志祥   QQ:531548824');
disp('说明:本程序用于进行静态配流,缺点是有效路径的界定太过严,请读者根据需要进行修改。');
disp('     dial算法分四大步骤:一是求最短路,二是求边权似然数,三是求路权,四是配流');
disp('========================================================================================');
disp('按任意键继续...');
pause;

%数据获取,人机交互
disp('请按照提示输入以下参数');
    Q=input('总需求量  :');
thita=input('参数thita :');
r=input('起 点  :');
s=input('终 点  :');
n=size(T,1);

%初始化
L=zeros(n,n);
W=zeros(n,n);
X=zeros(n,n);

%求最短距离矩阵
disp('第一步:求最短距离,其中');
disp('------------------------------------------------------------------------------------------');
disp('   R—起点r到其他点的最短距离');
disp('   S—其他点到终点s的最短距离');
disp('按任意键继续...');
pause;
Tmin=zuiduanjulijuzhen(T);
R=Tmin(r,:)
S=Tmin(:,s)'%注意因为方向性,这里作转置处理

%找上游节点和下游节点(显然up和down互为转置——对称,因为若j是i的下游节点,则i必是j的上游节点)
for i=1:n
    for j=1:n
        if T(i,j)~=0&&T(i,j)~=inf
            down(i,j)=1;
            up(j,i)=1;
        else
            down(i,j)=0;
            up(j,i)=0;
        end
    end
end
down;
up;

%计算边权
disp('第二步:计算边权似然值(任意键继续)');
disp('------------------------------------------------------------------------------------------');
pause;
for i=1:n
    for j=1:n
        if down(i,j)~=0
            if R(i)<R(j)&&S(i)>S(j)
                P=1;
            else
                P=0;
            end
            L(i,j)=P*exp(thita*(R(j)-R(i)-T(i,j)));
        end
    end
end
L

%计算路权
disp('第三步:计算路权(任意键继续)');
disp('------------------------------------------------------------------------------------------');
pause;
for i=1:n
    for j=1:n
        if down(i,j)~=0
            if R(i)<R(j)&&S(i)>S(j)
                if i==r
                    W(i,j)=L(i,j);
                else
                    W(i,j)=L(i,j)*(up(i,:)*W(:,i));
                    %这是核心句,先找到上游节点,再写出上游节点到i的W值(若还没有,则递归直到能够算出),请仔细查阅路权的算法好好理解。
                end
            end
        end
    end
end
W

%配流
disp('第四步:配流(任意键继续)');
disp('------------------------------------------------------------------------------------------');
pause;
for i=n:-1:1
    for j=n:-1:1
        if down(i,j)~=0
            if R(i)<R(j)&&S(i)>S(j)
                if j==s
                    X(i,j)=Q*W(i,j)/((up(j,:)*W(:,j)));
                else
                    X(i,j)=X(j,:)*down(j,:)'*W(i,j)/(up(j,:)*W(:,j));
                    %注意X(j,:)是1*n行向量,down(j,:)是1*n行向量,因此要将down向量转置为1*n的列向量才能相乘。
                end
            end
        end
    end
end
X
disp('==========================================================================================');

disp('<程序运行完毕>');

例:某路网如图所示,阻抗已标注于边上(这里阻抗用距离值表示),总需求为1000,起点为v1,终点为v9,θ=1。请用经典dial算法进行配流。

解:(1)写权值矩阵

quanzhijuzhen=[
     0     2   Inf     2   Inf   Inf   Inf   Inf   Inf
   Inf     0     2   Inf     2   Inf   Inf   Inf   Inf
   Inf   Inf     0   Inf   Inf     2   Inf   Inf   Inf
   Inf   Inf   Inf     0     1   Inf     2   Inf   Inf
   Inf   Inf   Inf   Inf     0     1   Inf     2   Inf
   Inf   Inf   Inf   Inf   Inf     0   Inf   Inf     2
   Inf   Inf   Inf   Inf   Inf   Inf     0     2   Inf
   Inf   Inf   Inf   Inf   Inf   Inf   Inf     0     2
   Inf   Inf   Inf   Inf   Inf   Inf   Inf   Inf     0];

(2)带入程序(格式整理后输出如下)

说明:图形表示如下

配流01—DIAL算法(经典)相关推荐

  1. 配流02—DIAL算法(改进)

    欢迎使用Markdown编辑器写博客 function dialsuanfaxishujuzhen(T) %程序说明 clc disp('=============================== ...

  2. Algorithm之PrA:PrA之IP整数规划(包括0-1整数规划)算法经典案例剖析+Matlab编程实现

    Algorithm之PrA:PrA之IP整数规划算法经典案例剖析+Matlab编程实现 目录 分枝定界法 整数规划例题 0-1整数规划实例 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所 ...

  3. 综合算法03—FrankWolfe_BPR配流算法

    %% 算法符号及程序说明 %说明:本程序为采用美国联邦公路阻抗函数BPR时的frankwolfe算法,考虑了换乘(已经将等待时 %间考虑在内并在K短路的确定过程中计算)及拥挤附加时间,在路网情况已知时 ...

  4. 配流05—增量配流算法

    说明:指定两点间的客流需求总量,建立费用函数(阻抗函数),一般情况下费用是流量的函数,就可以运用增量配流法配流,核心还是全有全无算法,只是该方法把流量等分为N份,每次全有全无配流1份,直至流量全部被加 ...

  5. 配流03—全有全无配流算法(1)

    说明:指定两点间的客流需求总量,建立费用函数(阻抗函数),一般情况下费用是流量的函数,就可以运用全有全无算法进行配流. step1:建立费用函数m文件:feiyonghanshu.m function ...

  6. DIAL算法计算单位流率-python实现

    dail算法 DIAL算法又称STOCH算法,它基于路段分配流量,并将OD量仅仅加载到连接OD对的有效路径上,成功避免了路径枚举,被公认为是相当高效的Logit型随机网络加载算法.也就是说,DIAL算 ...

  7. 限流——漏桶算法和令牌桶算法的区别

    文章目录 限流 漏桶算法 令牌桶算法 漏桶算法和令牌桶算法的区别 时间窗口 时间窗口和令牌桶优缺点 限流 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流 缓存:缓存的目的是提升系统访问速度 ...

  8. Algorithm之PrA:PrA之LP线性规划算法经典案例剖析+Matlab编程实现

    Algorithm之PrA:PrA之LP线性规划算法经典案例剖析 目录 一.以例题分析步骤理解LP线性规划算法 二.Matlab编程实现 三.将问题可以转化为线性规划的问题 四.建模思路全过程 一.以 ...

  9. 车道线检测算法经典编程

    车道线检测算法经典编程 车道线曲线拟合算法编程 计算经过(50,50),(90,120),(70,200)三点的Catmull_Rom样条曲线. IplImage* img = cvCreateIma ...

最新文章

  1. mysql 源头锁,mysql 使用手册 - 追梦,一个伟大程序员的源头。 - OSCHINA - 中文开源技术交流社区...
  2. [转] Ubuntu/Linux Mint/Debian 安装 Java 8
  3. Serverless X OpenKruise 部署效率优化之道
  4. python线程监控_Python实现线程状态监测简单示例
  5. 调整linux系统时区
  6. (STL,set,priority_queue)丑数
  7. 【参与开源】J2EE开源项目JEECG快速开发平台,欢迎广大技术爱好者参与,第三期招募新成员
  8. linux内核开源不能仿照_Linux内核开发,开源生产力工具,使用Google应用程序创建自动日历等
  9. 白月黑羽教python_白月黑羽Python在线教程
  10. python mysql编码_Python和MySql:Unicode和编码
  11. 以锅炉安全为例,台账管理在安全建设中的作用
  12. 遗传算法bp神经网络原理,bp神经网络和遗传算法
  13. 定积分证明题例题_一个广义积分不等式证明(送给数学分析同学)
  14. 【Python】全局变量(含义、使用要求、代码调试步骤)
  15. 任正非、董明珠、曹德旺,中国实业三大网红!他们有个共同点:坚决不做一件事!
  16. python ansible
  17. java葫芦娃喜羊羊格斗_课内资源 - 基于JAVA的葫芦娃大战妖怪
  18. Leetcode 32 最长合法括号子序列
  19. intell IDE初始用
  20. 服务器 u盘制作系统盘,制作U盘系统盘(WinToFlash)

热门文章

  1. 【backtrader保姆级教学】日内区间突破型策略
  2. 【Linux】主函数的三个形参
  3. 安排 , 2021新冠疫情防控指挥作战平台(视频+课件+代码+资料)
  4. 2022腾讯云年终双十一活动攻略汇总!
  5. K210学习笔记(十)——二维码识别
  6. 百度凤巢计划,中华英才网有点烦
  7. Linux勒索软件,[图]发现针对Linux服务器和代码库的勒索软件
  8. element中table多选功能禁止选择某一项
  9. QPS和TPS是什么
  10. 纸短情长 寄语青春 2021 我们毕业了!