【Matlab】基于遗传算法的列车发车时刻(发车间隔)优化

news2024/11/25 21:18:59

【Matlab】基于遗传算法的列车发车时刻(发车间隔)优化

  • 一、模型介绍
    • (一)引言
    • (二)符号定义
    • (三)目标函数
    • (四)约束条件
      • 4.1到达乘客数量
      • 4.2乘客进站限制
      • 4.3乘客总数量,上车乘客梳理和车站乘客滞留数量限制
      • 4.4乘客下车数量约束
      • 4.5列车运行约束
      • 4.6发车间隔约束
      • 4.7列车承载量约束
  • 二、案例分析
  • 三、结果展示
  • 四、源码分享

一、模型介绍

(一)引言

这是交通专业常见的优化模型,之前也分享过类似的案例。近期又陆续做了几个列车相关的优化模型,在这里和大家进行分享。
本文主要研究【单线路,固定容量,确定OD和下车比率】,以优化乘客等待数为目标,建立的单目标优化模型,通过优化列车时刻表,结合客流控制手段,城市轨道交通拥挤,减少站台拥堵。
算法选用的遗传算法
编码为实数+结构体编码
根据模型需求,设计了针对性的交叉和变异手段。

(二)符号定义

为了便于大家理解模型,对本文涉及到的符号定义如下:

在这里插入图片描述

(三)目标函数

以车站乘客总滞留人数最少为目标,车站乘客总滞留人数包括了站台上的总滞留人数和未允许进入车站的人数

m i n ⁡ ∑ ( l ∈ L ) ∑ ( r ∈ R ) ( W ( l , r ) + Z ( l , n ) ) min⁡∑(l∈L)∑(r∈R)(W(l,r)+Z(l,n) ) min(lL)(rR)(W(l,r)+Z(l,n))

(四)约束条件

4.1到达乘客数量

相邻两列车发车间隔时间内的乘客到达数量由乘客到达率决定,表示为:

在这里插入图片描述

4.2乘客进站限制

由于高峰时段到站人数较多,为了保障乘客安全和一定的舒适度,要求车站进站乘客与上列车走后滞留在本站站台乘客数之和不超过站台安全限制人数。
在这里插入图片描述

4.3乘客总数量,上车乘客梳理和车站乘客滞留数量限制

在这里插入图片描述

4.4乘客下车数量约束

在这里插入图片描述

4.5列车运行约束

在这里插入图片描述

4.6发车间隔约束

设置最大和最小发车间隔TmaxTmin,优化的目标时段内的所有车辆之间的间隔deltaT均大于Tmin,小于Tmax
在这里插入图片描述

4.7列车承载量约束

每次列车到站,上车后的乘客总量不得大于列车的最大承载量Q
在这里插入图片描述

二、案例分析

本文分析的案例数据不便于公开,感兴趣的可以单独联系

三、结果展示

> 主要是滞留等待的乘客数量分布,未进站的乘客数量分布,列车运行时间,和进化曲线等等。时间有限,不能逐个给大家讲解结果图的含义,有看不懂需要指导的可以单独联系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、源码分享

本项目属于比较常规的列车运行优化模型,采用了固定容量,和确定的客流OD,大大的降低了模型的复杂度。最近还做了一个
同时优化间隔和容量的列车模型,后续有时间了给大家进行分享。
本模型使用了常规的遗传算法(GA),当然您如果想要用其他算法也是可以的,我已经根据模型,写好了初始化算子,交叉算子,变异算子,修复算子和计算目标函数的算子。你把算法框架替换,这些算子可以继续沿用,基本上可以改成任意的算法。
同样的,本文代码的数据接口和参数设置也是支持修改的,只要按照指定的格式将客流量数据和下车比例数据写到excel中,即可实现算例的更改。
总而言之,本文代码适合①想要学习遗传算法的朋友,结合案例,深入理解遗传算法的思想精髓,同时学会如何结合实际问题修改算子。②交通专业的朋友,做相关项目的时候,可以直接借鉴源码,也可以按照我上面所说,对算法框架,算子和数据进行任意修改和拓展,从而达到实现自己模型需求的目的。
> 以上是本人的一些分享,有错误不足之处,希望大家多多批评指正。
在这里插入图片描述
以上是代码全部内容和数据,有需要的可以点击链接:C币下载
或者关注 点赞 加好评,私聊我获取源码。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kyligence Zen产品体验-从人找数据到数据找人

目录 前言: 一、什么是Kyligence Zen? 1、个人总结 2、官方简介 二、1分钟打开新世界大门 个人总结: 1、注册 2、验证登录 三、上手初体验 1、快速上手(入门) 2、定制化应用 四、实战体验 综述: 1、卡…

java transient关键字 JSON序列化问题

今天做项目的时候,遇到了一个奇怪的事情看图: 在这个JSONObject中是有这个object对象的,但是我输出的的却没有这个对象,这是怎么回事? 这样不明显我换一个方式去输出 我在查看了代码之后发现了我的ResponseStatus这…

数据结构-查找-树形结构(二叉排序树、二叉平衡树、红黑树、B树、B+树)查找

目录 一、二叉排序树(BST) 查询 插入 构造二叉排序树 *删除 *查找效率分析 二、二叉平衡树 *插入数据保持平衡 LL ​编辑 RR LR RL 结 *查找效率分析 删除 三、红黑树 *插入 *删除 四、B树 *插入 *删除 五、B树 一、二叉排序树(BST) 定义:二叉排序…

python的opencv操作记录(13)-增强之直方图均衡化

文章目录 直方图增强基本逻辑-均衡化calcHist && equalizeHistcalcHistequalizeHist 自适应直方图均衡化 前段时间忙活深度网络和android的东西去了,好久没讲讲传统图像处理了,这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增…

【谷粒商城之订单服务-RabbitMQ延时队列】

本笔记内容为尚硅谷谷粒商城订单服务锁库存事务最终一致性部分 目录 一、RabbitMQ延时队列 二、具体实现 1、 创建上述队列和路由组件 2、解锁库存 解锁库存的两种情况 1、当订单业务提交后回滚 2、订单取消解锁库存 三、关闭订单 四、消息丢失、挤压、重复等解决方案…

c++ 继承与派生

继承就是在原有类的基础上产生新类,从而减少了代码重复的必要 格式: class A{}; class B:继承方式 A{}; 在c继承中,有以下几点注意 (1)基类的构造函数与析构函数不能被继承 (2)派生类对基类成员的继承没有选择权,不能选择继承…

c++ 常用总结(三)

1.设计模式 GitHub - FengJungle/DesignPattern: Design pattern demo code (一) ① 简单工厂模式 再不学简单工厂模式,就真的要去工厂搬砖啦~_冯Jungle的博客-CSDN博客 通过以下的例子可见,只需要提供产品名称作为参数&…

基于springboot+mysql+SpringDataJPA +html实现学生选课管理系统

基于springbootmysqlSpringDataJPA html实现学生选课管理系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境:4.项目需求 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 管理员&#xf…

【C++】| 03——STL | 迭代器

系列文章目录 【C】| 01——泛型编程 | 模板 【C】| 02——STL | 初识 【C】| 03——STL | 迭代器 【C】| 04——STL | 容器_vector 文章目录 1. 什么是迭代器2. 迭代器的分类3. 不同容器对应的迭代器4. 迭代器的好处5. 迭代器的操作 1. 什么是迭代器 迭代器就是指向容器内元素…

基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计+图像预处理+裂缝检测)

资源地址: 基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计图像预处理裂缝检测)资源-CSDN文库 主要内容: 1、运行Gui_Main.m程序,得到GUI界面 2、首先点击载入图像文件 3、后续便可以点击右侧的其他按钮进行分析…

C++linux高并发服务器项目实践 day10

Clinux高并发服务器项目实践 day10 守护进程进程组会话进程组、会话操作函数守护进程守护进程的创建步骤 线程线程和进程的区别线程之间共享和非共享资源线程操作线程创建线程退出线程参与线程分离线程取消 线程属性 守护进程 在UNIX系统中,用户通过终端登录系统后…

DCMM评估之战略维度沟通

01 数据战略规划过程 过程描述: 过程描述如下:a) 识别利益相关者,明确利益相关者的需求;b) 数据战略需求评估,组织对业务和信息化现状进行评估,了解业务和信息化对数据的需求;c) 数据战略制定,包含但不限于:1) 愿景陈述,其中包含数据管理原则、目的和目标;2) 规划…

SpringCloud 远程调用Feign、网关Gateway、配置中心Nacos、微服务架构小结、Nacos搭建集群

统一检查maven maven依赖出错的解决 注意代码格式化。因代码格式混乱,导致代码出错,pom.xml出现重复的parent标签 学习方法,听得懂为什么要这么做,要远远比 怎么做 重要的多 一、远程调用Feign 能够使用Feign进行远程调用能够…

【C++学习】创建二维动态数组

1.指针 创建二维动态数组_牛客题霸_牛客网 (nowcoder.com) 使用指针的指针 使用指针的指针可以很方便地创建动态的二维数组,其关键在于使用两层指针进行分配。 以下是一个动态创建n行m列的二维数组的示例代码: int **arr new int*[n]; // 创建一个…

深度学习训练营J2:ResNet50v2算法分析与实战

深度学习训练营J2:ResNet50v2算法分析与实战 原文链接环境介绍0.引言论文分析与解读1.ResNet50和ResNet50v2之间的结构对比2.不同结构之间的尝试 3.关于激活的不同尝试4.文章结果 ResNet50v2架构复现5.残差结构6.模块构建7.架构展示以及网络构建 8.网络结构打印ResNet50v2完整结…

Python——1

一、注释 (1)单行注释:#需要注释的内容(#) (2)多行注释:需要注释的内容(三引号) 二、变量及变量类型 1.变量 语法定义:变量名 变量值&#…

【小程序】微信云托管服务

链接 官方文档 云托管官网 特点 无需自提供服务,有云托管平台自动分配,并自动缩容/扩容支持多种语言及模板实例采用容器化管理方式实现服务部署支持小程序内网访问,仅公网测试,提供足够的安全防护,微信用户就近接入…

Python:BeautifulSoup库介绍

BeautifulSoup库介绍 1、BeautifulSoup是Python中的一个第三方库,其最主要的功能是处理HTML文档 ⑴查找HTML文档中的指定标签 ⑵获取HTML文档中指定标签的标签名、标签值、标签属性等 ⑶修改HTML文档中指定标签 2、BeautifulSoup库将HTML文档解析为一…

服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)

文章目录 服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)问题缘由所需环境操作步骤1. 目的服务器设置2. 中间服务器设置3. 修改客户端 总结 服务器如何做端口映射,使服务器之间通信,然后访问目标…

DataX读取Hive Orc格式表丢失数据处理记录

文章目录 问题问题概述问题详细描述 原因解决方法修改源码验证 问题 问题概述 DataX读取Hive Orc存储格式表数据丢失 问题详细描述 同步Hive表将数据发送到Kafka,Hive表A数据总量如下 SQL:select count(1) from A; 数量:19397281使用Dat…