图论之随机配流01——基于LOGIT的STOCH配流法-经典dial算法

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(‘<程序运行完毕>‘);

例:某路网如图所示,阻抗已标注于边上(这里阻抗用距离值表示),起点为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)带入程序(格式整理后输出如下)

说明:图形表示如下

版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。

时间: 2024-10-03 15:11:27

图论之随机配流01——基于LOGIT的STOCH配流法-经典dial算法的相关文章

图论之随机配流02——基于LOGIT的STOCH配流法-改进的dial算法

function dialsuanfaxishujuzhen(T) %程序说明 clc disp('======================================================================================'); disp('                   <基于LOGIT的STOCH配流法--改进的dial算法>'); disp('运行环境:MATLAB 8.3.0.532 '); disp('制 作 人:兰州交通大学

基于Redis实现分布式应用限流--转

原文地址:https://my.oschina.net/giegie/blog/1525931 摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务. 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务. 前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案 -->原文,参考<redis in action> 实现了一个jedis版本的,

基于JavaSE阶段的IO流详解

1.IO流基本概述 在Java语言中定义了许多针对不同的传输方式,最基本的就是输入输出流(俗称IO流),IO流是属于java.io包下的内容,在JavaSE阶段主要学下图所示的: 其中从图中可知,所有输入流类都是抽象类,是InputStream或者抽象类Reader的子类:而所有输出流都是抽象类,是OutputStream或者Writer的子类.输入输出流的定义是根据流向所决定的,我们可以是本地为一个实体物质,从外界往本地输入,按照本地的状态就是读取,反之,从本地向外写入就是输出.IO流是最基本

人脸识别---基于深度学习和稀疏表达的人脸识别算法

介绍 基于深度学习和稀疏表达的人脸识别算法 1 利用VGGFace提取人脸特征 2 PCA对人脸特征进行降维 3 稀疏表达的人脸匹配 Code 1 介绍 本文将介绍一种基于深度学习和稀疏表达的人脸识别算法.首先,利用深度学习框架(VGGFace)提取人脸特征:其次,利用PCA对提取的特征进行降维:最后,利用稀疏表达分类实现特征匹配.我采用CMC曲线评价在AR数据库上的识别性能.最后我还提供了整个过程的code. 2 基于深度学习和稀疏表达的人脸识别算法 2.1 利用VGGFace提取人脸特征 下

PES,TS,PS,RTP等流的打包格式解析之PES流

PES,TS,PS,RTP等流的打包格式解析之PES流 版权声明:本文为博主原创文章,未经博主允许不得转载. 因为工作接触到了各种不同的音视频封装格式,常见的国标PS流,onvif的RTP流和TS流等,都说好记性不如烂笔头,抽空总结下,也好在以后能随时查阅,因水平问题,可能会有地方有疏漏和问题,还请指教 一.PES流 PES流是对原始ES流进行的第一层封装,PES流的基本单位是PES包,由包头和payload组成,ES流即音视频裸流,是从编码器里面出来的原始视频音频流:ES流只包含一种内容,里面

【HEVC帧间预测论文】P1.1 基于运动特征的HEVC快速帧间预测算法

基于运动特征的 HEVC 快速帧间预测算法/Fast Inter-Frame Prediction Algorithm for HEVC Based on Motion Features <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/p/5711333.html 上海大学学报(自然科学版)第19卷第3期. 利用当前深度CU与时域对应位置已编码CU的亮度像素值的差值平方和均值来判断当前CU的运动特征.属于A类算

基于Vivado HLS在zedboard中的Sobel滤波算法实现

 基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard  + Webcam 工具:g++4.6  + VIVADO HLS  + XILINX EDK + XILINX SDK 系统:ubuntu12.04 总体设计思路 sobel 算法理论基础       索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值.在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量. 该

基于matlab mex的平面点集按重心逆时针排序算法

基于matlab mex的平面点集按重心逆时针排序算法,可用于求凸集,代码如下: #include <mex.h> #include <mat.h> #include <stdlib.h> #include <vector> #include <algorithm> using namespace std; typedef struct PointF { int id; double x, y; PointF() { id = -1; } Poi

什么是流,.NET中有哪些常见的流

分析问题 流是一种对于字节流的直接操作.例如在处理一个文件时,本质上需要通过操作系统提供的API来进行文件打开,读取文件中的字节流,再关闭文件等操作,而读取文件的过程就可以看作字节流的一个过程.常见的流类型有文件流.终端操作流.网络Socket等. 在.NET中,System.IO.Stream类型被设计为所有流类型的虚基类,所有常见的流类型都继承自System.IO.Stream类型,当程序员需要自定义一种流类型时,也应该直接或者间接继承自Stream类型..NET提供了丰富的内建的流类型,其