资源简介
问题描述:已知站点,线路-站点数据,求指定点之间的:
1、 直达线路
2、 一次换乘线路
3、 两次换乘线路
本资源是用matlab编程的代码,从原理上对换乘算法进行了程序化。
代码片段和文件信息
%% 求二次换乘点
%% 计算起讫点的直达线路上的点
zhida %调用直达函数(查看zhida.m)
ZDD_AB=ZDD; %起讫点的直达线路上的点,只是为了第29行用
%% 计算起讫点的一次换乘点
yicihuancheng %调用一次换乘函数(查看yicihuancheng.m)
YCHCD_AB=HCD_1; %起讫点的一次换乘点,只是为了第29行用
%% 计算二次换乘点
E2=D_A; %与A直达的点的集合(矩阵的行是线路,列是站点,表示线路是否包含该站点)
[X2Z2]=find(D_A==1); %Z2为与A直达的点,X2为Z2所在的线路
if isempty(Z2)==0
for i=1:length(Z2)
S2{i}=find(zhan_xian(Z2(i):)==1);
end
S2=unique(cell2mat(S2)); %过与A直达的点的线路
E2(S2:)=xian_zhan(S2:); %把与A直达的点看作起点,求与该起点直达的点的集合
E2(ZDXL:)=0; %去除起讫点的直达线路上的点
E2(HCX_1:)=0; %去除起讫点的一次换乘点
[xian_2_Azhan_2_A]=find(E2==1); %找到[与起点直达的点的直达点对应的线路,与起点直达的点的直达点]
HCD_2ci=intersect(zhan_2_Azhan_B)‘; %找到二次换乘点
else
HCD_2ci=[];
end
%% 计算起点到二次换乘点的换乘点及换成线
if isempty(HCD_2ci)==0
qidian=A;
zhongdian=B;
A=qidian;
B=HCD_2ci; %重新定义起点和终点,即将起讫点分段,第1段:起点-二次换乘点;第2段:二次换乘点-终点
zhida %对新的起讫点重新调用直达函数
yicihuancheng %对新的起讫点重新调用一次换乘函数
HCD_qianmian=setdiff(setdiff(HCD_1ZDD_AB)YCHCD_AB);
%HCD_qianmian表示找第1段起讫点的换乘点即原起讫点的第1个换乘点
HCD_houmian=HCD_2ci; %HCD_houmian表示原起讫点的第2个换乘点
for i=1:length(HCD_qianmian)
index(i)=find(HCD_qianmian(i)==HCD_1);
%index表示对应于HCD_qianmian的换乘方案
end
HCX_qianmian=HCX_1(:index); %求第1段的换乘线
%% 计算二次换乘点到终点的直达路线
A=HCD_2ci;
B=zhongdian;
zhida
HCX_houmian=ZDXL; %第二段的换乘线是二次换乘点到终点的直达线路
else
HCD_qianmian=[]; %防错处理,为了矩阵的正确运算
HCD_houmian=[];
HCX_qianmian=[];
HCX_houmian=[];
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2360 2016-10-31 12:12 ercihuancheng.m
文件 2318 2016-10-31 12:12 fuhaoshuoming.m
文件 813 2016-10-31 16:01 huanchengshuju.m
文件 2272 2016-10-31 14:51 huanchengsuanfa.m
文件 1867 2016-10-30 23:21 yicihuancheng.m
文件 346 2016-10-31 17:04 zhida.m
文件 483 2016-10-31 17:35 程序说明.txt
文件 49080 2016-10-31 16:45 换乘案例路网.vsdx
文件 3705 2016-10-31 17:01 换乘路网.png
文件 334975 2016-10-31 16:41 换乘算法.pdf
----------- --------- ---------- ----- ----
398219 10
- 上一篇:粗糙集matlab程序
- 下一篇:《Matlab时频分析及其应用》的详细代码
评论
共有 条评论