蚁群算法求解洛阳分院初中高教机、航班起飞顺序的最优解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蚁群算法求解洛阳分院初中高教机、航班起飞顺序的最优解
随着洛阳机场的扩建,洛阳市欲打造空港产业聚集地,必然会造成航班量的提升。
此外中国民航飞行学院洛阳分院飞行训练任务的加剧,也极大地考验洛阳北郊机场负荷极限。
不同的飞机,初中高教机以及空客、波音的民航客机对起飞、进场时间,在跑道上滑行的时间等都有不同的时限要求。
通过优化的算法,合理安排不同飞机的起飞顺序,一方面可以极大地增加机场的负荷量,另一方面也可以节约运营的时间成本,对于机场交通管制拥有积极的意义。
研究在单一变量下最优解问题的相关模型和方法有很多,但是,在多种变量作用下求解最优解问题却较难找到合适的相关模型,蚁群算法就为解决在复杂变量环境下最优解问题而生的,其灵感来源于蚂蚁在寻找食物的过程中发现路径的行为。
蚁群算法是一种模拟进化算法,该算法具有许多优良的性质。
文章的目的在于收集洛阳分院初中高教机以及空客波音相关机型的起落要求的数据,抽象出有效的数学模型,用数学建模的思想来管理数据,并通过蚁群算法,探究初中高教机及航班飞机起飞顺序的最优解。
标签:蚁群算法;数学建模;最优解
1 群体智能简介
蚁群算法,英文名称:Ant Colony Optimization,(ACO),在有些文献中亦称为蚂蚁算法,由DORIGO博士从观察蚂蚁寻找食物的过程中逐步发现路径的行为而获得灵感。
蚁群算法的本质是一种模拟进化算法,具有很多优良的性质,根据数值仿真实验,蚁群算法具有现实的有效性和很高的应用价值,但在熟悉蚁群算法和对蚁群建立理想模型之前,应该首先讨论群体智能的相关概念。
由于蚂蚁是一种社会化协作的昆虫,蚂蚁群体是由许多能力单一而且有限的单一蚂蚁组成的群体,但是蚂蚁的每个个体又可以通过彼此间简单的合作,完成一个较为复杂的整体性的工作,在混沌理论里,将蚂蚁种群的这种能力称为“群体智能”。
和蚂蚁群体类似,蜂群的单个个体智能水平亦不高,同样没有统一的指挥,但是蜂群却可以建起巨大的蜂巢、运送食物、繁殖后代,因为蜂群和蚁群一样,都是一种拥有完备结构和社会组织的分布式系统。
由于群体组织的原因,依靠单个个体,无法完成任何复杂的工作,若依靠整个群体的力量,蚂蚁可以完成非常复杂的任务。
2 蚁群算法的数学模型
虽然蚁群算法有着智能化、自组织性等诸多优点,但也存在搜索时间过长、易于停滞的问题,为了克服经典算法的这些缺点,很多国家和地区的学者提出了不少改进算法。
1996年L.M.Gambardella和M.Dorigo又提出了一种修正算法,他们称之为蚂蚁种群系统算法[5]ACS,并且将AS算法和ACS算法定义为蚂蚁种群优化算
法ACO。
1997年T.Stitzle提出了改进的最大最小蚂蚁系统MMAS算法[6]。
1999年,我国学者吴庆洪提出了具有变异特性的蚁群算法[7]。
1999年,意大利学者F.Abbattista等提出了和遗传算法相结合的算法[8]。
由于文章讨论洛阳机场的飞机起降顺序问题,数据量较小,问题并不复杂,所以在算法的选择上以M.Dorigo的经典蚁群优化算法为主,下面就以基于蚁群的蚂蚁系统的算法数学模型为例,介绍经典蚁群优化算法的数学模型和优化思路,下面求解著名的n个城市的旅行商问题为例来说明经典蚁群算法模型。
2.1 问题简述
给定n个城市以及各城市间的距离,旅行商问题可以描述为求一条经过各城市一次且仅一次的最短路线问题。
2.2 模型建立
对n个城市建立理想平面坐标系,城市i的坐标为(xi,yi),城市j的坐标为(xj,yj),设dij为城市i与j之间的欧拉距离,则:
dij=■
其图论描述为:给定图G=(N,E),其中N为城市集合,E为城市之间相互连接组成的边的集合,已知城市间链接距离,要求确定一条长度最短的回路。
即走完所有城市一次且仅一次的最短回路,此问题可以描述为:“适当选择图上所有顶点的一个排列以组成最短路径”
引入决策变量:
Xij=1(访问i后访问j)0(其他情况)
则目标函数可以表示为:
minZ=■Xijdij
将最短距离的寻找交给蚁群来解决:
令:
bi(t),(i=1,2,…,n)
为在时间t在城市i的蚂蚁的数目,令:
m=■bi(t)
为蚂蚁的总数,且每个蚂蚁都是有如下特征的简单智能体:
(1)它会根据某种概率选择走哪一个城市,这个概率是城市距离和同他连接路径的信息素的数量的函数。
(2)为了使得蚂蚁能够完全合理的旅行,必须禁止蚂蚁旅行访问过的城市,这个可以通过一个紧急表格来实现。
(3)当蚂蚁完成了一次旅行,它就在走过的每个路径上(i,j)释放适量的信息素。
令?灼ij(t)是时间t路径上(i,j)上的信息素强度。
每个蚂蚁在时间t 时刻选择下一个时间t+1要到达的城市,在时间间隔(t,t+1)内,对m个蚂蚁,调用蚂蚁系统迭代算法一次,算法的n次迭代叫做一圈,每一只蚂蚁完成了遍历所有城市一遍的一次旅行。
在每只蚂蚁k构造出一个完整闭合路径并计算了相应长度之后(用Lk表示),路径上的信息素强度会根据以下公式得到更新:
?灼ij(t+n)=?籽×?灼ij(t)+△?灼ij
其中?籽(0?燮?籽?燮1)是一个常数,它表示信息素挥发后的剩余度,即蚂蚁爬行轨迹的持久性,1-?渍表示在时间t和时间t+n内信息素的挥发,并且在上述公式里面有:
△?灼ij=■△?灼ijk
?灼ij(t)表示路径(i,j)在t时刻的信息素轨迹强度,△?灼ijk表示蚂蚁在时间间隔(t,t+n)内路径(i,j)上留下来的单位长度的路径信息素数量,其具体公式为:其中Q是个常数,且Lk表示没一个蚂蚁k旅行过的路径总长度。
为了确保每一只蚂蚁访问每一个节点一次,并且避免重复,没一个蚂蚁都已一个禁忌表forbidk,用来存储蚂蚁当前访问过的城市(节点),用禁忌表使蚂蚁到这些城市的转移概率为0,用计算机语言来讲,就是禁止“蚂蚁”访问这些节点。
当一次旅行完成之后,用禁忌表来计算问题现在的点。
然后清空禁忌表,蚂蚁就可以重新自由的选择新的路径了。
forbidk(S)表示禁忌表中第s个元素,表示在现在的一次旅行中k个蚂蚁访问的第s个城市。
因为要讨论每个蚂蚁选择一个城市的概率,这里引入一个能见度的概念,用?浊ij来表示,则有:
?浊ij=■
表示路径(i,j)的能见度,对于每一个蚂蚁k来说,从城市i到城市j的额转移概率为:
在上式中allowedk={N-forbidk},α和β是控制路径能见度相对重要性的参数,若(i,j)之间的距离比较短,则?浊ij较大,pij也较大。
也就是说,距离较近的城市以较大的概率被选择。
这样就构建好了蚁群算法的基本模型。
2.3 模型解释
下面文章以计算机编程的思想表述蚁群算法的基本模型,整个系统在0时刻进行初始化过程,给每一条边(i,j)设定一个初始信息素强度值?灼ij(0)。
每一只蚂蚁的forbidk的第一个元素为这个蚂蚁出发的城市,即它的初始城市。
每一只蚂蚁从城市i移动到城市j,蚂蚁会根据两个城市之间的概率函数选择移动城市,在城市从i到j移动的概率即为p■■■■(t)。
此时有两个原则需要注意:(1)信息素强度:表征过去有多少蚂蚁选择了这条路径(i,j);(2)能见度函数:说明了越近的城市,被访问的期望值就越大。
显然在p■■(t)函数中,如果α=0,就不在考虑路径上的信息素的作用,因为(?灼ij(t))α=1为定常数,这样模型就简化称为一个具有多起点的随机贪心搜索算法。
在n次循环以后,所有的蚂蚁都对所有的路径完成了一次遍历,所以每一只蚂蚁的forbidk就会满。
在此时就可以计算每一个蚂蚁k旅行过的路径总长度Lk,△?灼ijk也会随着信息素强度的更新方程而更新。
与此同时,由蚂蚁找到最短路径(即minkLk,k=1,2,3,…m)将被系统保存,所有禁忌表将被清空。
重复这一过程,直到周游计数器达到最大NcMax或者所有蚂蚁都走同一条路线。
3 洛阳机场飞机起顺序问题的模型建立
洛阳机场飞机起降环境比较复杂,机型众多,就目前的起飞情况来看,主要有SR20机型,PA-44机型,MA600机型,和航班的A320机型,以及少量B737机型,如果想建立数学模型,则必须将一些问题简单化、抽象化、理想化。
模型的建立对实际的运营情况具有现实的指导意义。
3.1 模型描述
洛阳机场停机坪目前共分为三块区域:为了便于表述,本论文给三块区域分别编号:
1号区域:C、D、E号机库门口,主要用于停放SR20,可以用于停放PA-44但几率很少。
2号区域:A、B号机库门口至二号道口北侧停机坪,主要用于停放SR20、PA-44和MA600。
3号区域:航站楼北侧,有廊桥的区域,主要用于停放A320,
B737等重型民航客机。
标准模型下有如下假设:(1)所有停放在机坪上的飞机分布合理,即任何一架飞机划出进入跑道都是顺畅的、无阻碍的,都不会受其他飞机位置的影响。
(2)每一架飞机无论是小型飞机还是中大型飞机,从飞机开始滑行至滑行到跑道端头,所花的时间t相同。
即影响起飞效率的单一变量就是起飞间隔。
(3)理想化起飞,飞机起飞不受环境因素限制。
标准模型下的几点说明:(1)为了考虑软件的通用性,任
何区域所停放的飞机种类可以自定义;(2)不同类型飞机的起飞间隔可以自定义;(3)涉及蚁群算法的各种常用参数可以自定义。
有以上说明后,模型可以表述如下:
假设洛阳机场1号区域停放了a1架SR20,b1架PA-44,c1架MA600/A320/B-737(可根据实际情况令相应种类的飞机数量为0);2号区域停放了a2架SR20,b2架PA-44,c2架MA600/A320/B-737;3号区域停放了a3架SR20,b3架PA-44,c3架MA600/A320/B-737。
不同种类飞机的起飞受飞机种类的限制,这个数值一般和飞机的起飞重量,体积等参数有关,例如,SR20属于轻型飞机,一架SR20起飞以后,紧接着让一架SR20飞机起飞,则前后两种都属于轻型飞机,他们之间的起飞间隔应该为t1,如果前面是一架SR20,后面是一架中型的PA-44,则起飞时间间隔为t2…t9,则一共有如表1的几种排列组合。
最终所求问题就是:合理安排各个飞机的起飞顺序,使总得起飞时间最小。
3.2 程序设计解决实际模型
考虑程序的通用性,本设计将很多涉及蚁群算法的常数参数可以进行自定义,在实际运算过程中,这些参数是可以通过实验来测算的,在使用本软件的时候只要将不同机场的测算结果进行填入本软件,既可以计算相应的排序结果,所以本软件在设计之初就考虑了软件的通用性。
洛阳机场一共有三个停机位,暂定名为1号,2号,3号停机位,原则上,1号机位只能用来停SR20,2号机位可以停SR20,PA-44,MA600,3号机位只能停A320,B737,为了增加软件的通用性,本设计可以任意自定义每种机型的数目,如果不能停的机型,就可以将其的数量设置为0。
此外,为了让本软件可以有广泛的应用,本设计设置了7个停机坪号,以应付中国绝大多数机场的应用场景,同样,用不到的机坪,可以直接在飞机数目框中填0。
软件设计图如图1所示。
图 1 程序主界面由前面的论述我们可知,蚁群算法在实际应用过程中要确定五个常数参数他们分别是:α,β,ρ,Q和NcMax,根据前面的理论概述,我
们可以得到每个常数参数所代表的含义:(1)α和β控制路径和能见度相对重要性的参数,如果要计算具体环境走完路径的真实值,α和β应由实验测得,在本软件中,如果只做定性排序,则只要α和β大于1即可。
(2)ρ表示信息素挥发后的剩余度,且0≤ρ≤1),在真实环境中同样由实验测得,定性分析不影响排序结果。
(3)Q为常数,它可以决定每段路径的信息素总量,亦表征蚂蚁个体散播信息素的能力,只要Q设定为普通自然数,不影响排序结果。
(4)NcMax在本软件中表示循环次数,NcMax越大,列出的可能性越多,则最短时间越接近真实最短时间。
当NcMax≤A■■,继续增大NcMax就不再有意义,因此如果想得到真实的最短时间,应该让NcMax≥A■■。
点击主界面的“参数”按钮,就可以进行算法设置本。
设计的参数输入框如图2所示。
表1所讨论的起飞间隔参数,在主界面的“间隔”按钮下进行设置,其截面如图3所示。
图3 起飞间隔设置
将参数设置好以后,点击“排序”按钮就可以计算出,最优的起飞顺序,并且给出起飞时间,图4为排序结果的事例。
图4
针对以上排序结果,做如下解释:L代表轻型飞机,1代表1号停机坪,A 代表此停机坪的第一架飞机,B代表第二架,一次类推,则排序结果如上述所示。
4 结束语
通过多方的建模验证,本程序可以很好地解决航班起飞顺序排序最优解问题,当然,通过和空管部门有关同志的交流得知,实际安排飞机起飞顺序和多方面因素有关系,不能一味追求最短时间。
因此本程序只是用创新的方法解决一个工程问题,只作为纯技术应用的讨论,或作为洛阳机场空管部门安排飞机起飞顺序的参考,并不作为安排起飞顺序的指导程序。
另外,由于软件在设计之初就考虑了软件的通用性,因此,本软件并不仅仅局限于给航班起飞顺序排序,理论上,本软件适用于解决多种有时间间隔要求的排序最优解问题。
参考文献
[1]李丽香,彭海朋,杨义先.混沌蚁群算法及应用[M].中国科学技术出版社,2003.
[2]李士勇.蚁群算法及其应用[M].哈尔滨:哈尔滨工业大学出版社,2004.
[3]吴启迪,汪镭.智能蚁群算法及应用[M].上海:上海科技出版社,2002.
[4]马良,朱刚.蚁群优化算法[M].科技出版社,2008.
[5]段海滨.蚁群算法原理及其应用[M].北京:科学出版社,2005.
[6]刘浩.MATLAB R2012a完全自学一本通[M].电子工业出版社,2013.
[8]司守奎.数学建模与应用[M].长沙:国防工业出版社,2011.
[9]韩中庚.数学建模方法与应用[M].高等教育出版社,2009.
[10]林道荣,秦志林.数学实验与数学建模[M].科学出版社,2011.。