蚁群算法在机队指派问题中的应用

来源:网络(转载) 作者:张群 薛雨石 发表于:2011-07-08 10:06  点击:
【关健词】机队指派; 蚁群算法; 机队数目最小化
随着近10年来我国航空运输业的壮大和市场需求的持续增长,借助于计算机辅助完成机队指派任务已经成为一种必然的趋势。然而由于国外航空公司的运营模式与我国的不同,因此设计一个适合国内航空运输特点的排程算法,以协助管理者解决日益复杂的机队指派问题,兼具实际意

1引言
  
  随着经济全球化发展,面对我国航空运输业的壮大和市场需求的持续增长,如何提高营运绩效,从而提升市场竞争力,获得更高的市场占有率,已成为航空公司规划发展的重要课题。现实中的机队指派问题往往涉及大量的需求点(航班)和候选点(飞机),很难得到最优解,而现代启发式算法(Meta Heuristic Algorithm)能够在多项式时间内找到满足实际要求的解。
  本文将经典的蚁群算法(Ant Colony Algorithm, ACA)模型应用于我国航空公司的机队指派问题中,在单一机种的前提下,求出最小的机队数目,并求得各单机的巡航路线。本文研究的目的是使今后航空公司在处理机队指派问题时,避免依赖相关作业人员的主观判断,设计一个能够协调上述作业流程并适合国内航空运输特点的排程算法,以协助管理者解决日渐复杂的机队指派问题,兼具实际意义与理论价值。
  
  2基本理论
  
  意大利学者M. Dorigo于1991年首次提出了蚁群算法,并成功地用于求解旅行商问题(Traveling Salesman Problem, TSP)。TSP 问题描述为:假设有n个城市,要求找到一条遍历所有城市且每个城市只访问一次的路线,使得总的路线距离最短。
  第一步:参数初始化。令循环次数Nc = 0,设置最大循环次数Ncmax,将m只蚂蚁置于n个城市上,使得每只蚂蚁都能从任意一个城市出发。令有向图上每条边(i,j)的初始化信息量τij(t) = const,其中const表示常数,并且初始时刻Δτij(0)=0。
  第二步:循环次数Nc = Nc + 1。
  第三步:城市的初始禁忌表tabuk = 1。
  第四步:蚂蚁数目k = k + 1。
  第六步:修改禁忌表指针,对于蚂蚁己经访问过的城市就被记录在禁忌表里,并且不允许蚂蚁访问禁忌表里的城市,直到所有的城市都被访问完。
  第七步:若集合C中城市未遍历完,即k≤m,则跳转到第四步; 否则执行第八步。
  第八步:当蚂蚁遍历完所有的城市,它将在其经过的每条路径上留下信息素。公式(3)表示第k个蚂蚁访问过路段(i,j)后释放的信息素,其中Q为一个常数,表示蚂蚁释放的信息素总量,它在一定程度上影响着算法的收敛速度;Lk表示搜索到本轮最短路径的蚂蚁k所走的路径总长度。根据公式(4)和公式(5)更新每条路径上的信息素,其中(1 - ρ)表示信息素挥发后的残留系数。
  
  3模型设计
  
  3.1概念定义
  在运力严重紧张时,机队指派工作的基本目标就是用最少的飞机承担起尽可能多的航班任务。本着这个目标,本文采用一些更加合理的方法,设计出能够求解机队指派任务的蚁群算法(Fleet Assignment Task solved by Ant Algorithm, FAT_AA)。具体创新如下:
  (1) 重新定义了城市的概念,把待排航班时刻表中的每一个航班抽象成一个城市。
  (2) 改造了蚂蚁的初始状态,它们不是放置在随机任选的城市。
  (3) 重点对城市之间的距离进行了改造,用dij表示第i个航班到第j个航班的距离,并定义该距离是一个向量,一般情况下dij≠dji。为了满足航班站衔接要求,并且要保证同一架飞机所执行的下一航班的起飞时间晚于前一航班的到港时间,设定公式(6):
  dij = 100,第i个航班和第j个航班是同一个航班;10,第i个航班的降落机场和第j个航班的起飞机场不相同, 或第i个航班的降落时间晚于第j个航班的起飞时间;1,第i个航班的降落机场和第j个航班的起飞机场相同, 并且第i个航班的降落时间早于第j个航班的起飞时间。 (6)
  3.2算法流程
  以集合C表示未被访问的城市集合,ci表示城市i,cj表示城市j,因此在t时刻连接城市i,j,残留信息素的集合可表示为Γ = {τij(t) | ci,cj∈C}。在初始时刻,各条路径上的信息素相等,并表示为τij(0) = const。用禁忌表tabuk(k = 1,2,…,m)来记录蚂蚁k当前所走过的城市,剩余的能够被访问的城市集合allowedk将随tabuk的改变作动态调整。
  第一步:参数初始化。令循环次数Nc = 0,设置最大循环次数Ncmax,将m只蚂蚁置在需要被最早执行的m个航班(城市)上,使得每只蚂蚁必须从这m个城市出发。令有向图上每条边(i,j)的初始化信息量τij(t) = const,其中const表示常数,并且初始时刻Δτij(0) = 0。
  第二步:循环次数Nc = Nc + 1。
  第三步:城市的初始禁忌表tabuk = 1。
  第四步:蚂蚁数目k = k + 1。
  第五步:蚂蚁个体根据状态转移概率公式(1)计算的概率选择城市j并前进,j∈{C - tabuk}。
  第六步:修改禁忌表指针,将蚂蚁移动到新的城市,并把该城市放入禁忌表中。这样蚂蚁就找到了一条遍历所有城市且每个城市只访问一次的路线。
  第七步:若集合C中城市未遍历完,即k≤m,则跳转到第四步,否则执行第八步。
  第八步:当蚂蚁遍历完所有的城市,将会在其经过的每条路径上留下信息素。用公式(2)表示启发函数,它是由创新公式(6)决定的;公式(3)表示第k个蚂蚁访问过路段(i,j)后释放的信息素;公式(4)和公式(5)表示更新每条路径上的信息素,其中(1 - ρ)表示信息素挥发后的残留系数。
  第九步:若满足循环次数Nc≥Ncmax,则循环结束并输出程序计算结果;否则清空禁忌表并跳转到第二步。
  
  4实际算例及结论
  
  本文选取的样本来自中国国际航空股份有限公司(Air China Limited)于2010年4月份的航班时刻表,并从中选取了属于6个不同机场的40个航班来进行机队指派任务。选取40个航班的原因是,完成这40个航班的飞行任务,可以有40!种排程方法,共8.159 × 1047种,如果只由人工而不用计算机辅助,势必将依赖相关作业人员的主观判断,并且工作质量无法保证。因此,如果FAT_AA算法能在可以接受的时间范围内,以尽可能少的飞机数目完成这40个航班的排程任务,则足以证明算法的适用性和有效性。 (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)

顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.