0.背景介绍
为了在满足货运需求的同时,最大化列车开行收益,并且希望保证较高的开行效率(最小化停站次数),以下将列车开行方案及运载量进行建模。
1.模型及符号参数含义
S ——路网络中的车站集
本建模中,共有五个车站,分别为西安,成都,重庆,贵阳,昆明。
在本研究中,分别表示为A-E:
地名 | 成都 | 贵阳 | 重庆 | 西安 | 昆明 |
符号 | A | B | C | D | E |
E ——路网中的区段集
共有5个车站,因此对共有10个区段,分为上下行,即为20种开行班次。
上行方向 | 下行方向 | |||
序号 | 起点 | 终点 | 起点 | 终点 |
1 | 成都 | 贵阳 | 贵阳 | 成都 |
2 | 成都 | 重庆 | 重庆 | 成都 |
3 | 成都 | 西安 | 西安 | 成都 |
4 | 成都 | 昆明 | 昆明 | 成都 |
5 | 贵阳 | 重庆 | 重庆 | 贵阳 |
6 | 贵阳 | 西安 | 西安 | 贵阳 |
7 | 贵阳 | 昆明 | 昆明 | 贵阳 |
8 | 重庆 | 西安 | 西安 | 重庆 |
9 | 重庆 | 昆明 | 昆明 | 重庆 |
10 | 西安 | 昆明 | 昆明 | 西安 |
本建模需要求解的,即为每一个开行班次的频次,以及每一个开行班次的停站方案。
n(e) ——区段e 的通过能力
q(i,j) ——i,j 站间每辆车平均装载的货物吨数,t/车;
q为固定值,本模型中q取7.55;此外,本次建模中,每一班列车的编排车组数量均为8,即为每一趟开行列车的最大运载能力为7.55*8=60.4吨。
C1 ——开行货物列车每吨公里的平均运营收入,元/t·km;
C2 ——每车公里的运营成本,包括线路使用费与机车牵引费,元/车;
C3 ——车站技术作业所需的费用,元/次;
C1, C2, C3为固定值,本模型中C1取2.5; C2=2.16;C3=100;
Q(i,j) ——i,j 站间货流量预测值, i,j属于s ,车/日;
成都 | 贵阳 | 重庆 | 西安 | 昆明 | |
成都 | 0 | 59.14 | 106.12 | 85.55 | 80.19 |
贵阳 | 142.23 | 0 | 85.63 | 69.03 | 64.70 |
重庆 | 133.46 | 44.78 | 0 | 64.77 | 60.71 |
西安 | 196.59 | 65.97 | 118.36 | 0 | 89.44 |
昆明 | 188.34 | 63.20 | 113.40 | 91.41 | 0 |
k ——车站 i,j 间每日可开行的列车数,列/日; k∈[0,a] ,其中 a 为任意 i,j 站间可开行的最大班列数.
成都 | 贵阳 | 重庆 | 西安 | 昆明 | |
成都 | 0 | 1 | 2 | 1 | 1 |
贵阳 | 2 | 0 | 1 | 1 | 1 |
重庆 | 2 | 1 | 0 | 1 | 1 |
西安 | 3 | 1 | 2 | 0 | 1 |
昆明 | 3 | 1 | 2 | 2 | 0 |
d(i,j) —— i,j 站间运价里程,km
成都 | 贵阳 | 重庆 | 西安 | 昆明 | |
成都 | 0 | 993 | 504 | 842 | 1100 |
贵阳 | 993 | 0 | 463 | 1272 | 638 |
重庆 | 504 | 463 | 0 | 790 | 1237 |
西安 | 842 | 1272 | 790 | 0 | 1942 |
昆明 | 1100 | 638 | 1237 | 1942 | 0 |
miu 为快捷货物编组辆数,本模型中,miu=8.
x(k,m) 列车k在m车站是否停车,0表示不停,1表示停车。
该变量也为决策变量,
n(k,i,j)——列车 k 挂运的车站 i,j 间的装车数,车/日;
这个为待求的决策变量。
2.模型的目标函数
本模型的优化目标主要有两个,
1.总的运营收益最大化。
2.总体停站次数最小。
min(Z2)=
为了方便求解,可以将上述两个目标通过一定的系数转化 一个综合指标。
3. 模型的约束条件
1.所有车站间的货运流量需求需要满足。
2.需要保证列车就近停靠
对于所有的i和j,
3.列车开行数量需要满足区间同行能力限制
本模型中,所有车站之间的最大可开行班次均用固定的a表示。
需要满足对于所有的ij组合,k均小于a。
3. 编码方式
每种起终点会对应有3个中途车站,我们可以用3个二进制数表示一种停站方案,共有8种情况,然后每种停站方案再使用3个二进制位表示改种停站方案的开行班次数量。
因此遗传算法的每一个染色体的长度应该为20*(3+3)*8=960;
从前到后的停站方案分别为:
中途站点1 | 中途站点2 | 中途站点3 |
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | … | 1 | 1 | 1 | 0 | 1 | 0 |
共有8个片段,分别表示上述8种停站方案,000表示不停车方案,111表示站站停车的方案,之后的三位二进制表示其对应的班次数量。
遗传算法的种群规模设置为100,最大迭代次数可以设为500或者1000.
代码清单: