综合算法05—考虑换乘的K短路算法

一、问题描述

在路网中,已知站点、线路和线路-站点数据,有条件:
1、考虑到换乘时要花费一定的时间,因此对换乘路径费用要加上换乘时间。
2、当路网复杂时,为了避免多余计算,定义有效路径,使得路径在有效路径范围内。有效路径为最短路径的(1+h)倍。
求满足条件的K短路。

二、算法描述

1.K短路算法:

Step1:令k=1,求出最短路,并加上t换乘;

Step2:k=k+1,求出k短路,并加上t换乘;

Step3:判断,if是有效路径,保存并转Step2;else转Step4;

Step4:删除路径,结束。


2.换乘时间算法(假设换乘时间基于换乘次数):

if 路径所有站点都在线路j上,n=0;

else if 存在i站点,使得起点到i的所有站点都在线路j1上,i到终点的所有站点都在j2上,则n=1;

else if 存在i1、i2,使得起点到i1的所有站点都在线路j1上,i1到i2间所有站点都在j2上,i2到终点的所有站点都在j3上,则n=2;

else n=∞;

t换乘=n*换乘一次的平均时间。

三、算法程序

使用说明:将以下代码分别保存为m文件放在同一个目录下,注意名称不能错,修改案例请打开luwangshuju.m,运行程序请打开KSP.m。
1.fuhaoshuoming.m
fprintf('======================================================================\n');
fprintf('                   《换乘方案算法——不对方案排序》\n');
fprintf('运行环境:MATLAB 8.3.0.532 \n');
fprintf('作者信息:兰州交通大学  刘志祥   QQ:531548824\n');
fprintf('说明:本程序用于在已知路网数据时,通过输入起讫点求直达、一次、二次换乘方案。\n')
fprintf('======================================================================\n\n');
%% 符号体系
%% 路网数据符号
%==========================================================================
% luwangshuju-路网数据,包括站数据(点编号),线数据(线编号),站—线数据(站与线的0-1矩阵,表示站是否在线上),线-站数据(线与站的0-1矩阵,表示线是否包含站),路权数据(如行驶时间或距离)。
% A-起点
% B-终点
% zhan-站集合,本程序中站点以V开头编号
% xian-线集合,可理解为公交车名称,如k102等
% zhan_xian-线与站的关系,表示线路上有哪些站点
%==========================================================================

%% 数据处理符号
%==========================================================================
% zhan_xian_01-线与站的01矩阵,行表示线,列表示站,0表示不在该线,1表示在该线上
% xian_zhan_01-站与线的01矩阵,行表示站,列表示线,0表示线不经过站,1表示经过,与zhan_xian_01互为转置矩阵
%==========================================================================

%% 换乘次数符号
%==========================================================================
% KHc_cishu-换乘次数
% KHc_hcd-换乘点
% KHc_hcqj-换乘区间
% KHc_hcld_a-换乘路段
%==========================================================================

%% K短路算法符号
%==========================================================================
% KPaths-有效路径
% KCosts-有效路径的费用(本文指时间)
%==========================================================================

2.luwangshuju.m
%==========================================================================
% 路网数据
% 运行可得基础路网数据
% 主要计算结果:【输入起讫点 得到路网的站-线-权数据 】
%==========================================================================
%% 输入始发点和目的地
% O=input('O=');
% D=input('D=');
O=2;
D=9;
%==========================================================================

%% 数据for K短路算法
%===================
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值