青岛地铁二号线列车运行图优化系统
青岛地铁二号线列车运行图优化系统
本项目利用优化算法对青岛地铁二号线的列车运行图进行优化设计,提高运营效率,减少乘客等待时间。
项目背景
青岛地铁二号线是青岛市重要的交通干线,连接了多个重要区域。随着客流量的增加,需要对列车运行图进行优化,以更好地满足乘客需求,提高运营效率。
项目目标
- 最小化乘客平均等待时间
- 保证高峰期有足够的运力
- 控制列车满载率在安全范围内
- 优化列车运行效率
- 提供可视化的优化结果分析
实现方法
本项目实现了两种优化算法:
- 粒子群算法(PSO): 模拟群体智能行为,通过粒子在解空间中的移动寻找最优解
- 遗传算法(GA): 模拟自然选择和遗传机制,通过交叉、变异等操作寻找最优解
文件说明
train_schedule_optimizer.py
: 基于粒子群算法的优化实现ga_train_schedule_optimizer.py
: 基于遗传算法的优化实现compare_algorithms.py
: 算法对比工具README.md
: 项目说明文档
优化结果
粒子群算法(PSO)优化结果
经过多次调整和优化,粒子群算法在高峰期时段表现良好:
- 早高峰(7-9点)发车间隔: 3.2分钟
- 晚高峰(17-19点)发车间隔: 3.7分钟
- 平峰时段发车间隔: 10分钟
- 总列车数量: 151列
遗传算法(GA)优化结果
遗传算法也提供一套可行的优化方案:
- 早高峰(7-9点)发车间隔: 3.5分钟
- 晚高峰(17-19点)发车间隔: 4.4分钟
- 平峰时段发车间隔: 8-9分钟
- 总列车数量: 156列
优化过程
- 初步实现基于粒子群和遗传算法的优化程序
- 发现算法容易陷入局部最优解,特别是将所有时段的发车间隔优化为最大值(10分钟)
- 调整评价函数,增强对高客流时段的敏感度
- 增加动态惯性权重调整策略
- 为高峰期增加了特殊约束条件和惩罚因子
- 优化列车运行图的可视化效果
- 增加详细的性能分析和高峰时段对比
- 实现跨平台字体兼容性,解决了中文显示问题
算法比较
两种算法各有优势:
- 粒子群算法(PSO):实现相对简单,参数较少,收敛速度通常较快
- 遗传算法(GA):更加灵活,适应复杂约束条件,但实现复杂度较高
根据运行时间对比,在此问题中PSO算法运行时间约20秒,而GA算法约6秒,但GA算法在平峰时段的处理上表现更为灵活。
使用说明
-
运行单个算法优化:
python train_schedule_optimizer.py # 运行PSO算法 python ga_train_schedule_optimizer.py # 运行GA算法
-
运行算法比较:
python compare_algorithms.py
-
查看优化结果:
- 优化过程图:optimization_process.png, ga_optimization_process.png
- 列车运行图:train_schedule.png, ga_train_schedule.png
- 对比分析图表:headway_comparison.png, waiting_time_comparison.png, load_rate_comparison.png
技术改进
- 惩罚函数优化:通过动态调整惩罚因子,有效处理约束条件
- 高峰期优先策略:为高客流时段设置更高的权重,确保优化结果符合实际需求
- 图形可视化:提供直观的列车运行图和对比分析图表
- 跨平台兼容:解决了不同操作系统(Windows/macOS/Linux)上的中文字体显示问题
最新优化改进
在最新的优化中,我们对PSO算法进行了以下改进:
- 增加了粒子数量(100个)和迭代次数(300次),提高搜索能力
- 引入了时段类型分类,将一天划分为5种不同类型的时段:
- 早高峰核心(7-8点)
- 早高峰过渡(6点和9点)
- 晚高峰(17-19点)
- 平峰(10-16点)
- 低峰(19-23点)
- 为不同时段设定了合理的发车间隔范围
- 改进了粒子初始化策略,确保第一个粒子使用原方案
- 增强了高峰时段的约束惩罚力度
- 增加了对满载率的目标控制
- 优化了可视化分析,提供了更全面的对比图表
目标函数完善
最新的优化中,我们完全按照文档要求实现了目标函数:
F = α·∑(ht/2)·λt + β·∑(ht/h0)
其中:
- ht: 时段t的发车间隔(分钟)
- λt: 时段t的乘客到达客流量(人)
- h0: 原运行图发车间隔(基准值)
- α = 0.8, β = 0.2: 权重系数
约束条件完善
根据论文要求,我增强以下约束条件的处理:
- 最小发车间隔限制: 2分钟 ≤ ht ≤ 10分钟
- 大客流站(如东韩站、五四广场站)停站时间延长到0.7分钟
- 满载率限制: ≤ 120%
- 总列车数限制: N ≤ 30列/方向
- 五四广场站换乘等待时间 ≤ 3分钟
- 折返时间 ≥ 3分钟
结果分析
最新优化结果表明:
- 早高峰和晚高峰时段的发车间隔保持在合理范围内(3.2分钟和3.7分钟)
- 平峰和低峰时段的发车间隔为10分钟,有效节约运营成本
- 总列车数量为151列,比原方案减少约30列
- 所有时段的满载率均控制在安全范围内,早高峰最高满载率约32.5%
- 加权平均等待时间从3.10分钟略微增加到3.77分钟,但总体仍在合理范围内
- 运算速度提高,算法运行时间仅需20.37秒
记录
1: 初始开发
- 目的: 创建基础优化算法
- 完成: 实现PSO和GA算法框架,设计评价函数
- 关键: 选择粒子群和遗传算法作为优化方法
- 技术栈: Python, NumPy, Matplotlib
- 修改文件: train_schedule_optimizer.py, ga_train_schedule_optimizer.py
2: 算法改进
- 目的: 解决算法陷入局部最优的问题
- 完成: 调整评价函数,增加约束条件
- 关键: 为不同时段设定不同权重和约束
- 技术栈: Python, NumPy, Matplotlib
- 修改文件: train_schedule_optimizer.py, compare_algorithms.py
3: 可视化与分析
- 目的: 优化结果展示和分析
- 完成: 增强可视化效果,添加性能分析
- 关键: 设计多种图表展示优化效果
- 技术栈: Python, Matplotlib
- 修改文件: train_schedule_optimizer.py, README.md
4: 最终优化
- 目的: 根据文档要求进行最终优化
- 完成: 重新设计时段分类和约束条件,强化高峰期优化
- 关键: 引入时段类型分类,增强高峰期约束
- 技术栈: Python, NumPy, Matplotlib
- 修改文件: train_schedule_optimizer.py, README.md
5: 目标函数完善
- 目的: 完善评价体系与约束条件
- 完成: 严格按照文档中的目标函数公式F = α·∑(ht/2)·λt + β·∑(ht/h0)优化
- 关键: 调整α=0.8和β=0.2的权重,精确处理各约束条件
- 技术栈: Python, NumPy, Matplotlib
- 修改文件: train_schedule_optimizer.py, README.md