【数学建模】matlab模拟重庆三号线地铁运行

2023-11-26 18:10

本文主要是介绍【数学建模】matlab模拟重庆三号线地铁运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 简介

主要为解决列车运行状态自动监视提供一种可行的思路和方法,通过借助Matlab等已经较为成熟的技术工具,使得软件具备处理大规模数据并显示给调度人员的能力。在研究过程中,主要集中在数据处理和视图显示两个方面,数据是该仿真的核心模块,通过对原始运行状态数据的各种处理,保证该仿真具备实际运用的基本功能,其中创新之处即为通过调用Matlab接口函数,对数据进行矩阵式处理,借助Matlab处理大规模矩阵数据的能力,增强仿真软件的实用性和可靠性。在视图处理方面,主要以列车调度人员为核心进行设计,通过多种方法,把仿真软件对各种数据的处理结果显示在终端,供调度人员分析判断使用。论文最后分析了本设计中存在的不足之处,还需要提高代码的执行效率,并增加完善软件的功能,将会是今后工作中重点研究的方向。

2 部分代码

clc,clear,close all
warning off
feature jit offtic
%重庆轨道三号线全长55.5km,共设39个站点,5个折返站,2个车辆段%折返站:鱼洞、九公里、四公里、龙头寺、江北机场
%车辆段:童家院子车辆段(接轨于龙头寺车站),道角车辆段(接轨于鱼胡路) 
%运行方式:双线双向,右侧运行,通过能力24/h
%下行方向:鱼洞-江北机场 上行方向:江北机场-鱼洞
%时速:最高运行时速75km/h,最低不低于30km/h
%编组:近期6辆编组 962人/列,远期8辆编组 1292人/列
%开行间隔:正向最小行车间隔150s,(鱼洞站实际折返间隔不应大于150s)%设置各站最小 停站时间,取5的整数倍
%换乘站和折返站停车时间不小于30s
global t_zhan;
t_zhan=0.75;
%设置开行间隔 高低峰 傍晚
global t_low;
global t_peak;
global t_night;
t_low=4;
t_peak=3;
t_night=5;global station_P;
global station_Q;
global station_M;
global station_N;
global station_O;
station_P=39;
station_Q=32;
station_M=26;
station_N=12;
station_O=1;
%设置车库位置
global cheku_1;
global cheku_2;
cheku_1=35;%为方便展示效果,车库位置设在容易观察的位置
cheku_2=19;%各时段时刻
t_1_innitial=6.30;
t_2_innitial=8.00;
t_3_innitial=10.00;
t_4_innitial=16.00;
t_5_innitial=18.00;
t_6_innitial=22.30;
%转换为分钟
global t_1_Ditu;%底图时间为原始时间,不需要提前
global t_2_Ditu;
global t_3_Ditu;
global t_4_Ditu;
global t_5_Ditu;
global t_6_Ditu;
t_1_Ditu=fix(t_1_innitial)*60+t_1_innitial-fix(t_1_innitial);
t_2_Ditu=fix(t_2_innitial)*60+t_2_innitial-fix(t_2_innitial);
t_3_Ditu=fix(t_3_innitial)*60+t_3_innitial-fix(t_3_innitial);
t_4_Ditu=fix(t_4_innitial)*60+t_4_innitial-fix(t_4_innitial);
t_5_Ditu=fix(t_5_innitial)*60+t_5_innitial-fix(t_5_innitial);
t_6_Ditu=fix(t_6_innitial)*60+t_6_innitial-fix(t_6_innitial);TQ=20;%向前提前TQ平移时间
global t_1;%列车运行时分区段,需要提前,以保证高峰期前提前出库
global t_2;
global t_3;
global t_4;
global t_5;
global t_6;
t_1=t_1_Ditu-TQ;
t_2=t_2_Ditu-TQ;
t_3=t_3_Ditu-TQ;
t_4=t_4_Ditu-TQ;
t_5=t_5_Ditu-TQ;
t_6=t_6_Ditu-TQ;
%P\Q\M\N\O站之间的运行时分(包含中间站停站时间)
global t_MN;
global t_NM;
global t_QM;
global t_MQ;
global t_PQ;
global t_QP;
global t_ON;
global t_NO;
t_MN=32.5;
t_NM=33.17;
t_QM=13.75;
t_MQ=13.83;
t_PQ=31.83;
t_QP=31.33;
t_ON=30.83;
t_NO=31.17;%设置各站最小折返时间
T_ZHEFAN_P=5;
T_ZHEFAN_Q=5;
T_ZHEFAN_M=5;
T_ZHEFAN_N=5;
T_ZHEFAN_O=3;%冲突约束间隔
global I_FD;
global I_FF;
global I_FD_zhanqian;
I_FD=0.2;
I_FF=0.2;
I_FD_zhanqian=1;
%检查站冲突约束间隔
if (t_peak-t_zhan)<I_FDfprintf('高峰时段发车间隔与停站时间不满足基本发到约束')%error('Cannot calculate with given values')keyboard;%return 继续
elsefprintf('满足基本发到约束');
end%action
GONGXIAN_DFTIME;
JIAOLU_HUAFEN;translation_zhanqian;%站前调整模型一 初始布点平移% 冲突约束调整
% tzcs_Q=Yueshu(QD_ROAD2,QF_ROAD1,I_FD);
% tzcs_M1=Yueshu(MD_ROAD1,MF_ROAD3,I_FD);
% tzcs_M2=Yueshu(MD_ROAD2,MF_ROAD3,I_FD);
% tzcs_N1=Yueshu(NF_ROAD1,ND_ROAD3,I_FD);
% tzcs_N2=Yueshu(NF_ROAD2,ND_ROAD3,I_FD);
% 
%save all_dd-cf_time;
%load('all_dd-cf_time.mat')
Ditu_picture;%铺画底图
CHEDI_JIAOLU_GOUHUA;%车底交路勾画
yunxingxian1234_PICTURE;%铺画运行线
toc%计时

3 仿真结果

img

4 参考文献

[1]闫志鹏. 地铁列车仿真系统研究[D]. 北京交通大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,有科研问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

这篇关于【数学建模】matlab模拟重庆三号线地铁运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426119

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col