本发明属于机场调度技术领域,具体设计一种基于ga-dqn的停机位分配方法。
背景技术:
社会经济的快速发展,往往会带动民航业的发展,表现之一就是大型枢纽机场航班不断增多、旅客吞吐量屡创新高,这给机场的航班保障能力带来严峻的考验。保障能力不足的话,会引起航班延误,据不完全统计,航班延误是航空消费者投诉的主要原因之一,航班延误引起的纠纷最为突出,经常发生旅客群体性闹事,霸占值机柜台拒绝登机甚至冲入跑道等恶劣事件,严重影响了航空公司和机场等部门的正常运行。
机场的停机位是过站航班在地面停靠的场所,合理化的分配停机位是保障机场地面各项工作顺利的前提,更是机场整体保障能力的重要体现。因此,研究停机位分配问题,不仅可以降低机场的运营成本,还能减少航空公司的油耗损失和旅客的延误损失,在机场实际的运营中有着重大的现实意义和广泛的应用前景。
在优化停机位分配问题的研究过程中,学者们提出了多种智能优化算法,如禁忌搜索算法、遗传算法和deepq-learing等人工智能优化算法。但是这些方法在实际应用中都存在自身的优缺点,如禁忌搜索算法的优点是搜索时能跳出局部最优解以免陷入局部最优,缺点是初始解会直接影响禁忌搜索算法最终结果的优劣;遗传算法的优点是具有较好的全局搜索能力,缺点是算法后期会进行大量冗余的迭代,浪费大量时间;deepq-learing的优点是对信息正反馈处理,缺点是初期搜索能力不强。目前这些算法都不能快速、有效的解决机位分配问题,发明人在本发明的研究过程中发现将特定的优化算法相结合,将其各自的优缺点进行优势互补,对解决上述问题具有重大意义,基于此,提出本发明。
技术实现要素:
针对现有的智能优化算法,无法有效的解决机位分配的问题,本发明提供一种基于ga-dqn的停机位分配方法,该方法将遗传算法和deepq-learing结合,用于解决现有的机场停机位分配方法求解复杂度大且耗时长,难以应用于大规模计算的问题,在减少机场、航空公司和旅客的整体延误损失的问题上具有重要意义。
本发明的是通过以下技术方案实现的:
一种基于ga-dqn的停机位分配方法,包括以下步骤:
(1)构建分配矩阵τ
在当日凌晨获取当日计划航班之后,先将计划航班按照进港时间进行排序,然后将机位依次对应到航班,建立的矩阵为:
t=[b0…bmaxflight](1)
bi表示机位的编号,表示第i航班分配到第bi机位,0≤i≤maxflight,maxflight表示航班最大数量。
(2)初始化种群
对分配矩阵进行随机赋值,得到900-5000个不同的分配矩阵,这1000个不同的分配矩阵就是可行解的集合,命名为初始种群;
(3)计算适应度f
适应度函数的计算公式如下:
公式中,α1为靠桥率,是被分配在近机位的航班数量与总航班数量的比值;α2为偏离度,是所有机位被占用时间的方差;α3为旅客步行距离,是旅客从下机到转盘的距离之和;
分配矩阵出现以下任一情况,适应度为-1:
q1:机型-机位不匹配,指大飞机分配在小机位的情形;
q2:时间冲突,同一机位上存在两架飞机的间隔小于安全间隔;
(4)选择
本过程同标准遗传算法一致,依照适应度做轮盘赌选择;
(5)交叉
引入自适应选择概率,具体公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k1为0.6;
具体过程如下:
step1:随机选择2个分配矩阵,命名为ta,tb。
step2:取i=0;
step3:如果i小于ta的长度,转step4,否则转step7;;
step4:根据公式3求随机数pc,如果pc≥pc,转step5,否则转step6;
step5:ta的第i个元素和tb的第i个元素互换;
step6:i+=1,转step3;
step7:结束;
step8:重复step1-step7共计10-300次;
(6)变异
改进的变异概率的计算公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k3为0.12;
具体过程如下:
step1:随机选择1个分配矩阵,命名为t;
step2:取i=0;
step3:如果i小于ta的长度,转step4,否则转step7;;
step4:根据公式4求随机数pc;如果pc≥pc,转step5,否则转step6;
step5:随机选择两个元素,并更换;
step6:i+=1,转step3;
step7:结束;
step8:重复step1-step7共计5-50次;
(7)获得预排班结果
在步骤(6)结束之后,继续从步骤(3)开始执行,重复步骤(3)到步骤(6)共计200次,获得适应度最大所对应的分配矩阵,即为最优预分配结果;
(8)对分配过程进行机器学习
构建深度学习网络,将计划航班的随机打乱,模拟航班变动的情形,生成10k种不同的计划航班;并分别对10k种不同的计划航班求解对应的最优预分配结果;
(9)再分配作业
如果航班发生了变动,则将新的航班序列作为输入变量,使用构建的深度学习网络,即可获得对应的最优分配矩阵,得到了新的最优分配矩阵即完成了再分配作业。
进一步的,所述步骤(2)初始化种群的步骤如下:
step1:获取航班的个数z1,
step2:计算计划航班中每一个过站航班的离港时间小于近机位关闭时间的停机位,停机位集合用ci表示,置i=1;
step3:判断ci是否为空,如果ci为空集,转step4,如果ci为空集,step9;
step4:ci为空集说明航班无法停在近机位,那么从远机位里寻找停机位给航班停靠,计算远机位延误8个小时空闲出来的停机位,停机位集合用ri表示;
step5:判断ri是否为空,如果ri为空集,转step6,如果ri不为空集,转step8;
step6:ri为空集说明没有空闲出来的远机位,那么取消第i航班,转step14;
step7:ri不为空集,计算当过站航班到港时空闲出来的远机位,停机位集合用rli表示,如rli为空集,转step8,如果rli不为空集,转step9;
step8:rli为空集,那么从集合ri中随机找到一个机位作为航班i停靠的机位转step14;
step9:rli不为空集,那么从集合rli中随机找到一个机位作为航班i停靠的机位,转step14;
step10:ci不为空集,说明过站航班离港时间小于近机位关闭时间,可以从近机位集合里寻找停靠的机位,计算过站航班进港时已经空闲出来的近机位集合用ui表示,如果ui为空集,转step11,如果ui不为空集,step14;
step11:ui为空集说明过站航班进港时,所有近机位都没有空闲出来,那么计算航班延误4个小时之内,有航班空闲出来的近机位,停机位集合用ni表示,如果ni为空集的话,转step12,如果不为空集,转step13;
step12:ni为空集,那么航班i停靠的机位只能从远机位里寻找了,与上述的远机位搜寻方法是一样的,转step14;
step13:ni不为空集,那么从ni里随机选取停机位给航班停靠,转step15,ui不为空集说明航班进港时近机位有空闲的,那么从集合r中随机找到一个机位作为航班i停靠的机位,转step14;
step14:判断i=n是否成立,如果成立,转step15,如果不成立,转step12;
step15:输出可行解,即分配矩阵的集合。
进一步的,所述步骤(8)使用tensorflow2.0,构建深度学习网络,所述深度学习网络的结构如下:
第一层,输入尺寸为f单个元素的长度,为732,输出节点数目为732;优化器使用adam,损失函数使用rme;
第二层,无需指定输入尺寸,输出节点数为732*2;优化器使用adam,损失函数使用rme;
第三层,无需指定输入尺寸,输出节节点数为732*8;优化器使用adam,损失函数使用rme;
第四层,无需指定输入尺寸,输出节节点数为732*4;优化器使用adam,损失函数使用rme;
第五层,无需指定输入尺寸,输出节节点数为732*2;优化器使用adam,损失函数使用rme;
第六层,无需指定输入尺寸,输出节节点数为732;无优化器,损失函数使用rme。
本发明第一个创新点是大规模航班-机位的编码方法。
所述大规模航班-机位是指机场拥有庞大的航班吞吐量和大量的机位,如果分别以航班-机位为横纵坐标建立分配矩阵,占用内存过大。且建立的分配矩阵是稀疏矩阵,极大浪费的内存空间,增加了计算量。以青岛流亭机场为例,有机位57个,航班732架次,建立的矩阵为如下:
ai,j只能取值0或者1。ai,j=1表示第i航班分配到第j机位,ai,j=0表示第i航班不分配到第j机位。
本发明所述的编码方法先将航班按照进港时间进行排序,然后将机位依次对应到航班,建立的矩阵为
t=[b0…b731]
bi表示机位的编号,表示第i航班分配到第bi机位。
可见,t1的尺寸为732*57,而t2的尺寸为732*1,t2占用的内存是t1的1/57。
本发明的第二个创新点是对ga算法的交叉和变异进行改进。
在遗传算法中,交叉概率的值是固定的,这会导致整个算法有很大的盲目性,在遗传算法初期容易收敛于局部最优,在遗传算法后期又会收敛速度过慢,所以本文引入自适应选择概率,这样做是为了保证整个种群个体优良的同时,又加快了算法的求解速度。具体公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k1为0.6;
由上述公式可知,当个体的适应度值大于适应度平均值时,个体适应度值越大说明个体性能优良,则交叉概率pc越小,优良基因保存的机会也就越大,反之则相反。而交叉概率的取值上限k1,也保证了交叉操作的稳定性。
变异概率与交叉概率的改进一样,适应度值越高的个体,它的变异概率就越小,反之,适应度值低的个体,它的变异概率越大,这样设计增加保留较好个体的可能性,使得整个算法趋向于寻优方向。具体公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k3为0.12;
本发明的第三个核心创新点是应用dl算法快速求解机位分配问题。使用tensorflow2.0针对机场的排班问题进行模型构建。其中,深度网络结构分为6层,优化器使用adam,损失函数使用rme,输出层的尺寸为该机场航班的数量。
附图说明
图1为实施例初始化种群流程图;
图2为实施例交叉的流程图;
图3位实施例变异的流程图。
具体实施方式
下面结合具体实施例及附图对本发明做进一步详细说明。
实施例青岛流亭机场的机位分配方法
青岛流亭机场有机位57个,航班732架次。青岛机场在当日凌晨会得到当日的计划航班明细,此时进行的机位分配操作为预分配,该过程为预分配作业。如果当日发生了航班变动,需要对预分配进行调整,该过程为再分配作业。预分配作业对计算速度没有要求,再分配作业要求计算速度快、计算效率高。
(1)构建分配矩阵
在当日凌晨获取当日计划航班之后,先将计划航班按照进港时间进行排序,然后将机位依次对应到航班,建立的矩阵为
t=[b0…b731](1)
bi表示机位的编号,表示第i航班分配到第bi机位。
(2)初始化种群
所述初始化种群是遗传算法的概念,意为不同分配矩阵的集合。
对分配矩阵进行随机赋值,得到1000个不同的分配矩阵。这1000个不同的分配矩阵就是可行解的集合,命名为初始种群。
流程图如附图1所示。
具体过程如下:
step1:获取航班的个数z1,在青岛机场z1=732;
step2:计算计划航班中每一个过站航班的离港时间小于近机位关闭时间的停机位,停机位集合用ci表示,置i=1;
step3:判断ci是否为空,如果ci为空集,转step4,如果ci为空集,step9;
step4:ci为空集说明航班无法停在近机位,那么从远机位里寻找停机位给航班停靠,计算远机位延误8个小时空闲出来的停机位,停机位集合用ri表示;
step5:判断ri是否为空,如果ri为空集,转step6,如果ri不为空集,转step8;
step6:ri为空集说明没有空闲出来的远机位,那么取消第i航班,转step14;
step7:ri不为空集,计算当过站航班到港时空闲出来的远机位,停机位集合用rli表示,如rli为空集,转step8,如果rli不为空集,转step9;
step8:rli为空集,那么从集合ri中随机找到一个机位作为航班i停靠的机位转step14;
step9:rli不为空集,那么从集合rli中随机找到一个机位作为航班i停靠的机位,转step14;
step10:ci不为空集,说明过站航班离港时间小于近机位关闭时间,可以从近机位集合里寻找停靠的机位,计算过站航班进港时已经空闲出来的近机位集合用ui表示,如果ui为空集,转step11,如果ui不为空集,step14;
step11:ui为空集说明过站航班进港时,所有近机位都没有空闲出来,那么计算航班延误4个小时之内,有航班空闲出来的近机位,停机位集合用ni表示,如果ni为空集的话,转step12,如果不为空集,转step13;
step12:ni为空集,那么航班i停靠的机位只能从远机位里寻找了,与上述的远机位搜寻方法是一样的,转step14;
step13:ni不为空集,那么从ni里随机选取停机位给航班停靠,转step15,ui不为空集说明航班进港时近机位有空闲的,那么从集合r中随机找到一个机位作为航班i停靠的机位,转step14;
step14:判断i=n是否成立,如果成立,转step15,如果不成立,转step12;
step15:输出可行解,即分配矩阵的集合。
(3)计算适应度
本过程同标准遗传算法一致。
适应度函数的公式如下:
公式中,
α1为靠桥率,是被分配在近机位的航班数量与总航班数量的比值;
α2为偏离度,是所有机位被占用时间的方差;
α3为旅客步行距离,是旅客从下机到转盘的距离之和。
分配矩阵出现以下任一情况,适应度为-1:
q1:机型-机位不匹配,指大飞机分配在小机位的情形;
q2:时间冲突,同一机位上存在两架飞机的间隔小于安全间隔,在青岛机场,该安全间隔为20min;
(4)选择
本过程同标准遗传算法一致,依照适应度做轮盘赌选择。
(5)交叉
引入自适应选择概率,具体公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k1为0.6;
交叉的流程图参考附图2。具体过程如下:
step1:随机选择2个分配矩阵,命名为ta,tb。
step2:取i=0;
step3:如果i小于ta的长度,转step4,否则转step7;;
step4:根据公式3求求随机数pc;如果pc≥pc,转step5,否则转step6;
step5:ta的第i个元素和tb的第i个元素互换;
step6:i+=1,转step3;
step7:结束。
step8:重复step1-step7共计300次。
(6)变异
改进的变异概率的计算公式如下:
其中,fmax为群体中最大的适应度值;f为个体的适应度值;favg为每一代种群适应度的平均值;k3为0.12;
变异参考附图3。具体过程如下:
step1:随机选择1个分配矩阵,命名为t。
step2:取i=0;
step3:如果i小于ta的长度,转step4,否则转step7;;
step4:根据公式4,求随机数pc;如果pc≥pc,转step5,否则转step6;
step5:随机选择两个元素,并更换;
step6:i+=1,转step3;
step7:结束。
step8:重复step1-step7共计50次。
(7)获得预排班结果
在步骤(6)结束之后,继续从步骤(3)开始执行。重复步骤(3)到步骤(6)共计200次,获得适应度最大所对应的分配矩阵,即为最优预分配结果,命名为a。步骤(1)至步骤(7)称为预分配作业。
(8)对分配过程进行机器学习
在预分配作业中,每一种计划航班对应一个最优预分配结果a。将计划航班的随机打乱,模拟航班变动的情形,生成10k种不同的计划航班。并分别对10k中不同的计划航班求解对应的最优预分配结果。
上述10k种不同的计划航班命名为集合f。上述10k种不同的计划航班对应的最优预分配结果命名为集合fa。
使用tensorflow2.0,构建深度学习网络,结构如下:
第一层,输入尺寸为f单个元素的长度,为732,输出节点数目为732。优化器使用adam,损失函数使用rme;
第二层,无需指定输入尺寸,输出节点数为732*2。优化器使用adam,损失函数使用rme;
第三层,无需指定输入尺寸,输出节节点数为732*8。优化器使用adam,损失函数使用rme;
第四层,无需指定输入尺寸,输出节节点数为732*4。优化器使用adam,损失函数使用rme;
第五层,无需指定输入尺寸,输出节节点数为732*2。优化器使用adam,损失函数使用rme;
第六层,无需指定输入尺寸,输出节节点数为732。无优化器,损失函数使用rme;
深度学习的核心便是构建神经网络层。在构建结束之后,tensorflow2.0可以自动完成梯度下降的过程,将结果存储在本地,命名为model。
(9)再分配作业
如果航班发生了变动,航班序列变成了f’。将f’作为输入变量,使用tensorflow2.1调用model即可获得f’对应的最优分配矩阵。得到了新的最优分配矩阵即完成了再分配作业。
以上所述的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。