CN113034980B - 一种基于时刻表的航班运行效能预先评估方法 - Google Patents
一种基于时刻表的航班运行效能预先评估方法 Download PDFInfo
- Publication number
- CN113034980B CN113034980B CN202110219096.0A CN202110219096A CN113034980B CN 113034980 B CN113034980 B CN 113034980B CN 202110219096 A CN202110219096 A CN 202110219096A CN 113034980 B CN113034980 B CN 113034980B
- Authority
- CN
- China
- Prior art keywords
- flight
- flt
- time
- queue
- sector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G5/00—Traffic control systems for aircraft, e.g. air-traffic control [ATC]
- G08G5/003—Flight plan management
- G08G5/0039—Modification of a flight plan
Landscapes
- Engineering & Computer Science (AREA)
- Aviation & Aerospace Engineering (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明提供了一种基于时刻表的航班运行效能预先评估方法,能够以时刻表为基础,综合考虑全国空管服务能力、机场优先级、航班类型等多种要素,推测航班的延误及消减情况,挖掘空域网络内航班运行效能的最大潜力,旨在为我国民航空管在战略阶段开展时刻表合理性分析以及优化工作提供技术支撑手段。
Description
技术领域
本发明属于民航流量管理领域,尤其涉及一种基于时刻表的航班运行效能预先评估方法。
背景技术
民航航班时刻表作为航空公司、机场、空管等各航空利益相关方开展日常运行的重要依据,其排班的合理性能对整个航空网络的运行效益产生根本性的影响。当前时刻表在排班时会兼顾各个机场的容量限制,但对空域服务能力的考虑有所欠缺;当空域内存在超容问题时,空管部门会发布流量管理措施,通过延误或者消减航班来缓解拥堵问题,降低了航班的正常性和运行效益,对民航业的发展产生影响。如何对航班时刻表的实施效果进行预先评估,是开展航班时刻优化的重要前提。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于时刻表的航班运行效能预先评估方法,包括如下步骤:
步骤1,准备计算数据;步骤2,优化飞跃航班的时刻;步骤3,优化外国降落航班的时刻;步骤4,优化国内起飞航班的时刻;步骤5,优化国内起降航班的时刻;步骤6,优化豁免航班的时刻;步骤7,计算航班运行效能。
本发明提供了一种航班运行效能的预先评估方法,能够以航班时刻表为基础,综合考虑机场以及空域扇区的空管服务能力,从延误架次、平均延误、正常性等多个维度对航班运行效能进行预先评估,为用户判定时刻表合理性提供科学依据。
本发明的有益效果为:本发明所述方法能够以航班时刻表为基础,综合考虑全国空管服务能力、机场优先级、航班类型等多种要素,预先评估空域网络内航班运行效能的最大潜力,为用户判定时刻表合理性提供科学依据,为开展时刻优化工作奠定基础。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明的总体处理流程示意图。
图2是本发明的飞跃航班的时刻优化处理流程。
图3是本发明的检查航班起飞时刻的合理性处理流程。
图4是本发明的检测航班是否满足途径扇区的容量资源限制的处理流程。
图5是本发明的进扇区航班筛选处理流程。
图6是本发明的扇区空闲容量计算流程。
图7是本发明的检查航班是否满足扇区容量限制的处理流程。
图8是本发明的排序失败航班信息重置的处理流程。
图9是本发明的外国降落航班的时刻优化处理流程。
图10是本发明的检测航班是否满足着陆机场的进场容量资源限制的处理流程。
图11是本发明的机场着陆航班筛选的处理流程。
图12是本发明的机场空闲进场容量计算的处理流程。
图13是本发明的检查航班是否满足着陆机场的进场容量限制的处理流程。
图14是本发明的国内起飞航班的时刻优化流程。
图15是本发明的离场容量分解的处理流程。
图16是本发明的根据机场的离场容量限制优化航班时刻的处理流程。
图17是本发明的机场起飞航班筛选的处理流程。
图18是本发明的机场空闲离场容量计算的处理流程。
图19是本发明的检查航班是否满足起飞机场的离场容量限制的处理流程。
图20是本发明的国内起降航班的时刻优化的处理流程。
具体实施方式
本发明包括如下步骤:
步骤1,计算数据准备;
步骤2,优化飞跃航班的时刻;
步骤3,优化外国降落航班的时刻;
步骤4,优化国内起飞航班的时刻;
步骤5,优化国内起降航班的时刻;
步骤6,优化豁免航班的时刻;
步骤7,航班运行效能计算。
其总体处理流程如图1所示。
步骤1包括如下步骤:
步骤1-1,变量定义;
步骤1-2,准备基础数据;
步骤1-3,处理基础数据。
步骤1-1包括:
ANA_DATE:本方法的分析日期;战略流量管理阶段(战略流量管理阶段是民航实施空中交通流量管理的一个预先阶段,该名词在民航流量管理领域使用)定义为未来7天至本航季末,用户可根据自身需要选择该区间范围内的某一天;
DELE_MARK:航班消减选项;如果用户设置为“是”,表示本方法在计算过程中会根据航班延误情况,主动生成航班消减建议,需配合消减延误参数一同使用;如果设置为“否”,表示本方法在计算过程中,不会主动生成航班消减建议;
DELE_VALUE:消减延误参数;本方法计算过程中航班的延误上限,单位为分钟;如果用户设置了消减选项为“是”,则DELE_VALUE为用户设置的值;否则将其设置为99999,近似无穷大延误。计算过程中如果航班预估延误超过该上限,则会被建议消减);
ACC_MARK:航班时刻提前选项参数;如果用户设置为“是”,表示本方法在计算过程中会根据航班延误情况,主动生成航班时刻提前的建议,需配合加速延误参数一同使用;如果设置为“否”,表示本方法在计算过程中,不会主动生成航班时刻提前建议;
ACC_VALUE:加速延误参数;本方法计算过程中航班的最大时刻提前量,单位为分钟;
APTLIST:机场队列,包含全国所有的机场信息;
AptTotalNum:机场队列APTLIST中包含的机场个数;
APTi:机场队列APTLIST中的第i个机场;
APTi(CODE):机场APTi的四字代码;
APTi(PRO):机场APTi的属性;包括三类:主协调机场、辅协调机场、非协调机场;
APTi(PRIO):机场APTi的优先级;主协调机场的优先级为2,辅协调机场优先级为1,非协调机场的优先级为0,用户可根据自身需求进行调整;
SECTORLIST:扇区队列;包含全国所有的扇区信息;
SectorTotalNum:扇区队列SECTORLIST中包含的扇区个数;
SECTORi:扇区队列SECTORLIST中的第i个扇区;
SECTORi(CODE):扇区SECTORi的代码;
SECTORi(PRIO):扇区SECTORi的优先级,默认均为0,用户可根据自身需求进行调整;
FltListIni:航班计划初始队列;包含了与分析日期ANA_DATE相关的所有航班计划;
FltTotalNum:FltListIni中航班计划总个数;
FltListExempt:豁免航班队列;包含了FltListIni中所有豁免航班。
FltTotalNumExempt:FltListExempt队列中航班计划总个数;
FltListPassBy:飞跃航班队列;包含了FltListIni中所有起降机场均不在国内的航班。
FltTotalNumPassBy:FltListPassBy队列中航班计划总个数;
FltListArr:外国降落航班队列;包含FltListIni中所有降落机场在国内,起飞机场不在国内的航班。
FltTotalNumArr:FltListArr队列中航班计划总个数;
FltListDep:国内起飞航班队列;包含FltListIni中所有降落机场不在国内,起飞机场在国内的航班。
FltTotalNumDep:FltListDep队列中航班计划总个数;
FltListDepArr:国内起降航班队列;包含FltListIni中所有降落机场在国内,起飞机场也在国内的航班。
FltTotalNumDepArr:FltListDepArr队列中航班计划总个数;
Flti:航班计划队列里的第i条航班计划;
ACIDi:航班Flti的航班号;
Flti(PRIO):本方法计算过程中航班Flti的静态优先级;
DepApti:航班Flti的起飞机场;
ArrApti:航班Flti的降落机场;
ETDi:航班Flti的计划起飞时间;
ETAi:航班Flti的计划降落时间;
PassPtListi:航班Flti的过点队列;包含了航班Flti的所有途径航路点信息;
PassPti,j:航班Flti的过点队列PassPtListi中的第j个航路点信息。
PassPti,j(Code):航班Flti的过点队列PassPtListi中的第j个航路点PassPti,j的代码;
PassPti,j(ETO):航班Flti的过点队列PassPtListi中的第j个航路点PassPti,j的计划过点时间;
PassSectorListi:航班Flti的过扇队列,包含了航班Flti的所有途经扇区信息;
PassSectori,j:航班Flti的过扇队列PassPtListi中的第j个扇区信息。
PassSectori,j(Code):航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的代码;
PassSectori,j(InETO):航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的计划进扇时间;
PassSectori,j(OutETO):航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的计划出扇时间;
SortModei:本方法计算过程中航班Flti的排序状态,包括4种状态:0表示未参与排序,1表示排序成功,2表示排序进行中,3表示排序失败,该状态位初始值为0;
STDi:本方法为航班Flti分配的起飞时刻,初始值为ETDi;
STAi:本方法为航班Flti分配的降落时刻,初始值为ETAi;
MinSTDi:本方法为航班Flti分配的最早起飞时间;
MaxSTDi:本方法为航班Flti分配的最迟起飞时间;
MinSTAi:本方法为航班Flti分配的最早降落时间;
MaxSTAi:本方法为航班Flti分配的最迟降落时间;
PassSectori,j(InSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的进扇时间;
PassSectori,j(InMinSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最早进扇时间;
PassSectori,j(InMaxSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最迟进扇时间;
PassPti,j(STO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的过点时间。
PassPti,j(MinSTO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最早过点时间。
PassPti,j(MaxSTO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最迟过点时间。
MixedDelayi:本方法为航班Flti分配的综合延误,单位为秒;
DepDelayi:本方法为航班Flti分配的起飞延误,单位为秒;
ArrDelayi:本方法为航班Flti分配的降落延误,单位为秒;
Flti(InAccess):航班Flti当前是否进行时刻提前的状态标志,1:表示航班正在进行时刻提前,0表示航班当前未进行时刻提前。
Flti(Accessed):航班Flti历史上是否进行过时刻提前的状态标志,1:表示航班进行过时刻提前处理,0表示航班未进行过时刻提前处理。
RetryNumi:航班Flti因排序失败被信息重置的总次数,初始值为0;
AARCheckModei:航班Flti的着陆机场的进场容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,该变化初始值为0;
SectorCheckModei:航班Flti的扇区容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,该变化初始值为0;
[tBgnTime,tEndTime]:本方法的计算时间范围,其中tBgnTime为分析日期ANA_DATE的00:00:00,而tEndTime为分析日期ANA_DATE的23:59:59。
CapSpanTime:本方法中时间片大小,默认值为3600秒(即1小时),用户可根据需求自行调整。
CapSpanNum:计算时间范围[tBgnTime,tEndTime]内时间片的个数。
[CapBgnTimej,CapEndTimej):计算时间范围[tBgnTime,tEndTime]内第j个时间片,其中CapBgnTimej为时间片的开始时间,CapEndTimej为时间片的截止时间。
AptCapi,j:机场APTi在第j个时间片的容量值。
SectorCapi,j:扇区SECTORi在第j个时间片的容量值。
Depi,j:在机场APTi的第j个时间片内起飞的航班架次。
Arri,j:在机场APTi的第j个时间片内降落的航班架次。
AptAARi,j:机场APTi在第j个时间片的可用进场容量(进场率);
AptADRi,j:机场APTi在第j个时间片的可用离场容量(离场率);
AptCapResvi,j:机场APTi在第j个时间片的豁免航班量,初始值为0;
AptAARResvi,j:机场APTi在第j个时间片的豁免进场航班量,初始值为0;
AptADRResvi,j:机场APTi在第j个时间片的豁免离场航班量,初始值为0;
SectorCapResvi,j:扇区SECTORi在第j个时间片的豁免航班量,初始值为0;
AptFlowArri,j:预计在第j个时间片降落在机场APTi的非豁免外国降落航班量,初始值为0;
AptFlowArrDepi,j:预计在第j个时间片在机场APTi降落的非豁免国内起降航班量,初始值为0;
AptFlowDepi,j:预计在第j个时间片从机场APTi起飞的非豁免国内起飞航班量,初始值为0;
AptFlowDepArri,j:预计在第j个时间片从机场APTi起飞的非豁免国内起降航班量,初始值为0;
SectorFlowArri,j:预计在第j个时间片进入扇区SECTORi的非豁免外国降落航班量,初始值为0;
SectorFlowDepi,j:预计在第j个时间片进入扇区SECTORi的非豁免国内起飞航班量,初始值为0;
SectorFlowDepArri,j:预计在第j个时间片进入扇区SECTORi的非豁免国内起降航班量,初始值为0;
SectorFlowPassByi,j:预计在第j个时间片进入扇区SECTORi的非豁免飞越航班量,初始值为0;
AptCapArri,j:非豁免外国降落航班在机场APTi第j个时间片可用的进场容量,初始值为0。
AptCapArrDepi,j:非豁免国内起降航班在机场APTi第j个时间片可用的进场容量,初始值为0。
AptCapDepi,j:非豁免国内起飞航班在机场APTi第j个时间片可用的离场容量,初始值为0。
AptCapDepArri,j:非豁免国内起降航班在机场APTi第j个时间片可用的离场容量,初始值为0。
SectorCapArri,j:非豁免外国降落航班在扇区SECTORi第j个时间片可用的容量,初始值为0。
SectorCapDepi,j:非豁免国内起飞航班在扇区SECTORi第j个时间片可用的容量,初始值为0。
SectorCapDepArri,j:非豁免国内起降航班在扇区SECTORi第j个时间片可用的容量,初始值为0。
SectorCapPassByi,j:非豁免飞越航班在扇区SECTORi第j个时间片可用的容量,初始值为0。
步骤1-2包括:
步骤1-2-1,设置计算参数:
需要人工设置的计算参数包括:分析日期ANA_DATE;消减选项DELE_MARK;消减延误参数DELE_VALUE;加速选项ACC_MARK;加速延误参数ACC_VALUE。
步骤1-2-2,获取全国空域基础数据
根据计算参数信息中的分析日期ANA_DATE,获取全国的机场及扇区基础信息。
获取全国所有的机场信息,并形成机场队列APTLIST,机场总个数为AptTotalNum。APTLIST中每个机场APTi的具体信息包括:代码APTi(CODE);属性APTi(PRO);优先级APTi(PRIO)。
获取全国所有的扇区信息,并形成扇区队列SECTORLIST,扇区总个数为SectorTotalNum。SECTORLIST中每个扇区SECTORi的具体信息包括:代码SECTORi(CODE);优先级SECTORi(PRIO)。
步骤1-2-3,提取全国航班计划数据:
根据计算参数信息中的分析日期ANA_DATE,从时刻表中筛选在日期内从国内机场起、降或者出现在国内空域的航班计划,形成航班计划队列FltListIni,计划总个数为FltTotalNum。
采用4D轨迹预测技术生成FltListIni中每条计划Flti(i∈[1,FltTotalNum])的轨迹预测信息。
航班轨迹信息包括:航班号ACIDi;起飞机场DepApti;降落机场ArrApti;起飞时间ETDi;降落时间ETAi;过点队列PassPtListi;过扇队列PassSectorListi。
PassPtListi中包含了Flti途径的每个航路点PassPti,j的代码PassPti,j(Code)以及过点时间PassPti,j(ETO);
PassSectorListi中包含了Flti途径的每个扇区PassSectori,j的代码PassSectori,j(Code),进扇区时间PassSectori,j(InETO),出扇区时间PassSectori,j(OutETO)。
值得注意的是,对于FltListIni中的每架航班Flti,其途径的每个扇区的进扇区点和出扇区点均包含在该航班的过点队列PassPtListi内;因此,如果更新航班过点队列PassPtListi中航路点的过点时间,会同步更新该航班过扇队列PassSectorListi里每个扇区的进扇区和出扇区时间。
注:4D轨迹预测技术为民航空管***中的通用技术,能够根据航班飞行计划,预测航班过各航路关键点的时间,因4D轨迹预测技术非本文重点,在此不再详述);
步骤1-2-4,获取全国空域容量数据
1)计算时间范围设置
根据计算参数信息中的分析日期ANA_DATE,生成本方法的计算时间范围[tBgnTime,tEndTime],其中tBgnTime为分析日期ANA_DATE的00:00:00,而tEndTime为分析日期ANA_DATE的23:59:59。
2)时间片划分
本方法中默认时间片CapSpanTime为3600秒(即1小时),用户可根据需求自行调整;
令每个时间片为[CapBgnTimej,CapEndTimej),j∈CapSpanNum,其中CapBgnTimej为第j个时间片的开始时间,CapEndTimej为第j个时间片的截止时间,且CapEndTimej=CapBgnTimej+CapSpanTime。
3)获取全国机场各个时间片的容量
筛选APTLIST队列内各个机场APTi在计算时间范围[tBgnTime,tEndTime]内的每个时间片的容量信息AptCapi,j(APTi在第j个时间片的容量值)。
4)获取全国扇区各个时间片的容量
筛选SECTORLIST队列内各个扇区SECTORi在计算时间范围[tBgnTime,tEndTime]内的每个时间片的容量信息SectorCapi,j(SECTORi在第j个时间片的容量值)。
注:容量信息可来源于我国民航空管局公布的全国机场,扇区的静态容量数据,用户可根据自身需求进行修改或设置。
步骤1-3包括:
步骤1-3-1,根据优先级对全国空域对象进行排序
全国机场的排序:为保障高优先级监控对象相关的航班能够得到优先保障,根据机场优先级APTi(PRIO)从高到低的次序,对全国机场队列APTLIST内的机场进行重新排序;
全国扇区的排序:根据扇区优先级SECTORi(PRIO)从高到低的次序,对全国扇区队列SECTORLIST内的扇区进行重新排序。
步骤1-3-2,机场进离场容量分解
用户能够根据自身需要设置机场的进离场容量,如果未设置可以采用以下方法计算获得进离场容量:
对于APTLIST队列内每个机场APTi,均开展以下操作:
1)统计机场各时间片的起降需求
根据计划队列FltListIni中每架航班的计划起飞时间ETDi和计划降落时间ETAi,统计机场APTi在计算时间范围[tBgnTime,tEndTime]内的每个时间片j的起飞架次Depi,j和降落架次Arri,j。
2)根据起降需求划分容量
为提高机场容量资源的利用,根据每个时间片的起降需求分解机场容量。则:
AptADRi,j=AptCapi,j-AptAARi,j。 (3)
步骤1-3-3,航班排序信息初始化
针对FltListIni中每架航班Flti,对其排序信息进行初始化处理。
1)初始化排序状态信息:令SortModei=0;令Flti(InAccess)=0;令Flti(Accessed)=0;令RetryNumi=0。
2)初始化延误信息:令MixedDelayi=0;令DepDelayi=0;令ArrDelayi=0;
3)初始化排序时间
令STDi=ETDi,STAi=ETAi;
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE;
令MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO);
PassPti,n(MinSTO)=PassPti,n(ETO);
PassPti,n(MaxSTO)=PassPti,n(ETO)+DELE_VALUE;
针对航班Flti过扇队列PassSectorListi中每个扇区PassSectori,n,令
PassSectori,n(InSTO)=PassSectori,n(InETO);
PassSectori,n(InMinSTO)=PassSectori,n(InETO);
PassSectori,n(InMaxSTO)=PassSectori,n(InETO)+DELE_VALUE;
4)初始化容量检测标志:令AARCheckModei=0,SectorCheckModei=0。
步骤1-3-4,划分航班类型
针对FltListIni中每架航班Flti,根据航班的起飞和降落机场是否属于国内,可将航班分成四类,包括:国内起降(起降机场均在国内)、国内起飞(起飞机场在国内,降落机场不在)、外国降落(起飞机场不在国内,降落机场在国内)、飞越(起降机场均不在国内)。
步骤1-3-5,计算航班豁免状态
豁免航班是指参与本方法计算,但不会因不满足约束条件而被调整时刻的航班。
根据计算时间范围[tBgnTime,tEndTime],为避免对计算时间范围外的航班进行调整,需判断FltListIni中每架航班Flti的起飞时间ETDi、降落时间ETAi、进扇区时间PassSectori,j(InETO)是否均在计算时间范围内,如不是,则将航班设置为豁免航班。
步骤1-3-6,计算航班静态优先级
针对FltListIni中每架航班Flti,其优先级Flti(PRIO)初始值为0。
如果其起飞机场为国内某个机场APTj,则令Flti(PRIO)=Flti(PRIO)+APTj(PRIO);
如果其降落机场为国内某个机场APTk,则令Flti(PRIO)=Flti(PRIO)+APTk(PRIO);
如果航班为VIP航班,则Flti(PRIO)=Flti(PRIO)+1,航班的VIP标志可由用户根据需要进行设置。
步骤1-3-7,根据航班类型及豁免状态划分航班队列
航班时刻的调整难度由高到低分别为:飞越航班,外国降落,国内起飞,国内起降。因此根据航班的豁免状态以及航班属性,将计划队列FltListIni拆分成五个计划子队列,分别为:豁免航班队列FltListExempt,飞越航班队列FltListPassBy,外国降落航班队列FltListArr,国内起飞航班队列FltListDep,国内起降航班队列FltListDepArr;其中豁免航班队列的航班总架次为FltTotalNumExempt,飞越航班队列的航班总架次为FltTotalNumPassBy,外国降落航班队列的航班总架次为FltTotalNumArr,国内起飞航班队列的航班总架次为FltTotalNumDep,国内起降航班队列的航班总架次为FltTotalNumDepArr,后续本方法将对这五个队列分别进行处理。
步骤1-3-8,根据航班起降时间对航班队列进行初始排序;
对于国内起飞队列FltListDep,对其内的每架航班Flti按照其预计起飞时间ETDi由早到晚的顺序进行排序;
对于国内起降航班队列FltListDepArr,对其内的每架航班Flti按照其预计起飞时间ETDi由早到晚的顺序进行排序;
对于外国降落航班队列FltListArr,对于其内的每架航班Flti按照其预计降落时间ETAi由早到晚的顺序进行排序;
对于飞越航班队列FltListPassBy,对于其内的每架航班Flti按照其预计进国境点时间由早到晚的顺序进行排序;
对于豁免航班队列FltListExempt,无需开展排序。
步骤1-3-9,根据航班优先级对航班队列进行二次排序;
为使得高优先级航班能够优先占用容量资源,减少时刻调整。在初始排序基础上,需按照航班优先级Flti(PRIO)由高到低的顺序分别对飞越航班队列FltListPassBy、外国降落航班队列FltListArr、国内起飞航班队列FltListDep、国内起降航班队列FltListDepArr进行二次排序。
步骤1-3-10,根据全国空域对象内不同类别航班的流量占比细分容量。
步骤1-3-10-1,计算豁免航班的时隙资源占用量
对于APTLIST中每一个机场APTi,循环开展以下处理:
1)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令该机场的AptADRResvi,j=AptADRResvi,j+1;
2)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令该机场的AptAARResvi,j=AptAARResvi,j+1;
对于SECTORLIST中每一个机场SECTORi,循环开展以下处理:
1)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorCapResvi,j=SectorCapResvi,j+1;
步骤1-3-10-2,计算全国机场对象内不同类别航班的流量分布
对于APTLIST中每一个机场APTi,循环开展以下处理:
1)对于FltListArr中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令AptFlowArri,j=AptFlowArri,j+1;
2)对于FltListDep中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令AptFlowDepi,j=AptFlowDepi,j+1;
3)对于FltListDepArr中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令AptFlowDepArri,j=AptFlowDepArri,j+1;
4)对于FltListDepArr中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令AptFlowArrDepi,j=AptFlowArrDepi,j+1;
步骤1-3-10-3,计算全国扇区对象内不同类别航班的流量分布
对于SECTORLIST中每一个机场SECTORi,循环开展以下处理:
1)对于FltListPassBy中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowPassByi,j=SectorFlowPassByi,j+1;
2)对于FltListArr中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowArri,j=SectorFlowArri,j+1;
3)对于FltListDep中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowDepi,j=SectorFlowDepi,j+1;
4)对于FltListDepArr中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowDepArri,j=SectorFlowDepArri,j+1;
步骤1-3-10-4,根据不同类别航班的流量占比拆分空域容量
如果满足(AptFlowArri,j+AptFlowArrDepi,j)>0,则令
AptCapArri,j=(AptAARi,j-AptAARResvi,j)-AptCapArrDepi,j。 (6)
如果满足(AptFlowDepi,j+AptFlowDepArri,j)>0,则令
AptCapDepi,j=(AptADRi,j-AptADRResvi,j)-AptCapDepArri,j。 (9)
如果满足
(SectorFlowArri,j+SectorFlowDepi,j+SectorFlowDepArri,j+SectorFlowPassByi,j)>0,则令
SectorCapDepArri,j=(SectorCapi,j-SectorCapResvi,j)-SectorCapPassByi,j-SectorCapArri,j-SectorCapDepi,j (14)步骤2包括:
该步骤功能为:优化飞越航班队列FltListPassBy里每架航班的时刻,使其能够满足所有途径扇区的容量资源限制。其处理流程如图2所示。
步骤2包括如下步骤:
步骤2-1,定义变量;
步骤2-2,检查航班起飞时刻的合理性;
步骤2-3,检测航班是否满足途径扇区的容量资源限制;
步骤2-4,更新全国所有扇区的容流平衡检测标志;
步骤2-5,判断是否存在航班不满足容量限制;
步骤2-6,重置排序失败航班的信息。
步骤2-1,定义如下变量:
SectorCheckMark:全国所有扇区的容流平衡检测标志,1:表示全国所有扇区均满足容量限制,0:表示存在扇区不满足容量限制,该变量初始值为0;
DealMarki:航班Flti的处理状态,包括:0表示未参与本次处理,1表示本次已处理;
tmpSTDi:本方法为航班Flti分配的起飞时刻的临时变量;
tmpSTAi:本方法为航班Flti分配的降落时刻的临时变量;
tmpMinSTDi:本方法为航班Flti分配的最早起飞时间临时变量;
tmpMaxSTDi:本方法为航班Flti分配的最迟起飞时间临时变量;
tmpMinSTAi:本方法为航班Flti分配的最早降落时间临时变量;
tmpMaxSTAi:本方法为航班Flti分配的最迟降落时间临时变量;
tmpMinDelayi:本方法为航班Flti分配的最小延误临时变量;
tmpMaxDelayi:本方法为航班Flti分配的最大延误临时变量
tmpDepDelayi:本方法为航班Flti分配的起飞延误临时变量;
PassSectori,j(tmpInSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的进扇时间临时变量;
PassSectori,j(tmpInMinSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最早进扇时间临时变量;
PassSectori,j(tmpInMaxSTO):本方法为航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最迟进扇时间临时变量;
PassPti,j(tmpSTO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的过点时间临时变量。
PassPti,j(tmpMinSTO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最早过点时间临时变量。
PassPti,j(tmpMaxSTO):本方法为航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最迟过点时间临时变量。
SatifyMark:状态标志位,初始值为0;
SlotSpanTime:航班时刻调整的最小步长,根据当前航班时刻表特点,本方法将其设置为300秒。
SectorCheckModei,j:航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j的扇区容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,该变化初始值为0;
FltListTmp:本方法计算过程的临时航班队列;
FltTotalNumTmp:FltListTmp队列中总航班个数;
FltPrioi:航班Flti本方法计算过程中的处理优先级参数;
FltListCheck:本方法计算过程的待检测航班队列;
SectorCapUsek,j:本方法计算过程中扇区SECTORk在第j个时间片能够为FltListTmp中航班提供的容量值;
SectorCapUsedk,j:扇区SECTORk在第j个时间片已被FltListCheck中航班占用的容量值;
SectorFlowk,j:扇区SECTORk在第j个时间片新增流量值,初始值为0;
MaxRetryNum:本方法中每个航班可因排序失败被重置的最大次数,可根据用户需求进行调整,本方法中将该值设置为2;
步骤2-2包括:
本步骤功能为:对于指定的航班队列,为其内航班分配可行的排序时间,使其满足延误上限要求。其处理流程如图3所示。
步骤2-2-1,确定待检测的航班队列
如果参与检测的是飞越航班队列,则令FltListCheck=FltListPassBy;
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
步骤2-2-2,清空航班处理状态:针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-2-3,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-2-4,判断航班的排序状态位:如果SortModei为1或者3,则返回步骤2-2-3;否则继续后续操作;
步骤2-2-5,计算航班可能的排序时间:
为保障本方法所分配的起飞时刻满足最小步长要求,令STDi=(STDi/SlotSpanTime)*SlotSpanTime,且tmpSTDi=STDi;
令tmpMinSTDi=tmpSTDi,tmpMaxSTDi=tmpMinSTDi+SlotSpanTime-1,
tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi),
tmpMaxSTAi=tmpMaxSTDi+(ETAi-ETDi);
步骤2-2-6,计算航班当前的综合延误;
如果STDi<MinSTDi,则MixedDelayi=MinSTDi-ETDi;
否则MixedDelayi=STDi-ETDi;
步骤2-2-7,判断航班起飞时刻的合理性;
如果满足tmpMaxSTDi∈[MinSTDi,MaxSTDi]或者tmpMinSTDi∈[MinSTDi,MaxSTDi],令SatifyMark=1,继续后续处理;如果不满足,令SatifyMark=0,跳至步骤2-2-11;
步骤2-2-8,更新航班的起飞延误;
如果航班Flti的排序状态位SortModei为0,令DepDelayi=0;如果SortModei为2,令DepDelayi=MixedDelayi;
步骤2-2-9,判断航班是否延误超量;
如果DepDelayi>DELE_VALUE,则认为延误超量,令SortModei=3,跳至步骤2-2-11;否则,认为航班Flti排序成功,令SortModei=1,继续后续处理。
步骤2-2-10,更新排序成功航班信息,包括:
1)更新航班Flti的起飞时刻排序信息
如果tmpMinSTDi>MinSTDi,令MinSTDi=tmpMinSTDi;如果tmpMaxSTDi<MaxSTDi,令MaxSTDi=tmpMaxSTDi;
令STDi=tmpMinSTDi。
2)更新航班Flti的降落时刻排序信息
如果tmpMinSTAi>MinSTAi,令MinSTAi=tmpMinSTAi;
如果tmpMaxSTAi<MaxSTAi,令MaxSTAi=tmpMaxSTAi;
令STAi=STDi+(ETAi-ETDi),如果STAi<MinSTAi,则STAi=MinSTAi;STAi=(STAi/SlotSpanTime)*SlotSpanTime。
3)更新航班Flti的过点时间排序信息:
令tmpMinDelayi=MinSTDi-ETDi,tmpMaxDelayi=MaxSTDi-ETDi,tmpDepDelayi=STDi-ETDi;
对于航班Flti的过点队列PassPtListi中每个点PassPti,j进行以下处理:
令PassPti,j(tmpSTO)=PassPti,j(ETO)+tmpDepDelayi;
PassPti,j(tmpMinSTO)=PassPti,j(ETO)+tmpMinDelayi;
PassPti,j(tmpMaxSTO)=PassPti,j(ETO)+tmpMaxDelayi;
如果PassPti,j(tmpMinSTO)>PassPti,j(MinSTO),令PassPti,j(MinSTO)=PassPti,j(tmpMinSTO);
如果PassPti,j(tmpMaxSTO)<PassPti,j(MaxSTO),令PassPti,j(MaxSTO)=PassPti,j(tmpMaxSTO);
令PassPti,j(STO)=PassPti,j(tmpSTO),如果PassPti,j(STO)<PassPti,j(MinSTO),则PassPti,j(STO)=PassPti,j(MinSTO);
返回步骤2-2-3;
步骤2-2-11,更新排序失败航班的起降时刻信息;
更新航班Flti的排序起降时刻信息:令SortModei=3;令STAi=STDi+(ETAi-ETDi),且STAi=(STAi/SlotSpanTime)*SlotSpanTime;令DepDelayi=STDi-ETDi;令STDi=tmpMinSTDi;返回步骤2-2-3;
步骤2-3的功能为:对于指定的航班队列,检测其内每架航班根据分配的起降时间、在途径扇区时是否满足对应的容量资源限制,定位不满足条件的航班。其处理流程如图4所示。
步骤2-3包括:
步骤2-3-1,确定待检测的航班队列
如果参与检测的是飞越航班队列,则令FltListCheck=FltListPassBy;
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤2-3-2,重置航班的扇区容量检测状态
针对FltListCheck队列中每架航班Flti,如果该航班当前的SortModei不为1或者SectorCheckModei不为1,说明该航班之前没有顺利通过扇区容量检测,则令该航班的SectorCheckModei=0,且该航班过扇队列PassSectorListi中每个扇区PassSectori,j的SectorCheckModei,j=0;
步骤2-3-3,筛选待处理时间片
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;
步骤2-3-4,筛选待处理扇区
针对全国扇区队列SECOTRLIST,从队头开始,依次取第k个扇区SECTORk,k∈[1,SectorTotalNum];循环完毕后,返回步骤2-3-3。
步骤2-3-5,筛选待处理航班
从FltListCheck队列中筛选第j个时间片内进入扇区SECTORk且需要参与检测的航班,将其加入FltListTmp。其处理流程如图5所示。
步骤2-3-5-1,清空临时航班队列:清空FltListTmp,令FltTotalNumTmp=0;
步骤2-3-5-2,清空航班处理状态:针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-3-5-3,筛选待处理航班:从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-3-5-4,判断航班Flti的排序状态位:本步骤仅对排序成功的航班进行检测,因此如果SortModei不为1,则返回步骤2-3-5-3;否则继续后续操作;
步骤2-3-5-5,判断Flti是否途径扇区SECTORk:判断航班Flti的过扇队列PassSectorListi中是否包括扇区SECTORk;如果不存在,则返回步骤2-3-5-3;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-5-6,判断Flti当前的扇区容量检测状态:如果Flti的SectorCheckModei为1,且SectorCheckModei,m为1,说明该航班前期已通过扇区容量检测,无需再次检测,返回步骤2-3-5-3;否则继续后续操作;
步骤2-3-5-7,计算Flti当前可行的排序起降时间
令tmpMinSTAi=ETAi+(STDi-ETDi),如果tmpMinSTAi<MinSTAi,则令tmpMinSTAi=MinSTAi;
令tmpMaxSTAi=ETAi+(STDi-ETDi)+(SlotSpanTime-1),如果tmpMaxSTAi>MaxSTAi,则令tmpMaxSTAi=MaxSTAi;
令tmpMinSTDi=STDi,如果tmpMinSTDi<MinSTDi,则令tmpMinSTDi=MinSTDi;
令tmpMaxSTDi=STDi+(SlotSpanTime-1),如果tmpMaxSTDi>MaxSTDi,则令tmpMaxSTDi=MaxSTDi;
步骤2-3-5-8,计算Flti进入扇区SECTORk的可行时间范围;
令PassSectori,m(tmpInMinSTO)=PassSectori,m(InETO)+(tmpMinSTDi-ETDi),如果PassSectori,m(tmpInMinSTO)<PassSectori,m(InMinSTO),则令PassSectori,m(tmpInMinSTO)=PassSectori,m(InMinSTO);
令PassSectori,m(tmpInMaxSTO)=PassSectori,m(InETO)+(tmpMaxSTDi-ETDi),如果PassSectori,m(tmpInMaxSTO)>PassSectori,m(InMaxSTO),则令PassSectori,m(tmpInMaxSTO)=PassSectori,m(InMaxSTO);
步骤2-3-5-9,判断航班的排序进扇区时间是否在统计时段内:
如果满足tmpInMinSTO∈[CapBgnTimej,CapEndTimej),或者tmpInMaxSTO∈[CapBgnTimej,CapEndTimej),则说明Flti能够在该时间片内进入扇区SECTORk,继续后续处理;如果不满足,则返回至步骤2-3-5-3;
步骤2-3-5-10,计算航班Flti的处理优先级;
令FltPrioi=Flti(PRIO);
步骤2-3-5-11,更新航班Flti的排序时间:令MinSTAi=tmpMinSTAi;
令MaxSTAi=tmpMaxSTAi;令MinSTDi=tmpMinSTDi;令MaxSTDi=tmpMaxSTDi;
令PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
令PassSectori,m(InMaxSTO)=PassSectori,m(tmpInMaxSTO);
步骤2-3-5-12,将航班Flti加入到临时航班队列中:将航班加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;返回步骤2-3-5-3;
步骤2-3-6,按照进扇区时间以及优先级对航班进行排序,包括:
步骤2-3-6-1,根据进扇区时间进行排序;
为保证公平性,根据先到先服务准则,对FltListTmp中每架航班Flti,根据其进入扇区SECTORk最早可行时间PassSectori,m(InMinSTO),按照从先到后的顺序进行排序;
步骤2-3-6-2,根据航班处理优先级进行排序
在上一步基础上,根据FltListTmp中每架航班Flti的处理优先级FltPrioi,按照由大到小的顺序进行排序。
步骤2-3-7,获取扇区可用空闲容量,包括:
获取扇区SECTORk当前能够为FltListTmp中航班提供的空闲容量。其处理流程如图6所示。具体包括:
步骤2-3-7-1,获取扇区SECTORk在第j个时间片能够为FltListCheck中航班提供的总容量;
如果FltListCheck为飞跃航班队列,则SectorCapUsek,j=SectorCapPassByk,j;
如果FltListCheck为外国降落航班队列,则SectorCapUsek,j=SectorCapArrk,j;
如果FltListCheck为国内起飞航班队列,则SectorCapUsek,j=SectorCapDepk,j;
如果FltListCheck为国内起降航班队列,则SectorCapUsek,j=SectorCapDepArrk,j;
步骤2-3-7-2,计算已被FltListCheck中航班占用的容量值;
令SectorCapUsedk,j=0;
步骤2-3-7-2-1,清空航班处理状态
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-3-7-2-2,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,循环开展后续操作;如果不存在待处理航班,则结束循环,跳至步骤2-3-7-3。
步骤2-3-7-2-3,判断航班Flti的排序状态位;
如果航班Flti的排序状态位SortModei不为1,返回步骤2-3-7-2-2;否则继续后续处理;
步骤2-3-7-2-4,判断航班Flti的扇区容量检测状态;
如果Flti的SectorCheckModei不为1,返回步骤2-3-7-2-2;否则继续后续处理;
步骤2-3-7-2-5,判断航班Flti是否途径扇区SECTORk;
判断航班Flti的过扇队列PassSectorListi中是否存在扇区SECTORk;如果不存在,则返回步骤2-3-7-2-2;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-7-2-6,判断航班Flti当前在扇区SECTORk的扇区容量检测状态:
如果Flti在扇区SECTORk的扇区容量检测状态SectorCheckModei,m不为1,则返回步骤2-3-7-2-2;否则继续后续操作;
步骤2-3-7-2-7,判断航班Flti的进扇区时间是否在统计时段内;
如果满足PassSectori,m(InSTO)∈[CapBgnTimej,CapEndTimej),则令SectorCapUsedk,j++(即SectorCapUsedk,j=SectorCapUsedk,j+1);
返回步骤2-3-7-2-2;
步骤2-3-7-3,计算扇区SECTORk在第j个时间片能够为FltListTmp中航班分配的空闲容量;
令SectorCapUsek,j=SectorCapUsek,j-SectorCapUsedk,j;
步骤2-3-8,检查航班是否满足扇区容量限制
其处理流程如图7所示。包括:
步骤2-3-8-1,清空航班处理状态
针对FltListTmp队列中每架航班Flti,令其DealMarki=0;令SectorFlowk,j=0;
步骤2-3-8-2,筛选待处理航班;
从FltListTmp队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-3-8-3,判断航班Flti是否途径扇区SECTORk;
判断航班Flti的过扇队列PassSectorListi中是否存在扇区SECTORk;如果不存在,则返回步骤2-3-8-2;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-8-4,判断当前新增流量是否超过空闲容量值
步骤2-3-8-4-1,未超过空闲容量的处理
即满足SectorFlowk,j<SectorCapUsek,j,说明航班Flti在扇区SECTORk的第j个时间片的容量检测成功,执行如下步骤:
1)更新检测标志位:令SectorCheckModei=1,SectorCheckModei,m=1;
2)更新新增流量值:令SectorFlowk,j++;
3)更新该航班过扇时间:令PassSectori,m(InSTO)=PassSectori,m(InMinSTO);
如果PassSectori,m(InSTO)<CapBgnTimej,令PassSectori,m(InSTO)=CapBgnTimej,PassSectori,m(InMinSTO)=CapBgnTimej;
如果PassSectori,m(InSTO)≥CapEndTimej,令
PassSectori,m(InSTO)=CapEndTimej-1,
PassSectori,m(InMinSTO)=CapEndTimej-1;
返回步骤2-3-8-2;
步骤2-3-8-4-2,超过空闲容量的处理
即满足SectorFlowk,j≥SectorCapUsek,j,该情况说明航班Flti不能在第j个时间片进入扇区SECTORk,容量检测失败;如果该航班当前没有进行时刻提前,则执行步骤2-3-8-4-2-1,否则跳至步骤2-3-8-4-2-2;
步骤2-3-8-4-2-1,对非时刻提前的航班进行处理
更新航班Flti的排序时间:
令PassSectori,m(tmpInMinSTO)=CapEndTimej;
令tmpMinSTDi=ETDi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
令tmpMinSTAi=ETAi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
判断过扇时间是否在可行时间范围内:
如果满足PassSectori,m(tmpInMinSTO)∈[PassSectori,m(InMinSTO),PassSectori,m(InMaxSTO)],
则进行步骤2-3-8-4-2-1-1;否则进行步骤2-3-8-4-2-1-2;
步骤2-3-8-4-2-1-1,过扇时间在可行范围内
更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:令SectorCheckModei=2,SectorCheckModei,m=2;
2)更新航班可行时间范围
令PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
返回步骤2-3-8-2;
步骤2-3-8-4-2-1-2,过扇时间不在可行范围内
航班Flti容量检测失败,为后续重新分配起飞时刻做准备,执行如步骤:
1)初始化航班Flti可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi),PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
4)更新容量检测标志位:
令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;
返回步骤2-3-8-2;
步骤2-3-8-4-2-2,对于时刻提前的航班进行处理
更新航班Flti可行时间范围:
令PassSectori,m(tmpInMinSTO)=CapEndTimej,
tmpMinSTDi=ETDi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
tmpMinSTAi=ETAi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
判断过扇时间是否在可行时间范围内:
如果满足
PassSectori,m(tmpInMinSTO)∈[PassSectori,m(InMinSTO),PassSectori,m(InMaxSTO)],
说明航班进扇区时间在可行时间范围内,进行步骤2-3-8-4-2-2-1;否则进行步骤2-3-8-4-2-2-2;
步骤2-3-8-4-2-2-1,过扇时间在可行范围内
更新航班Flti可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志
令SectorCheckModei=2,SectorCheckModei,m=2;
2)更新航班可行时间范围
令PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
返回步骤2-3-8-2;
步骤2-3-8-4-2-2-2,过扇时间不在可行范围内
航班Flti的容量检测失败,为后续重新分配起飞时刻做准备;
更新容量检测标志:令SectorCheckModei=3,SectorCheckModei,m=3;
判断航班能否继续进行时刻提前:如果(STDi-SlotSpanTime)≥tBgnTime,说明航班仍可继续提前,则进行步骤2-3-8-4-2-2-2-1;否则进行步骤2-3-8-4-2-2-2-2;
步骤2-3-8-4-2-2-2-1,对航班进行时刻提前,执行如下步骤:
1)初始化航班可行时间范围
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
令tmpMinSTDi=STDi-SlotSpanTime;
令tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi);
如果tmpMinSTDi<MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi<MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi);
4)更新容量检测标志位:令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;返回步骤2-3-8-2;
步骤2-3-8-4-2-2-2-2,终止对航班的时刻提前操作,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:令AARCheckModei=0;令SectorCheckModei=0;
3)更新航班可行时间范围:令STDi=MinSTDi,STAi=MinSTAi;
4)更新容量检测标志位:令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;
5)更新航班时刻调前状态:令Flti(InAccess)=0;返回步骤2-3-8-2;
步骤2-4包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3(即存在扇区容量检测失败的航班),则令SectorCheckMark=0,并停止检索。
步骤2-5包括:
如果SectorCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤2-6。
步骤2-6包括:
本方法中排序失败的航班会被建议消减,该建议消减航班对应的时隙将被空闲出来;在此情况下,为提高时隙资源利用并减少航班被消减的可能,需要在后续处理中对排序失败的航班重新进行时隙分配,为其寻找可用的时隙。
为方便后续对排序失败航班的重新进行时隙分配,本步骤重置排序失败航班的信息。其处理流程如图8所示。
步骤2-6-1,清空航班处理状态
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-6-2,筛选待处理航班:从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-6-3,判断航班的排序状态位:本步骤仅对排序失败的航班进行处理,因此如果航班的SortModei不为3,则返回步骤2-6-2;
步骤2-6-4,判断航班的重置次数:如果航班Flti满足RetryNumi>MaxRetryNum,说明难以为该航班找到合适的时隙,为提高效率,后续不再对该航班进行重置以及时隙重新分配处理,返回步骤2-6-2;否则,继续后续处理;
步骤2-6-5,重置航班的排序时间
1)初始化航班Flti的排序起降时间
令STDi=ETDi,STAi=ETAi;
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)更新排序状态标志位:令SortModei=2;
3)初始化排序延误值:令DepDelayi=0,ArrDelayi=0,MixDelayi=0;
4)更新容量检测标志位:令AARCheckModei=2,SectorCheckModei=2;
航班Flti的过扇队列PassSectorListi中每个扇区PassSectori,n,令SectorCheckModei,n=2;
5)更新排序起降时间:如果STDi<MinSTDi,STDi=MinSTDi;
如果STAi<MinSTAi,STAi=MinSTAi;
步骤2-6-6,更新航班的重置次数:令RetryNumi=RetryNumi+1;返回步骤2-6-2;
步骤3功能为:优化外国降落航班队列FltListArr里每架航班的时刻,使其能够满足所有途径扇区、以及降落机场的容量资源限制。其处理流程如图9所示。
步骤3包括如下步骤:
步骤3-1,变量定义;
步骤3-2,检测航班起飞时刻的合理性;
步骤3-3,检测航班是否满足着陆机场的进场容量资源限制;
步骤3-4,更新全国所有机场的进场容流平衡检测标志;
步骤3-5,检测航班是否满足途径扇区的容量资源限制;
步骤3-6,更新全国所有扇区的容流平衡检测标志;
步骤3-7,判断是否存在航班不满足容量限制;
步骤3-8,重置排序失败航班的信息。
步骤3-1,定义如下变量:
AARCheckMark:全国所有机场的进场容流平衡检测标志,0:表示检测失败,1:表示检测成功,初始值为0;
AARCapUsek,j:本次计算中机场APTk在第j个时间片能够为FltListTmp中航班提供的进场容量值;
AARCapUsedk,j:机场APTk在第j个时间片已被占用的进场容量值;
ArrFlowk,j:机场APTk在第j个时间片内新增进场流量值,初始值为0;
Flti(InAccess):航班Flti当前的时刻提前状态标志,1:表示航班正在进行时刻提前,0表示航班当前未进行时刻提前。
步骤3-2,检测航班起飞时刻的合理性
本步骤功能为:对于外国降落航班队列FltListArr,为其内航班分配可行的排序时间,使其满足延误上限要求。处理方法见步骤2-2。
步骤3-3功能为:对于指定的航班队列,检测其内每架航班根据分配的起降时间,是否满足其着陆机场的容量资源限制,定位不满足条件的航班。其处理流程如图10所示。步骤3-3包括:
步骤3-3-1,确定待检测的航班队列
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤3-3-2,重置航班的着陆机场容量检查状态
针对FltListCheck队列中每架航班Flti,如果该航班当前的SortModei不为1或者AARCheckModei不为1,说明该航班之前没有顺利通过着陆机场的容量检测,则令该航班的AARCheckModei=0;
步骤3-3-3,筛选待处理时间片
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;
步骤3-3-4,筛选待处理机场
针对全国机场队列APTLIST,从队头开始,依次取第k个机场APTk,k∈[1,AptTotalNum];循环完毕后,返回步骤3-3-3。
步骤3-3-5,筛选待处理航班
从FltListCheck队列中筛选第j个时间片内在机场APTk着陆且需要参与检测的航班,将其加入FltListTmp。其处理流程如图11所示,具体包括:
步骤3-3-5-1,清空临时航班队列:清空FltListTmp,令FltTotalNumTmp=0;
步骤3-3-5-2,清空航班处理状态:针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤3-3-5-3,筛选待处理航班:从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤3-3-5-4,判断航班Flti的排序状态位:本步骤仅对排序成功的航班进行检测,因此如果SortModei不为1,则返回步骤3-3-5-3;否则继续后续操作;
步骤3-3-5-5,判断Flti是否在机场APTk着陆:判断航班的着陆机场ArrApti是否为APTk;如果不是,则返回步骤3-3-5-3;如果是,继续后续处理;
步骤3-3-5-6,判断Flti当前着陆机场容量的检测状态
如果Flti的AARCheckModei为1,说明该航班前期已通过着陆机场的容量检测,无需再次检测,返回步骤3-3-5-3;否则继续后续操作;
步骤3-3-5-7,计算Flti当前可行的排序时间
令tmpMinSTAi=ETAi+(STDi-ETDi),如果tmpMinSTAi<MinSTAi,则令tmpMinSTAi=MinSTAi;
令tmpMaxSTAi=ETAi+(STDi-ETDi)+(SlotSpanTime-1),如果tmpMaxSTAi>MaxSTAi,则令tmpMaxSTAi=MaxSTAi;
令tmpMinSTDi=STDi,如果tmpMinSTDi<MinSTDi,则令tmpMinSTDi=MinSTDi;
令tmpMaxSTDi=STDi+(SlotSpanTime-1),如果tmpMaxSTDi>MaxSTDi,则令tmpMaxSTDi=MaxSTDi;
步骤3-3-5-8,判断航班的排序着陆时间是否在统计时段内:如果满足tmpMinSTA∈[CapBgnTimej,CapEndTimej),或者tmpMaxSTA∈[CapBgnTimej,CapEndTimej),则说明Flti能够在该时间片内在APTk机场着陆,继续后续处理;如果不满足,则返回至步骤3-3-5-3;
步骤3-3-5-9,计算航班Flti的处理优先级;
令FltPrioi=Flti(PRIO);
步骤3-3-5-10,更新航班Flti的排序时间:令MinSTAi=tmpMinSTAi;令MaxSTAi=tmpMaxSTAi;令MinSTDi=tmpMinSTDi;令MaxSTDi=tmpMaxSTDi;
步骤3-3-5-11,将航班Flti加入到临时航班队列中:将航班加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;返回步骤3-3-5-3;
步骤3-3-6,按照着陆时间以及优先级对航班进行排序,包括:
步骤3-3-6-1,根据着陆时间进行排序;
为保证公平性,根据先到先服务准则,对FltListTmp中每架航班Flti,根据其在机场APTk最早可行着陆时间MinSTAi,按照从先到后的顺序进行排序;
步骤3-3-6-2,根据航班处理优先级进行排序
在上一步基础上,根据FltListTmp中每架航班Flti的处理优先级FltPrioi,按照由大到小的顺序进行排序。
步骤3-3-7,获取机场可用空闲进场容量
获取机场APTk当前能够为FltListTmp中航班提供的空闲进场容量。其处理流程如图12所示。具体包括:
步骤3-3-7-1,获取机场APTk在第j个时间片能够为FltListCheck中航班提供的进场总容量;
如果FltListCheck为外国降落航班队列,则AARCapUsek,j=AptCapArrk,j;
如果FltListCheck为国内起降航班队列,则AARCapUsek,j=AptCapArrDepk,j;
步骤3-3-7-2,计算已被FltListCheck中航班占用的容量值:令AARCapUsedk,j=0,执行如下步骤:
步骤3-3-7-2-1,清空航班处理状态
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤3-3-7-2-2,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,循环开展后续操作;如果不存在待处理航班,则结束循环,跳至步骤3-3-7-3。
步骤3-3-7-2-3,判断航班Flti的排序状态位:如果航班Flti的排序状态位SortModei不为1,返回步骤3-3-7-2-2;否则继续后续处理;
步骤3-3-7-2-4,判断航班Flti是否在机场APTk着陆:判断航班Flti的着陆机场是否为APTk;如果不是,则返回步骤3-3-7-2-2;如果是,继续后续操作;
步骤3-3-7-2-5,判断航班Flti的着陆机场进场容量检测状态;
如果Flti的AARCheckModei不为1,返回步骤3-3-7-2-2;否则继续后续处理;
步骤3-3-7-2-6,判断航班Flti的着陆时间是否在统计时段内:如果满足STAi∈[CapBgnTimej,CapEndTimej),则令AARCapUsedk,j++;返回步骤3-3-7-2-2;
步骤3-3-7-3,计算机场APTk在第j个时间片能够为FltListTmp中航班分配的空闲容量;
令AARCapUsek,j=AARCapUsek,j-AARCapUsedk,j;
步骤3-3-8,检查航班是否满足着陆机场的进场容量限制,其处理流程如图13所示。包括:
步骤3-3-8-1,清空航班处理状态
针对FltListTmp队列中每架航班Flti,令其DealMarki=0;令ArrFlowk,j=0;
步骤3-3-8-2,筛选待处理航班:从FltListTmp队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤3-3-8-3,判断当前新增流量是否超过空闲容量值,包括如下步骤:
步骤3-3-8-3-1,未超过空闲容量的处理
即满足ArrFlowk,j<AARCapUsek,j,说明航班Flti在机场APTk的第j个时间片的进场容量检测成功,包括如下步骤:
1)更新检测标志位:令AARCheckModei=1;
2)更新新增流量值:令ArrFlowk,j++(即ArrFlowk,j=ArrFlowk,j+1);
3)更新该航班的排序时间:令STAi=MinSTAi;
如果STAi<CapBgnTimei,则STAi=CapBgnTimei;
如果STAi≥CapEndTimei,则STAi=CapEndTimei-1;返回步骤3-3-8-2;
步骤3-3-8-3-2,超过空闲容量的处理:即满足ArrFlowk,j≥AARCapUsek,j,该情况说明航班Flti不能在第j个时间片在机场APTk着陆,容量检测失败;
如果该航班当前没有进行时刻提前,则执行步骤3-3-8-3-2-1,否则跳至步骤3-3-8-3-2-2;
步骤3-3-8-3-2-1,对非时刻提前的航班进行处理
更新航班Flti的排序时间:令tmpMinSTAi=CapEndTimej;
令tmpMinSTDi=ETDi+(tmpMinSTAi-ETAi);
判断着陆时间是否在可行时间范围内:如果满足tmpMinSTAi∈[MinSTAi,MaxSTAi],则进行步骤3-3-8-3-2-1-1;否则进行步骤3-3-8-3-2-1-2;
步骤3-3-8-3-2-1-1,着陆时间在可行范围内
更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:令AARCheckModei=2;
2)更新航班可行时间范围:令STAi=tmpMinSTAi;
如果tmpMinSTDi>MinSTDi,则MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,则MinSTAi=tmpMinSTAi;返回步骤3-3-8-2;
步骤3-3-8-3-2-1-2,着陆时间不在可行范围内:航班Flti容量检测失败,为后续重新分配起飞时刻做准备,执行如下步骤:
1)初始化航班可行时间范围
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO);
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi);
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:令AARCheckModei=0;令SectorCheckModei=0;
3)更新航班可行时间范围
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi),
4)更新容量检测标志位:令SortModei=2,AARCheckModei=3;返回步骤3-3-8-2;
步骤3-3-8-3-2-2,对于时刻提前的航班进行处理:
更新航班可行时间范围:令tmpMinSTAi=CapEndTimej,
tmpMinSTDi=ETDi+(tmpMinSTAi-ETAi);
判断着陆时间是否在可行时间范围内:
如果满足tmpMinSTAi∈[MinSTAi,MaxSTAi],则进行步骤3-3-8-3-2-2-1;否则进行步骤3-3-8-3-2-2-2;
步骤3-3-8-3-2-2-1,着陆时间在可行范围内:更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:令AARCheckModei=2;
2)更新航班可行时间范围:令STAi=tmpMinSTAi;
如果tmpMinSTDi>MinSTDi,则MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,则MinSTAi=tmpMinSTAi;
返回步骤3-3-8-2;
步骤3-3-8-3-2-2-2,着陆时间不在可行范围内
航班Flti的容量检测失败,为后续重新分配起飞时刻做准备;
更新容量检测标志:令AARCheckModei=3;
判断航班能否继续进行时刻提前:
如果(STDi-SlotSpanTime)≥tBgnTime,说明航班仍可继续提前,则进行步骤3-3-8-3-2-2-2-1;否则进行步骤3-3-8-3-2-2-2-2;
步骤3-3-8-3-2-2-2-1,对航班进行时刻提前,执行如下步骤:
1)初始化航班可行时间范围
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:令AARCheckModei=0;令SectorCheckModei=0;
3)更新航班可行时间范围
tmpMinSTDi=STDi-SlotSpanTime;
tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi);
如果tmpMinSTDi<MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi<MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi);
4)更新容量检测标志位:令SortModei=2,AARCheckModei=3;返回步骤3-3-8-2;
步骤3-3-8-3-2-2-2-2,终止对航班的时刻提前操作,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:令AARCheckModei=0;令SectorCheckModei=0;
3)更新航班可行时间范围:令STDi=MinSTDi,STAi=MinSTAi;
4)更新容量检测标志位:令SortModei=2,AARCheckModei=3;
5)更新航班时刻提前状态:令Flti(InAccess)=0;返回步骤3-3-8-2;
步骤3-4包括:令AARCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其进场容量检测标志,如果AARCheckModei为3(即存在进场容量检测失败的航班),则令AARCheckMark=0,并停止检索。
步骤3-5,检测航班是否满足途径扇区的容量资源限制
本步骤功能为:对于外国降落航班队列FltListArr,检测其内每架航班根据分配的起降时间、在途径扇区时是否满足对应的容量资源限制,定位不满足条件的航班。
处理方法见步骤2-3。
步骤3-6包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3(即存在扇区容量检测失败的航班),则令SectorCheckMark=0,并停止检索。
步骤3-7包括:如果SectorCheckMark为1且AARCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤3-8。
步骤3-8包括:本步骤功能为:重置外国降落航班队列FltListArr中排序失败航班的信息,处理方法见步骤2-6。当FltListCheck队列中排序失败航班重置完毕后,返回步骤3-2。
步骤4功能为:优化国内起飞航班队列FltListDep里每架航班的时刻,使其能够满足所有途径扇区、以及起飞机场的容量资源限制。其处理流程如图14所示。
步骤4包括如下步骤:
步骤4-1,变量定义;
步骤4-2,机场离场容量分解;
步骤4-3,根据机场的离场容量限制优化航班时刻;
步骤4-4,检测航班是否满足途径扇区的容量资源限制;
步骤4-5,更新全国所有扇区的容流平衡检测标志;
步骤4-6,判断是否存在航班不满足容量限制;
步骤4-7,重置排序失败航班的信息。
步骤4-1中,定义如下变量:
[SlotBgnTimej,k,SlotEndTimej,k):第j个时间片的第k个时隙,其中SlotBgnTimej,k为该时隙的开始时间,SlotEndTimej,k为该时隙的截止时间。
SlotSpanNumj:第j个时间片内的时隙个数;
SlotCapi,j,k:机场APTi在第j个时间片的第k个时隙的容量;
SlotFlowi,j,k:机场APTi在第j个时间片的第k个时隙的离场量;
ADRCapUsei,j:机场APTi在第j个时间片能够为航班提供的离场容量值;
SlotCapUsek,i,j:机场APTk在第i个时间片的第j个时隙能够为FltListTmp中航班提供的离场容量值;
SlotCapUsedk,i,j:机场APTk在第i个时间片的第j个时隙已被占用的离场容量值;
DepSlotFlowk,i,j:机场APTk在第i个时间片的第j个时隙的新增离场流量值,初始值为0;
步骤4-2,机场离场容量分解,包括:
为使得航班时刻的调整结果贴合当前航班时刻表特征(当前民航航班时刻表内公布的时刻按照5分钟步长进行变化),按照时刻调整步长对机场的离场容量进行分解。
为提高容量资源的利用,容量的分解遵循各时隙的流量分布情况。其处理流程如图15所示。
步骤4-2-1,确定待检测的航班队列
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤4-2-2,筛选待处理机场
针对全国机场队列APTLIST,从队头开始,依次取第i个机场APTi,i∈[1,AptTotalNum],并循环开展以下处理:
步骤4-2-3,筛选待处理时间片
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;循环完毕后,返回步骤4-2-2。
步骤4-2-4,获取机场可用的离场容量
获取机场APTi在第j个时间片能够为FltListCheck中航班提供的离场容量。
如果参与检测的是国内起飞航班队列:则ADRCapUsei,j=AptCapDepi,j;
如果参与检测的是国内起降航班队列:则ADRCapUsei,j=AptCapDepArri,j;
步骤4-2-5,将时间片划分成多个时隙
按照参数SlotSpanTime将第j个时间片划分成多个时隙。
每个时隙为[SlotBgnTimej,k,SlotEndTimej,k),k∈[1,SlotSpanNumj];
步骤4-2-6,计算各个时隙内离场的航班量
根据FltListCheck中航班的起飞时间STDi以及起飞机场DepApti,统计机场APTi的第j个时间片内各个时隙的离场航班量SlotFlowi,j,k,k∈[1,SlotSpanNumj];
步骤4-2-7,计算各个时隙的容量
根据各时隙的流量占比,计算时隙的容量。
返回步骤4-2-3。
步骤4-3,根据机场的离场容量限制优化航班时刻
本步骤的功能为:对于指定的航班队列,检测其内每架航班根据分配的起降时间,是否满足其起飞机场的容量资源限制,更新不满足条件航班的时刻。其处理流程如图16所示。
步骤4-3包括:步骤4-3-1,确定待检测的航班队列
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤4-3-2,筛选待处理时间片
按照时间先后顺序,依次取第i个时间片[CapBgnTimei,CapEndTimei),i∈[1,CapSpanNum],并循环开展以下处理;循环完毕后,跳至步骤4-3-9;
步骤4-3-3,筛选待处理的时隙
按照时间先后顺序,依次取第i个时间片内的第j个时隙[SlotBgnTimei,j,SlotEndTimei,j),j∈[1,SlotSpanNumi],并循环开展以下处理;循环完毕后,返回步骤4-3-2;
步骤4-3-4,筛选待处理机场
针对全国机场队列APTLIST,从队头开始,依次取第k个机场APTk,k∈[1,AptTotalNum],并循环开展以下处理;循环完毕后,返回步骤4-3-3;
步骤4-3-5,筛选待处理航班
从FltListCheck队列中筛选第i个时间片的第j个时隙内在机场APTk起飞且需要参与检测的航班,将其加入FltListTmp。其处理流程如图17所示。包括如下步骤:
步骤4-3-5-1,清空临时航班队列:清空FltListTmp,令FltTotalNumTmp=0;
步骤4-3-5-2,清空航班处理状态:针对FltListCheck队列中每架航班Fltm,令其DealMarkm=0;
步骤4-3-5-3,筛选待处理航班:从FltListCheck队列的第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,开展后续操作;如果所有航班均已处理,结束循环。
步骤4-3-5-4,判断航班Fltm的排序状态位:对于已成功分配时刻或者排序失败的航班无需再次检测,因此如果SortModem为1或者3,则返回步骤4-3-5-3;否则继续后续操作;
步骤4-3-5-5,判断Fltm是否在机场APTk起飞
判断航班Fltm的起飞机场是否为APTk;如果不是,则返回步骤4-3-5-3;如果是,继续后续处理;
步骤4-3-5-6,判断航班是否满足统计时段要求
如果该航班当前没有进行时刻提前,则执行步骤4-3-5-6-1;否则跳至步骤4-3-5-6-2;步骤4-3-5-6-1,判断非时刻提前航班是否在统计时段内
如果航班Fltm满足STDm<SlotEndTimei,j,则说明Fltm能够在该时间片内在APTk机场起飞,跳至步骤4-3-5-7;如果不满足,则返回至步骤4-3-5-3;
步骤4-3-5-6-2,判断时刻提前航班是否在统计时段内
如果航班Fltm同时满足以下三个条件:
1)STDm<SlotEndTimei,j,
2)ETDm≥SlotEndTimei,j
3)(STDm+SlotSpanTime)≥SlotEndTimei,j
则说明Fltm能够在该时间片内在APTk机场起飞,继续步骤4-3-5-7;如果不满足,则返回至步骤4-3-5-3;
步骤4-3-5-7,计算航班的处理优先级:令FltPriom=Fltm(PRIO);
步骤4-3-5-8,将航班加入到临时航班队列中;
将航班Fltm加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;
返回步骤4-3-5-3;
步骤4-3-6,按照起飞时间以及优先级对航班进行排序,包括:
步骤4-3-6-1,根据起飞时间进行排序;
为保证公平性,根据先到先服务准则,对FltListTmp中每架航班Fltm,根据其在机场APTk最早可行起飞时间MinSTDm,按照从先到后的顺序进行排序;
步骤4-3-6-2,根据航班处理优先级进行排序
在上一步基础上,根据FltListTmp中每架航班Fltm的处理优先级FltPriom,按照由大到小的顺序进行排序。
步骤4-3-7,获取机场可用空闲离场容量
获取机场APTk当前能够为FltListTmp中航班提供的空闲离场容量。其处理流程如图18所示。包括:
步骤4-3-7-1,获取机场APTk在第i个时间片的第j个时隙能够为FltListCheck中航班提供的离场场总容量;
令SlotCapUsek,i,j=SlotCapk,i,j;
步骤4-3-7-2,计算已被FltListCheck中航班占用的容量值;
令SlotCapUsedk,i,j=0;
步骤4-3-7-2-1,清空航班处理状态
针对FltListCheck队列中每架航班Fltm,令其DealMarkm=0;
步骤4-3-7-2-2,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,循环开展后续操作;如果不存在待处理航班,则跳至步骤4-3-7-3。
步骤4-3-7-2-3,判断航班Fltm的排序状态位;
如果航班Fltm的排序状态位SortModem不为1,返回步骤4-3-7-2-2;否则继续后续处理;
步骤4-3-7-2-4,判断航班Fltm是否在机场APTk起飞;
判断航班Fltm的起飞机场是否为APTk;如果不是,则返回步骤4-3-7-2-2;如果是,继续后续操作;
步骤4-3-7-2-5,判断航班Fltm的起飞时间是否在统计时段内;
如果满足STDm∈[SlotBgnTimei,j,SlotEndTimei,j),则令SlotCapUsedk,i,j++;
返回步骤4-3-7-2-2;
步骤4-3-7-3,计算机场APTk在第i个时间片的第j个时隙能够为FltListTmp中航班分配的空闲容量;
令SlotCapUsek,i,j=SlotCapUsek,i,j-SlotCapUsedk,i,j;
步骤4-3-8,检查航班是否满足起飞机场的离场容量限制
其处理流程如图19所示。包括:
步骤4-3-8-1,清空航班处理状态
针对FltListTmp队列中每架航班Fltm,令其DealMarkm=0;
令DepSlotFlowk,i,j=0;
步骤4-3-8-2,筛选待处理航班;
从FltListTmp队列第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,开展后续操作;如果所有航班均已处理,返回步骤4-3-4。
步骤4-3-8-3,判断当前新增流量是否超过空闲容量值,包括:
步骤4-3-8-3-1,如果未超过空闲容量
即满足DepSlotFlowk,i,j<SlotCapUsek,i,j,说明航班Fltm可以尝试***机场APTk的第i个时间片的第j个时隙;执行如下步骤:
步骤4-3-8-3-1-1,计算航班Fltm的时刻可行取值范围;
令STDm=SlotBgnTimei,j,
令tmpMinSTDm=STDm,tmpMaxSTDm=tmpMinSTDm+SlotSpanTime-1,
tmpMinSTAm=tmpMinSTDm+(ETAm-ETDm),
tmpMaxSTAm=tmpMaxSTDm+(ETAm-ETDm);
步骤4-3-8-3-1-2,计算航班Fltm当前的综合延误;
如果STDm<MinSTDm,则MixedDelaym=MinSTDm-ETDm;
否则MixedDelaym=STDm-ETDm;
步骤4-3-8-3-1-3,判断航班Fltm起飞时刻的合理性;
如果满足tmpMaxSTDm∈[MinSTDm,MaxSTDm]或者tmpMinSTDm∈[MinSTDm,MaxSTDm],继续后续处理;如果不满足,跳至步骤4-3-8-3-1-7;
步骤4-3-8-3-1-4,计算航班Fltm的起飞延误;
如果航班Fltm的排序状态位SortModem为0,令DepDelaym=0;如果SortModem为2,令DepDelaym=MixedDelaym;
步骤4-3-8-3-1-5,判断航班Fltm是否延误超量,包括如下步骤:
1)如果Fltm为非时刻提前航班,进行以下判断:
如果DepDelaym>DELE_VALUE,则认为延误超量,令SortModem=3,跳至步骤4-3-8-3-1-7;否则,认为航班Fltm排序成功,令SortModem=1,继续后续处理。
2)如果Fltm为时刻提前航班,进行以下判断:
如果|DepDelaym|>ACC_VALUE,则认为延误超量,令SortModem=3,跳至步骤4-3-8-3-1-7;否则,认为航班Fltm排序成功,令SortModem=1,继续后续处理。
步骤4-3-8-3-1-6,更新排序成功航班信息,包括:
1)更新航班Fltm的起飞时间排序信息:
如果tmpMinSTDm>MinSTDm,令MinSTDm=tmpMinSTDm;
如果tmpMaxSTDm<MaxSTDm,令MaxSTDm=tmpMaxSTDm;
2)更新航班Fltm的降落时间排序信息:
如果tmpMinSTAm>MinSTAm,令MinSTAm=tmpMinSTAm;
如果tmpMaxSTAm<MaxSTAm,令MaxSTAm=tmpMaxSTAm;
令STAm=STDm+(ETAm-ETDm),如果STAm<MinSTAm,则STAm=MinSTAm;STAm=(STAm/SlotSpanTime)*SlotSpanTime;
3)更新航班Fltm的过点时间排序信息:
令tmpMinDelaym=MinSTDm-ETDm,tmpMaxDelaym=MaxSTDm-ETDm,tmpDepDelaym=STDm-ETDm;
对于航班Fltm的过点队列PassPtListm中每个点PassPtm,n进行以下处理:
令PassPtm,n(tmpSTO)=PassPtm,n(ETO)+tmpDepDelaym;
PassPtm,n(tmpMinSTO)=PassPtm,n(ETO)+tmpMinDelaym;
PassPtm,n(tmpMaxSTO)=PassPtm,n(ETO)+tmpMaxDelaym;
如果PassPtm,n(tmpMinSTO)>PassPtm,n(MinSTO),令PassPtm,n(MinSTO)=PassPtm,n(tmpMinSTO);
如果PassPtm,n(tmpMaxSTO)<PassPtm,n(MaxSTO),令PassPtm,n(MaxSTO)=PassPtm,n(tmpMaxSTO);
令PassPtm,n(STO)=PassPtm,n(tmpSTO),如果PassPtm,n(STO)<PassPtm,n(MinSTO),则PassPtm,n(STO)=PassPtm,n(MinSTO);
更新新增离场流量值:
DepSlotFlowk,i,j++(即DepSlotFlowk,i,j=DepSlotFlowk,i,j+1);返回步骤4-3-8-2;
步骤4-3-8-3-1-7,更新排序失败航班信息
如果航班为时刻提前航班,则进行步骤4-3-8-3-1-7-1;否则进行步骤4-3-8-3-1-7-2。
步骤4-3-8-3-1-7-1,更新排序失败的非时刻提前航班信息
令STAm=STDm+(ETAm-ETDm),且
STAm=(STAm/SlotSpanTime)*SlotSpanTime;
令DepDelaym=STDm-ETDm;
令SortModem=3;
返回步骤4-3-8-2;
步骤4-3-8-3-1-7-2,更新排序失败的时刻提前航班信息,包括:
1)初始化航班可行时间范围:
令MinSTDm=ETDm,MaxSTDm=ETDm+DELE_VALUE,MinSTAm=ETAm,MaxSTAm=ETAm+DELE_VALUE;
针对航班Fltm过点队列PassPtListm中每个点PassPtm,n,令
PassPtm,n(STO)=PassPtm,n(ETO),
PassPtm,n(MinSTO)=PassPtm,n(ETO)+(MinSTDm-ETDm),
PassPtm,n(MaxSTO)=PassPtm,n(ETO)+(MaxSTDm-ETDm);
2)初始化容量检测标志位:令AARCheckModem=0;令SectorCheckModem=0;
3)更新航班排序起降时间信息:令STDm=MinSTDm,STAm=MinSTAm;
4)更新容量检测标志位:令SortModem=2;
5)更新航班时刻提前标志位:令Fltm(InAccess)=0;返回步骤4-3-8-2;
步骤4-3-8-3-2,如果超过空闲容量:即满足DepSlotFlowk,i,j≥SlotCapUsek,i,j,说明航班Fltm不能在第i个时间片的第j个时隙从机场APTk起飞,需另找时隙,包括:
步骤4-3-8-3-2-1,航班状态判断
判断航班是否满足时刻提前要求,如果满足以下任一条件,则航班时刻不可提前,执行步骤4-3-8-3-2-2;否则跳至步骤4-3-8-3-2-3。
不可进行航班时刻提前的条件,满足其中一条即可:
1)Fltm(InAccess)==0&&Fltm(Accessed)==1;
2)Fltm(InAccess)==0&&AARCheckModem==3;
3)Fltm(InAccess)==0&&SectorCheckModem==3;
步骤4-3-8-3-2-2,非时刻提前航班的处理,包括:
步骤4-3-8-3-2-2-1,更新航班加速状态:
令Fltm(InAccess)=0且Fltm(Accessed)=1;
步骤4-3-8-3-2-2-2,计算航班可行排序时间:
如果STDm<SlotEndTimei,j,则令STDm=SlotEndTimei,j,MixedDelaym=STDm-ETDm;令tmpMinSTDm=STDm;
令tmpMinSTAm=tmpMinSTDm+(ETAm-ETDm);
步骤4-3-8-3-2-2-3,判断起飞时间是否在可行范围内:
如果满足tmpMinSTDm∈[MinSTDm,MaxSTDm],则进行步骤4-3-8-3-2-2-4;否则进行步骤4-3-8-3-2-2-5;
步骤4-3-8-3-2-2-4,起飞时间在可行范围内的处理:
如果tmpMinSTDm>MinSTDm,则MinSTDm=tmpMinSTDm;
如果tmpMinSTAm>MinSTAm,则MinSTAm=tmpMinSTAm;
令STAm=ETAm+(STDm-ETDm);令SortModem=2;返回步骤4-3-8-2;
步骤4-3-8-3-2-2-5,起飞时间不在可行范围内的处理:
令STAm=STDm+(ETAm-ETDm),且STAm=(STAm/SlotSpanTime)*SlotSpanTime;
令DepDelaym=STDm-ETDm;令SortModem=3;返回步骤4-3-8-2;
步骤4-3-8-3-2-3,时刻提前航班的处理,包括:
步骤4-3-8-3-2-3-1,更新航班加速状态:
令Fltm(InAccess)=1且Fltm(Accessed)=1;
步骤4-3-8-3-2-3-2,计算航班可行排序时间:
令tmpSTDm=SlotBgnTimei,j-SlotSpanTime;
如果满足tmpSTDm≥ETDm,则tmpSTDm=ETDm-SlotSpanTime;
如果满足STDm>tmpSTDm,则令STDm=tmpSTDm,MixedDelaym=STDm-ETDm;
令tmpSTDm=STDm;令tmpSTAm=tmpSTDm+(ETAm-ETDm);
步骤4-3-8-3-2-3-3,判断排序时间是否在可行时间范围内:
如果满足|MixedDelaym|>ACC_VALUE,则该航班超过加速上限,进行步骤4-3-8-3-2-3-4;否则进行步骤4-3-8-3-2-3-5。
步骤4-3-8-3-2-3-4,未超过加速上限航班的处理
如果tmpMinSTDm<MinSTDm,则MinSTDm=tmpMinSTDm;
如果tmpMinSTAm<MinSTAm,则MinSTAm=tmpMinSTAm;
令STAm=ETAm+(STDm-ETDm);令SortModem=2;返回步骤4-3-8-2;
步骤4-3-8-3-2-3-5,超过加速上限航班的处理,包括:
1)初始化航班可行时间范围:
令MinSTDm=ETDm,MaxSTDm=ETDm+DELE_VALUE,MinSTAm=ETAm,MaxSTAm=ETAm+DELE_VALUE;
针对航班Fltm过点队列PassPtListm中每个点PassPtm,n,令
PassPtm,n(STO)=PassPtm,n(ETO),
PassPtm,n(MinSTO)=PassPtm,n(ETO)+(MinSTDm-ETDm),
PassPtm,n(MaxSTO)=PassPtm,n(ETO)+(MaxSTDm-ETDm);
2)初始化容量检测标志位:令AARCheckModem=0;令SectorCheckModem=0;
3)更新航班排序起降时间:令STDm=MinSTDm,STAm=MinSTAm;
4)更新容量检测标志位:令SortModem=2;
5)更新航班时刻提前标志位:令Fltm(InAccess)=0;返回步骤4-3-8-2;
步骤4-3-9,检测是否存在航班未处理完毕
检查FltListCheck队列中是否存在航班Fltm满足SortModem=2且STDm∈[tBgnTime,tEndTime);如果存在,则说明存在航班还未处理完毕,返回步骤4-3-2,再次开始循环;如果不存在,则计算完毕,退出循环。
步骤4-4,检测航班是否满足途径扇区的容量资源限制
本步骤功能为:对于国内起飞航班队列FltListDep,检测其内每架航班根据分配的起降时间、在途径扇区时是否满足对应的容量资源限制,定位不满足条件的航班。
处理方法见步骤2-3。
步骤4-5包括:更新全国所有扇区的容流平衡检测标志:令SectorCheckMark=1;
针对FltListCheck队列中每架航班Fltm,判断其扇区容量检测标志,如果SectorCheckModem为3(即存在扇区容量检测失败的航班),则令SectorCheckMark=0,并停止检索。
步骤4-6包括:如果SectorCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤4-7。
步骤4-7包括:本步骤功能为:重置国内起飞航班队列FltListDep中排序失败航班的信息,处理方法见步骤2-6。当FltListCheck队列中排序失败航班重置完毕后,返回步骤4-3。
步骤5功能为:优化国内起降航班队列FltListDepArr里每架航班的时刻,使其能够满足所有途径扇区、起飞机场、降落机场的容量资源限制。其处理流程如图20所示。
步骤5包括如下步骤:
步骤5-1,机场离场容量分解;
步骤5-2,根据机场的离场容量限制优化航班时刻;
步骤5-3,检测航班是否满足途径扇区的容量资源限制;
步骤5-4,更新全国所有扇区的容流平衡检测标志;
步骤5-5,检测航班是否满足着陆机场的进场容量资源限制;
步骤5-6,更新全国所有机场的进场容流平衡检测标志;
步骤5-7,判断是否存在航班不满足容量限制;
步骤5-8,重置排序失败航班的信息。
步骤5中令FltListCheck=FltListDepArr;
步骤5-1包括:本步骤功能为:对于机场分配给FltListDepArr队列的离场容量,按照时刻调整步长进行分解。处理方法见步骤4-2。
步骤5-2包括:本步骤的功能为:对于国内起降航班队列FltListDepArr,检测其内每架航班根据分配的起降时间,是否满足其起飞机场的容量资源限制,更新不满足条件航班的时刻。处理方法见步骤4-3。
步骤5-3包括:本步骤功能为:对于国内起降航班队列FltListDepArr,检测其内每架航班根据分配的起降时间、在途径扇区时是否满足对应的容量资源限制,定位不满足条件的航班。处理方法见步骤2-3。
步骤5-4包括:令SectorCheckMark=1;针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3(即存在扇区容量检测失败的航班),则令SectorCheckMark=0,并停止检索。
步骤5-5包括:本步骤的功能为:对于国内起降航班队列FltListDepArr,检测其内每架航班根据分配的起降时间,是否满足其着陆机场的容量资源限制,定位不满足条件的航班。处理方法步骤3-3。
步骤5-6包括:令AARCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其进场容量检测标志,如果AARCheckModei为3(即存在进场容量检测失败的航班),则令AARCheckMark=0,并停止检索。
步骤5-7包括:如果SectorCheckMark为1且AARCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤5-8。
步骤5-8包括:本步骤功能为:重置国内起降航班队列FltListDepArr中排序失败航班的信息,处理方法见步骤2-6。当FltListCheck队列中排序失败航班重置完毕后,返回步骤5-2。
步骤6包括:因本方法中,不会对豁免航班进行时刻调整,因此对于豁免航班队列FltListExempt中的每一架航班Flti,进行以下处理:
令SortModei=1;令DepDelayi=0;令STDi=ETDi,令STAi=ETAi;
对于航班Flti的过点队列PassPtListi中每个点PassPti,j,令PassPti,j(STO)=PassPti,j(ETO);
步骤7包括:上述步骤2-步骤6,对航班计划队列FltListIni中每架航班Flti的时刻进行优化,为其分配了排序状态SortModei、起飞延误DepDelayi、排序起飞时刻STDi、排序降落时刻STAi等排序信息;本方法通过将航班的排序信息与其原起降时刻进行比对,对全国航班的整体运行效能进行预先分析。
步骤7包括如下步骤:
步骤7-1,航班运行效能指标筛选;
步骤7-2,航班运行效能指标计算;
步骤7-1包括:根据与空管用户的交流,筛选关键性指标构成本方法的航班运行效能评估指标集,具体包括:航班总延误;航班平均延误;航班延误架次;航班消减架次;航班正常性;
用户可根据自身需要进行修改或扩充。
步骤7-2包括:
步骤7-2-1,变量定义
TotalFltDelay:全国航班的总延误,单位为小时;
AveFltDelay:全国航班的平均延误,单位为分钟。
FltDelayNum:全国航班的延误架次。
FltDeleteNum:全国航班的消减架次。
FltNormality:全国航班的正常性。
AdjMarki:航班Flti的时刻调整状态,0:未调整、1:时刻提前、2:延误、3:消减,初始值为0。
步骤7-2-2,计算航班时刻调整状态
对于FltListIni中每架航班Flti,根据其排序状态SortModei以及延误情况DepDelayi,判定航班的时刻调整状态,初始状态下令AdjMarki=0;判定条件如下。
1)延误航班判定
如果满足SortModei==1&&DepDelayi>0,则该航班为延误航班,令其AdjMarki=2。
2)时刻提前航班判定
如果满足SortModei==1&&DepDelayi<0,则该航班为延误航班,令其AdjMarki=1。
3)消减航班判定
如果满足SortModei==3,则该航班为建议消减航班,令其AdjMarki=3。
步骤7-2-3,计算航班延误架次指标
对于FltListIni中每架航班Flti,如果满足AdjMarki等于2,则该航班为延误航班,加入到延误架次统计量中,即FltDelayNum++(即FltDelayNum=FltDelayNum+1)。
步骤7-2-4,航班消减架次指标计算
对于FltListIni中每架航班Flti,如果满足AdjMarki等于3,则该航班为建议消减航班,加入到消减架次统计量中,即FltDeleteNum++(即FltDeleteNum=FltDeleteNum+1)。
步骤7-2-5,航班总延误指标计算
对于FltListIni中每架航班Flti,如果满足AdjMarki等于2,则该航班为延误航班,将该航班的延误DepDelayi加入到总延误TotalFltDelay中,即
注:本方法中,时刻提前航班不视为延误航班,因此不参与总延误计算。
步骤7-2-6,航班平均延误指标计算
步骤7-2-7,航班正常性指标计算
本发明提供了一种基于时刻表的航班运行效能预先评估方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (1)
1.一种基于时刻表的航班运行效能预先评估方法,其特征在于,包括如下步骤:
步骤1,准备计算数据;
步骤2,优化飞跃航班的时刻;
步骤3,优化外国降落航班的时刻;
步骤4,优化国内起飞航班的时刻;
步骤5,优化国内起降航班的时刻;
步骤6,优化豁免航班的时刻;
步骤7,计算航班运行效能;
步骤1包括如下步骤:
步骤1-1,定义变量;
步骤1-2,准备基础数据;
步骤1-3,处理基础数据;
步骤1-1包括:定义如下变量:
ANA_DATE:表示分析日期;
DELE_MARK:表示航班消减选项;
DELE_VALUE:表示消减延误参数;
ACC_MARK:表示航班时刻提前选项参数;
ACC_VALUE:表示加速延误参数
APTLIST:表示机场队列,包含全国所有的机场信息;
AptTotalNum:表示机场队列APTLIST中包含的机场个数;
APTi:表示机场队列APTLIST中的第i个机场;
APTi(CODE):表示机场APTi的四字代码;
APTi(PRO):表示机场APTi的属性,包括三类:主协调机场、辅协调机场、非协调机场;
APTi(PRIO):表示机场APTi的优先级;
SECTORLIST:表示扇区队列,包含全国所有的扇区信息;
SectorTotalNum:表示扇区队列SECTORLIST中包含的扇区个数;
SECTORi:表示扇区队列SECTORLIST中的第i个扇区;
SECTORi(CODE):表示扇区SECTORi的代码;
SECTORi(PRIO):表示扇区SECTORi的优先级;
FltListIni:表示航班计划初始队列,包含了与分析日期ANA_DATE相关的所有航班计划;
FltTotalNum:表示FltListIni中航班计划总个数;
FltListExempt:表示豁免航班队列;包含了FltListIni中所有豁免航班;
FltTotalNumExempt:表示FltListExempt队列中航班计划总个数;
FltListPassBy:表示飞跃航班队列;包含了FltListIni中所有起降机场均不在国内的航班;
FltTotalNumPassBy:表示FltListPassBy队列中航班计划总个数;
FltListArr:表示外国降落航班队列,包含FltListIni中所有降落机场在国内,起飞机场不在国内的航班;
FltTotalNumArr:表示FltListArr队列中航班计划总个数;
FltListDep:表示国内起飞航班队列,包含FltListIni中所有降落机场不在国内,起飞机场在国内的航班;
FltTotalNumDep:表示FltListDep队列中航班计划总个数;
FltListDepArr:表示国内起降航班队列,包含FltListIni中所有降落机场在国内,起飞机场也在国内的航班;
FltTotalNumDepArr:表示FltListDepArr队列中航班计划总个数;
Flti:表示航班计划队列里的第i条航班计划;
ACIDi:表示航班Flti的航班号;
Flti(PRIO):表示航班Flti的静态优先级;
DepApti:航班Flti的起飞机场;
ArrApti:航班Flti的降落机场;
ETDi:航班Flti的计划起飞时间;
ETAi:航班Flti的计划降落时间;
PassPtListi:表示航班Flti的过点队列,包含了航班Flti的所有途径航路点信息;
PassPti,j:表示航班Flti的过点队列PassPtListi中的第j个航路点信息;
PassPti,j(Code):表示航班Flti的过点队列PassPtListi中的第j个航路点PassPti,j的代码;
PassPti,j(ETO):表示航班Flti的过点队列PassPtListi中的第j个航路点PassPti,j的计划过点时间;
PassSectorListi:表示航班Flti的过扇队列,包含了航班Flti的所有途经扇区信息;
PassSectori,j:表示航班Flti的过扇队列PassPtListi中的第j个扇区信息;
PassSectori,j(Code):表示航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的代码;
PassSectori,j(InETO):表示航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的计划进扇时间;
PassSectori,j(OutETO):表示航班Flti的过扇队列PassSectori,j中的第j个扇区PassSectori,j的计划出扇时间;
SortModei:表示航班Flti的排序状态,包括4种状态:0表示未参与排序,1表示排序成功,2表示排序进行中,3表示排序失败,该状态位初始值为0;
STDi:表示航班Flti分配的起飞时刻,初始值为ETDi;
STAi:表示航班Flti分配的降落时刻,初始值为ETAi;
MinSTDi:表示航班Flti分配的最早起飞时间;
MaxSTDi:表示航班Flti分配的最迟起飞时间;
MinSTAi:表示航班Flti分配的最早降落时间;
MaxSTAi:表示航班Flti分配的最迟降落时间;
PassSectori,j(InSTO):表示航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的进扇时间;
PassSectori,j(InMinSTO):表示航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最早进扇时间;
PassSectori,j(InMaxSTO):表示航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最迟进扇时间;
PassPti,j(STO):表示航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的过点时间;
PassPti,j(MinSTO):表示航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最早过点时间;
PassPti,j(MaxSTO):表示航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最迟过点时间;
MixedDelayi:表示航班Flti分配的综合延误,单位为秒;
DepDelayi:表示航班Flti分配的起飞延误,单位为秒;
ArrDelayi:表示航班Flti分配的降落延误,单位为秒;
Flti(InAccess):表示航班Flti当前是否进行时刻提前的状态标志,1表示航班正在进行时刻提前,0表示航班当前未进行时刻提前;
Flti(Accessed):表示航班Flti历史上是否进行过时刻提前的状态标志,1表示航班进行过时刻提前处理,0表示航班未进行过时刻提前处理;
RetryNumi:表示航班Flti因排序失败被信息重置的总次数,初始值为0;
AARCheckModei:表示航班Flti的着陆机场的进场容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,初始值为0;
SectorCheckModei:表示航班Flti的扇区容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,初始值为0;
[tBgnTime,tEndTime]:表示计算时间范围,其中tBgnTime为分析日期ANA_DATE的00:00:00,而tEndTime为分析日期ANA_DATE的23:59:59;
CapSpanTime:表示时间片大小;
CapSpanNum:表示计算时间范围[tBgnTime,tEndTime]内时间片的个数;
[CapBgnTimej,CapEndTimej):表示计算时间范围[tBgnTime,tEndTime]内第j个时间片,其中CapBgnTimej为时间片的开始时间,CapEndTimej为时间片的截止时间;
AptCapi,j:表示机场APTi在第j个时间片的容量值;
SectorCapi,j:表示扇区SECTORi在第j个时间片的容量值;
Depi,j:表示在机场APTi的第j个时间片内起飞的航班架次;
Arri,j:表示在机场APTi的第j个时间片内降落的航班架次;
AptAARi,j:表示机场APTi在第j个时间片的可用进场容量;
AptADRi,j:表示机场APTi在第j个时间片的可用离场容量;
AptCapResvi,j:表示机场APTi在第j个时间片的豁免航班量,初始值为0;
AptAARResvi,j:表示机场APTi在第j个时间片的豁免进场航班量,初始值为0;
AptADRResvi,j:表示机场APTi在第j个时间片的豁免离场航班量,初始值为0;
SectorCapResvi,j:表示扇区SECTORi在第j个时间片的豁免航班量,初始值为0;
AptFlowArri,j:预计在第j个时间片降落在机场APTi的非豁免外国降落航班量,初始值为0;
AptFlowArrDepi,j:预计在第j个时间片在机场APTi降落的非豁免国内起降航班量,初始值为0;
AptFlowDepi,j:预计在第j个时间片从机场APTi起飞的非豁免国内起飞航班量,初始值为0;
AptFlowDepArri,j:预计在第j个时间片从机场APTi起飞的非豁免国内起降航班量,初始值为0;
SectorFlowArri,j:预计在第j个时间片进入扇区SECTORi的非豁免外国降落航班量,初始值为0;
SectorFlowDepi,j:预计在第j个时间片进入扇区SECTORi的非豁免国内起飞航班量,初始值为0;
SectorFlowDepArri,j:预计在第j个时间片进入扇区SECTORi的非豁免国内起降航班量,初始值为0;
SectorFlowPassByi,j:预计在第j个时间片进入扇区SECTORi的非豁免飞越航班量,初始值为0;
AptCapArri,j:非豁免外国降落航班在机场APTi第j个时间片可用的进场容量,初始值为0;
AptCapArrDepi,j:非豁免国内起降航班在机场APTi第j个时间片可用的进场容量,初始值为0;
AptCapDepi,j:非豁免国内起飞航班在机场APTi第j个时间片可用的离场容量,初始值为0;
AptCapDepArri,j:非豁免国内起降航班在机场APTi第j个时间片可用的离场容量,初始值为0;
SectorCapArri,j:非豁免外国降落航班在扇区SECTORi第j个时间片可用的容量,初始值为0;
SectorCapDepi,j:非豁免国内起飞航班在扇区SECTORi第j个时间片可用的容量,初始值为0;
SectorCapDepArri,j:非豁免国内起降航班在扇区SECTORi第j个时间片可用的容量,初始值为0;
SectorCapPassByi,j:非豁免飞越航班在扇区SECTORi第j个时间片可用的容量,初始值为0;
步骤1-2包括:
步骤1-2-1,设置计算参数:
需要设置的计算参数包括:
分析日期ANA_DATE;
消减选项DELE_MARK;
消减延误参数DELE_VALUE;
加速选项ACC_MARK;
加速延误参数ACC_VALUE;
步骤1-2-2,获取全国空域基础数据:
根据计算参数信息中的分析日期ANA_DATE,获取全国的机场及扇区基础信息;
获取全国所有的机场信息,并形成机场队列APTLIST,机场总个数为AptTotalNum,APTLIST中每个机场APTi的具体信息包括:
代码APTi(CODE);
属性APTi(PRO);
优先级APTi(PRIO);
获取全国所有的扇区信息,并形成扇区队列SECTORLIST,扇区总个数为SectorTotalNum,SECTORLIST中每个扇区SECTORi的具体信息包括:
代码SECTORi(CODE);
优先级SECTORi(PRIO);
步骤1-2-3,提取全国航班计划数据
根据计算参数信息中的分析日期ANA_DATE,从时刻表中筛选在日期内从国内机场起、降或者出现在国内空域的航班计划,形成航班计划队列FltListIni,计划总个数为FltTotalNum;
采用4D轨迹预测技术生成FltListIni中每条计划Flti的轨迹预测信息,i∈[1,FltTotalNum];
航班轨迹信息包括:
航班号ACIDi;
起飞机场DepApti;
降落机场ArrApti;
起飞时间ETDi;
降落时间ETAi;
过点队列PassPtListi;
过扇队列PassSectorListi;
PassPtListi中包含了Flti途径的每个航路点PassPti,j的代码PassPti,j(Code)以及过点时间PassPti,j(ETO);
PassSectorListi中包含了Flti途径的每个扇区PassSectori,j的代码PassSectori,j(Code),进扇区时间PassSectori,j(InETO),出扇区时间PassSectori,j(OutETO);
如果更新航班过点队列PassPtListi中航路点的过点时间,会同步更新该航班过扇队列PassSectorListi里每个扇区的进扇区和出扇区时间;
步骤1-2-4,获取全国空域容量数据:
1)设置计算时间范围
根据计算参数信息中的分析日期ANA_DATE,生成计算时间范围[tBgnTime,tEndTime],其中tBgnTime为分析日期ANA_DATE的00:00:00,而tEndTime为分析日期ANA_DATE的23:59:59;
2)划分时间片
默认时间片CapSpanTime为3600秒;
令每个时间片为[CapBgnTimej,CapEndTimej),j∈CapSpanNum,其中CapBgnTimej为第j个时间片的开始时间,CapEndTimej为第j个时间片的截止时间,且CapEndTimej=CapBgnTimej+CapSpanTime;
3)获取全国机场各个时间片的容量:
筛选APTLIST队列内各个机场APTi在计算时间范围[tBgnTime,tEndTime]内的每个时间片的容量信息AptCapi,j;
4)获取全国扇区各个时间片的容量:
筛选SECTORLIST队列内各个扇区SECTORi在计算时间范围[tBgnTime,tEndTime]内的每个时间片的容量信息SectorCapi,j;
步骤1-3包括:
步骤1-3-1,根据优先级对全国空域对象进行排序:
全国机场的排序:根据机场优先级APTi(PRIO)从高到低的次序,对全国机场队列APTLIST内的机场进行重新排序;
全国扇区的排序:根据扇区优先级SECTORi(PRIO)从高到低的次序,对全国扇区队列SECTORLIST内的扇区进行重新排序;
步骤1-3-2,机场进离场容量分解:
用户能够根据自身需要设置机场的进离场容量,如果未设置则采用以下方法计算获得进离场容量:
对于APTLIST队列内每个机场APTi,均开展以下操作:
1)统计机场各时间片的起降需求
根据计划队列FltListIni中每架航班的计划起飞时间ETDi和计划降落时间ETAi,统计机场APTi在计算时间范围[tBgnTime,tEndTime]内的每个时间片j的起飞架次Depi,j和降落架次Arri,j;
2)根据起降需求划分容量
为提高机场容量资源的利用,根据每个时间片的起降需求分解机场容量,则:
AptADRi,j=AptCapi,j-AptAARi,j (3)
步骤1-3-3,航班排序信息初始化:
针对FltListIni中每架航班Flti,对其排序信息进行初始化处理:
1)初始值排序状态信息:
令SortModei=0;
令Flti(InAccess)=0;
令Flti(Accessed)=0;
令RetryNumi=0;
2)初始化延误信息
令MixedDelayi=0;
令DepDelayi=0;
令ArrDelayi=0;
3)初始化排序时间
令STDi=ETDi,STAi=ETAi;
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE;
令MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令:
PassPti,n(STO)=PassPti,n(ETO);
PassPti,n(MinSTO)=PassPti,n(ETO);
PassPti,n(MaxSTO)=PassPti,n(ETO)+DELE_VALUE;
针对航班Flti过扇队列PassSectorListi中每个扇区PassSectori,n,令:
PassSectori,n(InSTO)=PassSectori,n(InETO);
PassSectori,n(InMinSTO)=PassSectori,n(InETO);
PassSectori,n(InMaxSTO)=PassSectori,n(InETO)+DELE_VALUE;
4)初始化容量检测标志:
令AARCheckModei=0,SectorCheckModei=0;
步骤1-3-4,划分航班类型:
针对FltListIni中每架航班Flti,根据航班的起飞和降落机场是否属于国内,将航班分成四类,包括:国内起降、国内起飞、外国降落、飞越;
步骤1-3-5,计算航班豁免状态:
根据计算时间范围[tBgnTime,tEndTime],需判断FltListIni中每架航班Flti的起飞时间ETDi、降落时间ETAi、进扇区时间PassSectori,j(InETO)是否均在计算时间范围内,如不是,则将航班设置为豁免航班;
步骤1-3-6,计算航班静态优先级:
针对FltListIni中每架航班Flti,其优先级Flti(PRIO)初始值为0,如果其起飞机场为国内机场APTj,则令Flti(PRIO)=Flti(PRIO)+APTj(PRIO);
如果其降落机场为国内机场APTk,则令Flti(PRIO)=Flti(PRIO)+APTk(PRIO);
如果航班为VIP航班,则Flti(PRIO)=Flti(PRIO)+1;
步骤1-3-7,根据航班类型及豁免状态划分航班队列:
航班时刻的调整难度由高到低分别为:飞越航班,外国降落,国内起飞,国内起降,根据航班的豁免状态以及航班属性,将计划队列FltListIni拆分成五个计划子队列,分别为:豁免航班队列FltListExempt,飞越航班队列FltListPassBy,外国降落航班队列FltListArr,国内起飞航班队列FltListDep,国内起降航班队列FltListDepArr;其中豁免航班队列的航班总架次为FltTotalNumExempt,飞越航班队列的航班总架次为FltTotalNumPassBy,外国降落航班队列的航班总架次为FltTotalNumArr,国内起飞航班队列的航班总架次为FltTotalNumDep,国内起降航班队列的航班总架次为FltTotalNumDepArr;
步骤1-3-8,根据航班起降时间对航班队列进行初始排序:
对于国内起飞队列FltListDep,对其内的每架航班Flti按照其预计起飞时间ETDi由早到晚的顺序进行排序;
对于国内起降航班队列FltListDepArr,对其内的每架航班Flti按照其预计起飞时间ETDi由早到晚的顺序进行排序;
对于外国降落航班队列FltListArr,对于其内的每架航班Flti按照其预计降落时间ETAi由早到晚的顺序进行排序;
对于飞越航班队列FltListPassBy,对于其内的每架航班Flti按照其预计进国境点时间由早到晚的顺序进行排序;
对于豁免航班队列FltListExempt,无需开展排序;
步骤1-3-9,根据航班优先级对航班队列进行二次排序:
在初始排序基础上,需按照航班优先级Flti(PRIO)由高到低的顺序分别对飞越航班队列FltListPassBy、外国降落航班队列FltListArr、国内起飞航班队列FltListDep、国内起降航班队列FltListDepArr进行二次排序;
步骤1-3-10,根据全国空域对象内不同类别航班的流量占比细分容量,包括如下步骤:
步骤1-3-10-1,计算豁免航班的时隙资源占用量:
对于APTLIST中每一个机场APTi,循环开展以下处理:
1)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令该机场的AptADRResvi,j=AptADRResvi,j+1;
2)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令该机场的AptAARResvi,j=AptAARResvi,j+1;
对于SECTORLIST中每一个机场SECTORi,循环开展以下处理:
1)对于豁免航班队列FltListExempt中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorCapResvi,j=SectorCapResvi,j+1;
步骤1-3-10-2,计算全国机场对象内不同类别航班的流量分布:
对于APTLIST中每一个机场APTi,循环开展以下处理:
1)对于FltListArr中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令AptFlowArri,j=AptFlowArri,j+1;
2)对于FltListDep中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令AptFlowDepi,j=AptFlowDepi,j+1;
3)对于FltListDepArr中的每一架航班Fltk,如果其起飞机场为机场APTi,且其起飞时间ETDk落在第j个时间片,则令AptFlowDepArri,j=AptFlowDepArri,j+1;
4)对于FltListDepArr中的每一架航班Fltk,如果其降落机场为机场APTi,且其降落时间ETAk落在第j个时间片,则令AptFlowArrDepi,j=AptFlowArrDepi,j+1;
步骤1-3-10-3,计算全国扇区对象内不同类别航班的流量分布:
对于SECTORLIST中每一个机场SECTORi,循环开展以下处理:
1)对于FltListPassBy中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowPassByi,j=SectorFlowPassByi,j+1;
2)对于FltListArr中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowArri,j=SectorFlowArri,j+1;
3)对于FltListDep中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowDepi,j=SectorFlowDepi,j+1;
4)对于FltListDepArr中的每一架航班Fltk,如果其途径扇区队列PassSectorListk中包含扇区SECTORi,且其进扇时间落在该扇区第j个时间片上,则令该扇区的SectorFlowDepArri,j=SectorFlowDepArri,j+1;
步骤1-3-10-4,根据不同类别航班的流量占比拆分空域容量:
如果满足(AptFlowArri,j+AptFlowArrDepi,j)>0,则令
AptCapArri,j=(AptAARi,j-AptAARResvi,j)-AptCapArrDepi,j (6)
如果满足(AptFlowDepi,j+AptFlowDepArri,j)>0,则令
AptCapDepi,j=(AptADRi,j-AptADRResvi,j)-AptCapDepArri,j (9)
如果满足:
(SectorFlowArri,j+SectorFlowDepi,j+SectorFlowDepArri,j+SectorFlowPassByi,j)>0,则令
SectorCapDepArri,j=(SectorCapi,j-SectorCapResvi,j)-SectorCapPassByi,j-SectorCapArri,j-SectorCapDepi,j (14)
步骤2包括如下步骤:
步骤2-1,定义变量;
步骤2-2,检查航班起飞时刻的合理性;
步骤2-3,检测航班是否满足途径扇区的容量资源限制;
步骤2-4,更新全国所有扇区的容流平衡检测标志;
步骤2-5,判断是否存在航班不满足容量限制;
步骤2-6,重置排序失败航班的信息;
步骤2-1包括:定义如下变量:
SectorCheckMark:全国所有扇区的容流平衡检测标志,1表示全国所有扇区均满足容量限制,0表示存在扇区不满足容量限制,该变量初始值为0;
DealMarki:航班Flti的处理状态,包括:0表示未参与本次处理,1表示本次已处理;
tmpSTDi:航班Flti分配的起飞时刻的临时变量;
tmpSTAi:航班Flti分配的降落时刻的临时变量;
tmpMinSTDi:航班Flti分配的最早起飞时间临时变量;
tmpMaxSTDi:航班Flti分配的最迟起飞时间临时变量;
tmpMinSTAi:航班Flti分配的最早降落时间临时变量;
tmpMaxSTAi:航班Flti分配的最迟降落时间临时变量;
tmpMinDelayi:航班Flti分配的最小延误临时变量;
tmpMaxDelayi:航班Flti分配的最大延误临时变量
tmpDepDelayi:航班Flti分配的起飞延误临时变量;
PassSectori,j(tmpInSTO):航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的进扇时间临时变量;
PassSectori,j(tmpInMinSTO):航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最早进扇时间临时变量;
PassSectori,j(tmpInMaxSTO):航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j分配的最迟进扇时间临时变量;
PassPti,j(tmpSTO):航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的过点时间临时变量;
PassPti,j(tmpMinSTO):航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最早过点时间临时变量;
PassPti,j(tmpMaxSTO):航班Flti的过点队列PassPtListi中第j个点PassPti,j分配的最迟过点时间临时变量;
SatifyMark:状态标志位,初始值为0;
SlotSpanTime:航班时刻调整的最小步长;
SectorCheckModei,j:航班Flti的过扇队列PassSectorListi中第j个扇区PassSectori,j的扇区容量检测状态,包括:0表示未参与检测、1表示已完成检测且满足容量限制、2表示检测中、3表示已完成检测且不满足容量限制,初始值为0;
FltListTmp:临时航班队列;
FltTotalNumTmp:FltListTmp队列中总航班个数;
FltPrioi:航班Flti的处理优先级参数;
FltListCheck:待检测航班队列;
SectorCapUsek,j:扇区SECTORk在第j个时间片能够为FltListTmp中航班提供的容量值;
SectorCapUsedk,j:扇区SECTORk在第j个时间片已被FltListCheck中航班占用的容量值;
SectorFlowk,j:扇区SECTORk在第j个时间片新增流量值,初始值为0;
MaxRetryNum:每个航班因排序失败被重置的最大次数;
步骤2-2包括:
步骤2-2-1,确定待检测的航班队列:
如果参与检测的是飞越航班队列,则令FltListCheck=FltListPassBy;
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
步骤2-2-2,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-2-3,筛选待处理航班:
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1;
步骤2-2-4,判断航班的排序状态位:
如果SortModei为1或者3,则返回步骤2-2-3;否则继续后续操作;
步骤2-2-5,计算航班可能的排序时间:
为保障分配的起飞时刻满足最小步长要求,令STDi=(STDi/SlotSpanTime)*SlotSpanTime,且tmpSTDi=STDi;
令tmpMinSTDi=tmpSTDi,tmpMaxSTDi=tmpMinSTDi+SlotSpanTime-1,
tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi),
tmpMaxSTAi=tmpMaxSTDi+(ETAi-ETDi);
步骤2-2-6,计算航班当前的综合延误:
如果STDi<MinSTDi,则MixedDelayi=MinSTDi-ETDi;
否则MixedDelayi=STDi-ETDi;
步骤2-2-7,判断航班起飞时刻的合理性;
如果满足tmpMaxSTDi∈[MinSTDi,MaxSTDi]或者tmpMinSTDi∈[MinSTDi,MaxSTDi],令SatifyMark=1,继续后续处理;如果不满足,令SatifyMark=0,跳至步骤2-2-11;
步骤2-2-8,更新航班的起飞延误:
如果航班Flti的排序状态位SortModei为0,令DepDelayi=0;如果SortModei为2,令DepDelayi=MixedDelayi;
步骤2-2-9,判断航班是否延误超量:
如果DepDelayi>DELE_VALUE,则认为延误超量,令SortModei=3,跳至步骤2-2-11;否则,认为航班Flti排序成功,令SortModei=1,继续后续处理;
步骤2-2-10,更新排序成功航班信息,包括:
1)更新航班Flti的起飞时刻排序信息:
如果tmpMinSTDi>MinSTDi,令MinSTDi=tmpMinSTDi;如果tmpMaxSTDi<MaxSTDi,令MaxSTDi=tmpMaxSTDi;
令STDi=tmpMinSTDi;
2)更新航班Flti的降落时刻排序信息:
如果tmpMinSTAi>MinSTAi,令MinSTAi=tmpMinSTAi;
如果tmpMaxSTAi<MaxSTAi,令MaxSTAi=tmpMaxSTAi;
令STAi=STDi+(ETAi-ETDi),如果STAi<MinSTAi,则STAi=MinSTAi;STAi=(STAi/SlotSpanTime)*SlotSpanTime;
3)更新航班Flti的过点时间排序信息:
令tmpMinDelayi=MinSTDi-ETDi,tmpMaxDelayi=MaxSTDi-ETDi,tmpDepDelayi=STDi-ETDi;
对于航班Flti的过点队列PassPtListi中每个点PassPti,j进行以下处理:
令PassPti,j(tmpSTO)=PassPti,j(ETO)+tmpDepDelayi;
PassPti,j(tmpMinSTO)=PassPti,j(ETO)+tmpMinDelayi;
PassPti,j(tmpMaxSTO)=PassPti,j(ETO)+tmpMaxDelayi;
如果PassPti,j(tmpMinSTO)>PassPti,j(MinSTO),令PassPti,j(MinSTO)=PassPti,j(tmpMinSTO);
如果PassPti,j(tmpMaxSTO)<PassPti,j(MaxSTO),令PassPti,j(MaxSTO)=PassPti,j(tmpMaxSTO);
令PassPti,j(STO)=PassPti,j(tmpSTO),如果PassPti,j(STO)<PassPti,j(MinSTO),则PassPti,j(STO)=PassPti,j(MinSTO);
返回步骤2-2-3;
步骤2-2-11,更新排序失败航班的起降时刻信息:
更新航班Flti的排序起降时刻信息:
令SortModei=3;
令STAi=STDi+(ETAi-ETDi),且
STAi=(STAi/SlotSpanTime)*SlotSpanTime;
令DepDelayi=STDi-ETDi;
令STDi=tmpMinSTDi;
返回步骤2-2-3;
步骤2-3包括:
步骤2-3-1,确定待检测的航班队列:
如果参与检测的是飞越航班队列,则令FltListCheck=FltListPassBy;
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤2-3-2,重置航班的扇区容量检测状态:
针对FltListCheck队列中每架航班Flti,如果该航班当前的SortModei不为1或者SectorCheckModei不为1,说明该航班之前没有顺利通过扇区容量检测,则令该航班的SectorCheckModei=0,且该航班过扇队列PassSectorListi中每个扇区PassSectori,j的SectorCheckModei,j=0;
步骤2-3-3,筛选待处理时间片:
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;
步骤2-3-4,筛选待处理扇区:
针对全国扇区队列SECOTRLIST,从队头开始,依次取第k个扇区SECTORk,k∈[1,SectorTotalNum];循环完毕后,返回步骤2-3-3;
步骤2-3-5,筛选待处理航班:
从FltListCheck队列中筛选第j个时间片内进入扇区SECTORk且需要参与检测的航班,将其加入FltListTmp;
步骤2-3-5-1,清空临时航班队列:
清空FltListTmp,令FltTotalNumTmp=0;
步骤2-3-5-2,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-3-5-3,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-3-5-4,判断航班Flti的排序状态位;
如果SortModei不为1,则返回步骤2-3-5-3;否则继续后续操作;
步骤2-3-5-5,判断Flti是否途径扇区SECTORk:
判断航班Flti的过扇队列PassSectorListi中是否包括扇区SECTORk;如果不存在,则返回步骤2-3-5-3;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-5-6,判断Flti当前的扇区容量检测状态:
如果Flti的SectorCheckModei为1,且SectorCheckModei,m为1,说明该航班前期已通过扇区容量检测,无需再次检测,返回步骤2-3-5-3;否则继续后续操作;
步骤2-3-5-7,计算Flti当前可行的排序起降时间:
令tmpMinSTAi=ETAi+(STDi-ETDi),如果tmpMinSTAi<MinSTAi,则令tmpMinSTAi=MinSTAi;
令tmpMaxSTAi=ETAi+(STDi-ETDi)+(SlotSpanTime-1),如果tmpMaxSTAi>MaxSTAi,则令tmpMaxSTAi=MaxSTAi;
令tmpMinSTDi=STDi,如果tmpMinSTDi<MinSTDi,则令tmpMinSTDi=MinSTDi;
令tmpMaxSTDi=STDi+(SlotSpanTime-1),如果tmpMaxSTDi>MaxSTDi,则令tmpMaxSTDi=MaxSTDi;
步骤2-3-5-8,计算Flti进入扇区SECTORk的可行时间范围:
令PassSectori,m(tmpInMinSTO)=PassSectori,m(InETO)+(tmpMinSTDi-ETDi),如果PassSectori,m(tmpInMinSTO)<PassSectori,m(InMinSTO),则令PassSectori,m(tmpInMinSTO)=PassSectori,m(InMinSTO);
令PassSectori,m(tmpInMaxSTO)=PassSectori,m(InETO)+(tmpMaxSTDi-ETDi),如果PassSectori,m(tmpInMaxSTO)>PassSectori,m(InMaxSTO),则令PassSectori,m(tmpInMaxSTO)=PassSectori,m(InMaxSTO);
步骤2-3-5-9,判断航班的排序进扇区时间是否在统计时段内:
如果满足tmpInMinSTO∈[CapBgnTimej,CapEndTimej),或者tmpInMaxSTO∈[CapBgnTimej,CapEndTimej),则说明Flti能够在该时间片内进入扇区SECTORk,继续后续处理;如果不满足,则返回至步骤2-3-5-3;
步骤2-3-5-10,计算航班Flti的处理优先级:
令FltPrioi=Flti(PRIO);
步骤2-3-5-11,更新航班Flti的排序时间:
令MinSTAi=tmpMinSTAi;
令MaxSTAi=tmpMaxSTAi;
令MinSTDi=tmpMinSTDi;
令MaxSTDi=tmpMaxSTDi;
令PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
令PassSectori,m(InMaxSTO)=PassSectori,m(tmpInMaxSTO);
步骤2-3-5-12,将航班Flti加入到临时航班队列中:
将航班加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;
返回步骤2-3-5-3;
步骤2-3-6,按照进扇区时间以及优先级对航班进行排序,包括:
步骤2-3-6-1,根据进扇区时间进行排序:
根据先到先服务准则,对FltListTmp中每架航班Flti,根据其进入扇区SECTORk最早可行时间PassSectori,m(InMinSTO),按照从先到后的顺序进行排序;
步骤2-3-6-2,根据航班处理优先级进行排序:
在上一步基础上,根据FltListTmp中每架航班Flti的处理优先级FltPrioi,按照由大到小的顺序进行排序;
步骤2-3-7,获取扇区可用空闲容量,包括:
获取扇区SECTORk当前能够为FltListTmp中航班提供的空闲容量,具体包括:
步骤2-3-7-1,获取扇区SECTORk在第j个时间片能够为FltListCheck中航班提供的总容量;
如果FltListCheck为飞跃航班队列,则SectorCapUsek,j=SectorCapPassByk,j;
如果FltListCheck为外国降落航班队列,则SectorCapUsek,j=SectorCapArrk,j;
如果FltListCheck为国内起飞航班队列,则SectorCapUsek,j=SectorCapDepk,j;
如果FltListCheck为国内起降航班队列,则SectorCapUsek,j=SectorCapDepArrk,j;
步骤2-3-7-2,计算已被FltListCheck中航班占用的容量值:
令SectorCapUsedk,j=0;
步骤2-3-7-2-1,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-3-7-2-2,筛选待处理航班:
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,循环开展后续操作;如果不存在待处理航班,则结束循环,跳至步骤2-3-7-3;
步骤2-3-7-2-3,判断航班Flti的排序状态位:
如果航班Flti的排序状态位SortModei不为1,返回步骤2-3-7-2-2;否则继续后续处理;
步骤2-3-7-2-4,判断航班Flti的扇区容量检测状态:
如果Flti的SectorCheckModei不为1,返回步骤2-3-7-2-2;否则继续后续处理;
步骤2-3-7-2-5,判断航班Flti是否途径扇区SECTORk:
判断航班Flti的过扇队列PassSectorListi中是否存在扇区SECTORk;如果不存在,则返回步骤2-3-7-2-2;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-7-2-6,判断航班Flti当前在扇区SECTORk的扇区容量检测状态:
如果Flti在扇区SECTORk的扇区容量检测状态SectorCheckModei,m不为1,则返回步骤2-3-7-2-2;否则继续后续操作;
步骤2-3-7-2-7,判断航班Flti的进扇区时间是否在统计时段内:
如果满足PassSectori,m(InSTO)∈[CapBgnTimej,CapEndTimej),则令SectorCapUsedk,j=SectorCapUsedk,j+1;
返回步骤2-3-7-2-2;
步骤2-3-7-3,计算扇区SECTORk在第j个时间片能够为FltListTmp中航班分配的空闲容量:
令SectorCapUsek,j=SectorCapUsek,j-SectorCapUsedk,j;
步骤2-3-8,检查航班是否满足扇区容量限制,包括:
步骤2-3-8-1,清空航班处理状态:
针对FltListTmp队列中每架航班Flti,令其DealMarki=0;
令SectorFlowk,j=0;
步骤2-3-8-2,筛选待处理航班:
从FltListTmp队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-3-8-3,判断航班Flti是否途径扇区SECTORk:
判断航班Flti的过扇队列PassSectorListi中是否存在扇区SECTORk;如果不存在,则返回步骤2-3-8-2;如果存在,令m为SECTORk在PassSectorListi中的下标,即PassSectori,m为扇区SECTORk,继续后续操作;
步骤2-3-8-4,判断当前新增流量是否超过空闲容量值:
步骤2-3-8-4-1,未超过空闲容量的处理:
即满足SectorFlowk,j<SectorCapUsek,j,说明航班Flti在扇区SECTORk的第j个时间片的容量检测成功,执行如下步骤:
1)更新检测标志位:
令SectorCheckModei=1,SectorCheckModei,m=1;
2)更新新增流量值:
令SectorFlowk,j=SectorFlowk,j+1;
3)更新该航班过扇时间:
令PassSectori,m(InSTO)=PassSectori,m(InMinSTO);
如果PassSectori,m(InSTO)<CapBgnTimej,令PassSectori,m(InSTO)=CapBgnTimej,PassSectori,m(InMinSTO)=CapBgnTimej;
如果PassSectori,m(InSTO)≥CapEndTimej,令
PassSectori,m(InSTO)=CapEndTimej-1,
PassSectori,m(InMinSTO)=CapEndTimej-1;
返回步骤2-3-8-2;
步骤2-3-8-4-2,超过空闲容量的处理:
即满足SectorFlowk,j≥SectorCapUsek,j,该情况说明航班Flti不能在第j个时间片进入扇区SECTORk,容量检测失败;如果该航班当前没有进行时刻提前,则执行步骤2-3-8-4-2-1,否则跳至步骤2-3-8-4-2-2;
步骤2-3-8-4-2-1,对非时刻提前的航班进行处理:
更新航班Flti的排序时间:
令PassSectori,m(tmpInMinSTO)=CapEndTimej;
令tmpMinSTDi=ETDi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
令tmpMinSTAi=ETAi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
判断过扇时间是否在可行时间范围内:
如果满足PassSectori,m(tmpInMinSTO)∈[PassSectori,m(InMinSTO),PassSectori,m(InMaxSTO)],
则进行步骤2-3-8-4-2-1-1;否则进行步骤2-3-8-4-2-1-2;
步骤2-3-8-4-2-1-1,过扇时间在可行范围内:
更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:
令SectorCheckModei=2,SectorCheckModei,m=2;
2)更新航班可行时间范围:
令PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
返回步骤2-3-8-2;
步骤2-3-8-4-2-1-2,过扇时间不在可行范围内:
航班Flti容量检测失败,为后续重新分配起飞时刻做准备,执行如步骤:
1)初始化航班Flti可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi),PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
4)更新容量检测标志位:
令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;
返回步骤2-3-8-2;
步骤2-3-8-4-2-2,对于时刻提前的航班进行处理:
更新航班Flti可行时间范围:
令PassSectori,m(tmpInMinSTO)=CapEndTimej,
tmpMinSTDi=ETDi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
tmpMinSTAi=ETAi+(PassSectori,m(tmpInMinSTO)-PassSectori,m(InETO));
判断过扇时间是否在可行时间范围内:
如果满足
PassSectori,m(tmpInMinSTO)∈[PassSectori,m(InMinSTO),PassSectori,m(InMaxSTO)],
说明航班进扇区时间在可行时间范围内,进行步骤2-3-8-4-2-2-1;否则进行步骤2-3-8-4-2-2-2;
步骤2-3-8-4-2-2-1,过扇时间在可行范围内:
更新航班Flti可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:
令SectorCheckModei=2,SectorCheckModei,m=2;
2)更新航班可行时间范围:
令PassSectori,m(InSTO)=PassSectori,m(tmpInMinSTO);
如果PassSectori,m(tmpInMinSTO)>PassSectori,m(InMinSTO),则PassSectori,m(InMinSTO)=PassSectori,m(tmpInMinSTO);
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
返回步骤2-3-8-2;
步骤2-3-8-4-2-2-2,过扇时间不在可行范围内:
航班Flti的容量检测失败,为后续重新分配起飞时刻做准备;
更新容量检测标志:
令SectorCheckModei=3,SectorCheckModei,m=3;
判断航班能否继续进行时刻提前:
如果(STDi-SlotSpanTime)≥tBgnTime,说明航班仍可继续提前,则进行步骤2-3-8-4-2-2-2-1;否则进行步骤2-3-8-4-2-2-2-2;
步骤2-3-8-4-2-2-2-1,对航班进行时刻提前,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
令tmpMinSTDi=STDi-SlotSpanTime;
令tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi);
如果tmpMinSTDi<MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi<MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi);
4)更新容量检测标志位:
令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;
返回步骤2-3-8-2;
步骤2-3-8-4-2-2-2-2,终止对航班的时刻提前操作,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
令STDi=MinSTDi,STAi=MinSTAi;
4)更新容量检测标志位:
令SortModei=2,SectorCheckModei=3,SectorCheckModei,m=3;
5)更新航班时刻调前状态:
令Flti(InAccess)=0;
返回步骤2-3-8-2;
步骤2-4包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3,表示存在扇区容量检测失败的航班,则令SectorCheckMark=0,并停止检索;
步骤2-5包括:
如果SectorCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤2-6;
步骤2-6包括:
步骤2-6-1,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤2-6-2,筛选待处理航班:
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤2-6-3,判断航班的排序状态位:
本步骤仅对排序失败的航班进行处理,因此如果航班的SortModei不为3,则返回步骤2-6-2;
步骤2-6-4,判断航班的重置次数:
如果航班Flti满足RetryNumi>MaxRetryNum,说明难以为该航班找到合适的时隙,为提高效率,后续不再对该航班进行重置以及时隙重新分配处理,返回步骤2-6-2;
否则,继续后续处理;
步骤2-6-5,重置航班的排序时间,包括如下步骤:
1)初始化航班Flti的排序起降时间
令STDi=ETDi,STAi=ETAi;
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)更新排序状态标志位:
令SortModei=2;
3)初始化排序延误值:
令DepDelayi=0,ArrDelayi=0,MixDelayi=0;
4)更新容量检测标志位:
令AARCheckModei=2,SectorCheckModei=2;
航班Flti的过扇队列PassSectorListi中每个扇区PassSectori,n,令SectorCheckModei,n=2;
5)更新排序起降时间:
如果STDi<MinSTDi,STDi=MinSTDi;
如果STAi<MinSTAi,STAi=MinSTAi;
步骤2-6-6,更新航班的重置次数:
令RetryNumi=RetryNumi+1;返回步骤2-6-2;
步骤3包括如下步骤:
步骤3-1,定义变量;
步骤3-2,检测航班起飞时刻的合理性;
步骤3-3,检测航班是否满足着陆机场的进场容量资源限制;
步骤3-4,更新全国所有机场的进场容流平衡检测标志;
步骤3-5,检测航班是否满足途径扇区的容量资源限制;
步骤3-6,更新全国所有扇区的容流平衡检测标志;
步骤3-7,判断是否存在航班不满足容量限制;
步骤3-8,重置排序失败航班的信息;
步骤3-1中,定义如下变量
AARCheckMark:全国所有机场的进场容流平衡检测标志,0表示检测失败,1表示检测成功,初始值为0;
AARCapUsek,j:本次计算中机场APTk在第j个时间片能够为FltListTmp中航班提供的进场容量值;
AARCapUsedk,j:机场APTk在第j个时间片已被占用的进场容量值;
ArrFlowk,j:机场APTk在第j个时间片内新增进场流量值,初始值为0;
Flti(InAccess):航班Flti当前的时刻提前状态标志,1表示航班正在进行时刻提前,0表示航班当前未进行时刻提前;
步骤3-3包括如下步骤:
步骤3-3-1,确定待检测的航班队列:
如果参与检测的是外国降落航班队列,则令FltListCheck=FltListArr;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤3-3-2,重置航班的着陆机场容量检查状态:
针对FltListCheck队列中每架航班Flti,如果该航班当前的SortModei不为1或者AARCheckModei不为1,说明该航班之前没有顺利通过着陆机场的容量检测,则令该航班的AARCheckModei=0;
步骤3-3-3,筛选待处理时间片:
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;
步骤3-3-4,筛选待处理机场:
针对全国机场队列APTLIST,从队头开始,依次取第k个机场APTk,k∈[1,AptTotalNum];循环完毕后,返回步骤3-3-3;
步骤3-3-5,筛选待处理航班:
从FltListCheck队列中筛选第j个时间片内在机场APTk着陆且需要参与检测的航班,将其加入FltListTmp;
步骤3-3-5-1,清空临时航班队列:
清空FltListTmp,令FltTotalNumTmp=0;
步骤3-3-5-2,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤3-3-5-3,筛选待处理航班:
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤3-3-5-4,判断航班Flti的排序状态位:
如果SortModei不为1,则返回步骤3-3-5-3;否则继续后续操作;
步骤3-3-5-5,判断Flti是否在机场APTk着陆:
判断航班的着陆机场ArrApti是否为APTk;如果不是,则返回步骤3-3-5-3;如果是,继续后续处理;
步骤3-3-5-6,判断Flti当前着陆机场容量的检测状态:
如果Flti的AARCheckModei为1,说明该航班前期已通过着陆机场的容量检测,无需再次检测,返回步骤3-3-5-3;否则继续后续操作;
步骤3-3-5-7,计算Flti当前可行的排序时间:
令tmpMinSTAi=ETAi+(STDi-ETDi),如果tmpMinSTAi<MinSTAi,则令tmpMinSTAi=MinSTAi;
令tmpMaxSTAi=ETAi+(STDi-ETDi)+(SlotSpanTime-1),如果tmpMaxSTAi>MaxSTAi,则令tmpMaxSTAi=MaxSTAi;
令tmpMinSTDi=STDi,如果tmpMinSTDi<MinSTDi,则令tmpMinSTDi=MinSTDi;
令tmpMaxSTDi=STDi+(SlotSpanTime-1),如果tmpMaxSTDi>MaxSTDi,则令tmpMaxSTDi=MaxSTDi;
步骤3-3-5-8,判断航班的排序着陆时间是否在统计时段内:
如果满足tmpMinSTA∈[CapBgnTimej,CapEndTimej),或者tmpMaxSTA∈[CapBgnTimej,CapEndTimej),则说明Flti能够在该时间片内在APTk机场着陆,继续后续处理;如果不满足,则返回至步骤3-3-5-3;
步骤3-3-5-9,计算航班Flti的处理优先级:
令FltPrioi=Flti(PRIO);
将起飞延误达到消减延误参数一半以上的航班界定为延误较大航班;
步骤3-3-5-10,更新航班Flti的排序时间:
令MinSTAi=tmpMinSTAi;
令MaxSTAi=tmpMaxSTAi;
令MinSTDi=tmpMinSTDi;
令MaxSTDi=tmpMaxSTDi;
步骤3-3-5-11,将航班Flti加入到临时航班队列中:
将航班加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;
返回步骤3-3-5-3;
步骤3-3-6,按照着陆时间以及优先级对航班进行排序,包括:
步骤3-3-6-1,根据着陆时间进行排序:
根据先到先服务准则,对FltListTmp中每架航班Flti,根据其在机场APTk最早可行着陆时间MinSTAi,按照从先到后的顺序进行排序;
步骤3-3-6-2,根据航班处理优先级进行排序:
在上一步基础上,根据FltListTmp中每架航班Flti的处理优先级FltPrioi,按照由大到小的顺序进行排序;
步骤3-3-7,获取机场可用空闲进场容量:
获取机场APTk当前能够为FltListTmp中航班提供的空闲进场容量,包括如下步骤:
步骤3-3-7-1,获取机场APTk在第j个时间片能够为FltListCheck中航班提供的进场总容量;
如果FltListCheck为外国降落航班队列,则AARCapUsek,j=AptCapArrk,j;
如果FltListCheck为国内起降航班队列,则AARCapUsek,j=AptCapArrDepk,j;
步骤3-3-7-2,计算已被FltListCheck中航班占用的容量值:
令AARCapUsedk,j=0;
步骤3-3-7-2-1,清空航班处理状态:
针对FltListCheck队列中每架航班Flti,令其DealMarki=0;
步骤3-3-7-2-2,筛选待处理航班:
从FltListCheck队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,循环开展后续操作;如果不存在待处理航班,则结束循环,跳至步骤3-3-7-3;
步骤3-3-7-2-3,判断航班Flti的排序状态位:
如果航班Flti的排序状态位SortModei不为1,返回步骤3-3-7-2-2;否则继续后续处理;
步骤3-3-7-2-4,判断航班Flti是否在机场APTk着陆:
判断航班Flti的着陆机场是否为APTk;如果不是,则返回步骤3-3-7-2-2;如果是,继续后续操作;
步骤3-3-7-2-5,判断航班Flti的着陆机场进场容量检测状态:
如果Flti的AARCheckModei不为1,返回步骤3-3-7-2-2;否则继续后续处理;
步骤3-3-7-2-6,判断航班Flti的着陆时间是否在统计时段内:
如果满足STAi∈[CapBgnTimej,CapEndTimej),则令AARCapUsedk,j++;
返回步骤3-3-7-2-2;
步骤3-3-7-3,计算机场APTk在第j个时间片能够为FltListTmp中航班分配的空闲容量:
令AARCapUsek,j=AARCapUsek,j-AARCapUsedk,j;
步骤3-3-8,检查航班是否满足着陆机场的进场容量限制,包括:
步骤3-3-8-1,清空航班处理状态:
针对FltListTmp队列中每架航班Flti,令其DealMarki=0;
令ArrFlowk,j=0;
步骤3-3-8-2,筛选待处理航班:
从FltListTmp队列第一架航班开始,取当前DealMarki为0的首架航班Flti,令其DealMarki=1,开展后续操作;
步骤3-3-8-3,判断当前新增流量是否超过空闲容量值:
步骤3-3-8-3-1,未超过空闲容量的处理:
即满足ArrFlowk,j<AARCapUsek,j,说明航班Flti在机场APTk的第j个时间片的进场容量检测成功,包括如下步骤:
1)更新检测标志位:
令AARCheckModei=1;
2)更新新增流量值:
令ArrFlowk,j++,即ArrFlowk,j=ArrFlowk,j+1;
3)更新该航班的排序时间:
令STAi=MinSTAi;
如果STAi<CapBgnTimei,则STAi=CapBgnTimei;
如果STAi≥CapEndTimei,则STAi=CapEndTimei-1;
返回步骤3-3-8-2;
步骤3-3-8-3-2,超过空闲容量的处理:
即满足ArrFlowk,j≥AARCapUsek,j,该情况说明航班Flti不能在第j个时间片在机场APTk着陆,容量检测失败;
如果该航班当前没有进行时刻提前,则执行步骤3-3-8-3-2-1,否则跳至步骤3-3-8-3-2-2;
步骤3-3-8-3-2-1,对非时刻提前的航班进行处理:
更新航班Flti的排序时间:
令tmpMinSTAi=CapEndTimej;
令tmpMinSTDi=ETDi+(tmpMinSTAi-ETAi);
判断着陆时间是否在可行时间范围内:
如果满足tmpMinSTAi∈[MinSTAi,MaxSTAi],则进行步骤3-3-8-3-2-1-1;否则进行步骤3-3-8-3-2-1-2;
步骤3-3-8-3-2-1-1,着陆时间在可行范围内
更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:
令AARCheckModei=2;
2)更新航班可行时间范围:
令STAi=tmpMinSTAi;
如果tmpMinSTDi>MinSTDi,则MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,则MinSTAi=tmpMinSTAi;
返回步骤3-3-8-2;
步骤3-3-8-3-2-1-2,着陆时间不在可行范围内:
航班Flti容量检测失败,为后续重新分配起飞时刻做准备,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO);
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi);
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
如果tmpMinSTDi>MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi),
4)更新容量检测标志位:
令SortModei=2,AARCheckModei=3;
返回步骤3-3-8-2;
步骤3-3-8-3-2-2,对于时刻提前的航班进行处理:
更新航班可行时间范围:
令tmpMinSTAi=CapEndTimej,
tmpMinSTDi=ETDi+(tmpMinSTAi-ETAi);
判断着陆时间是否在可行时间范围内:
如果满足tmpMinSTAi∈[MinSTAi,MaxSTAi],则进行步骤3-3-8-3-2-2-1;否则进行步骤3-3-8-3-2-2-2;
步骤3-3-8-3-2-2-1,着陆时间在可行范围内:
更新航班Flti的可行时间范围,为后续重新检测做准备,执行如下步骤:
1)更新容量检测标志:
令AARCheckModei=2;
2)更新航班可行时间范围:
令STAi=tmpMinSTAi;
如果tmpMinSTDi>MinSTDi,则MinSTDi=tmpMinSTDi;
如果tmpMinSTAi>MinSTAi,则MinSTAi=tmpMinSTAi;
返回步骤3-3-8-2;
步骤3-3-8-3-2-2-2,着陆时间不在可行范围内:
航班Flti的容量检测失败,为后续重新分配起飞时刻做准备:
更新容量检测标志:
令AARCheckModei=3;
判断航班能否继续进行时刻提前:
如果(STDi-SlotSpanTime)≥tBgnTime,说明航班仍可继续提前,则进行步骤3-3-8-3-2-2-2-1;否则进行步骤3-3-8-3-2-2-2-2;
步骤3-3-8-3-2-2-2-1,对航班进行时刻提前,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
tmpMinSTDi=STDi-SlotSpanTime;
tmpMinSTAi=tmpMinSTDi+(ETAi-ETDi);
如果tmpMinSTDi<MinSTDi,MinSTDi=tmpMinSTDi;
如果tmpMinSTAi<MinSTAi,MinSTAi=tmpMinSTAi;
令STDi=tmpMinSTDi,STAi=ETAi+(STDi-ETDi);
4)更新容量检测标志位:
令SortModei=2,AARCheckModei=3;
返回步骤3-3-8-2;
步骤3-3-8-3-2-2-2-2,终止对航班的时刻提前操作,执行如下步骤:
1)初始化航班可行时间范围:
令MinSTDi=ETDi,MaxSTDi=ETDi+DELE_VALUE,MinSTAi=ETAi,MaxSTAi=ETAi+DELE_VALUE;
针对航班Flti过点队列PassPtListi中每个点PassPti,n,令
PassPti,n(STO)=PassPti,n(ETO),
PassPti,n(MinSTO)=PassPti,n(ETO)+(MinSTDi-ETDi),
PassPti,n(MaxSTO)=PassPti,n(ETO)+(MaxSTDi-ETDi);
2)初始化容量检测标志位:
令AARCheckModei=0;
令SectorCheckModei=0;
3)更新航班可行时间范围:
令STDi=MinSTDi,STAi=MinSTAi;
4)更新容量检测标志位:
令SortModei=2,AARCheckModei=3;
5)更新航班时刻提前状态:
令Flti(InAccess)=0;
返回步骤3-3-8-2;
步骤3-4包括:
令AARCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其进场容量检测标志,如果AARCheckModei为3,则令AARCheckMark=0,并停止检索;
步骤3-6包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3,则令SectorCheckMark=0,并停止检索;
步骤3-7包括:
如果SectorCheckMark为1且AARCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤3-8;
步骤3-8包括:
当FltListCheck队列中排序失败航班重置完毕后,返回步骤3-2;
步骤4包括如下步骤:
步骤4-1,定义变量;
步骤4-2,机场离场容量分解;
步骤4-3,根据机场的离场容量限制优化航班时刻;
步骤4-4,检测航班是否满足途径扇区的容量资源限制;
步骤4-5,更新全国所有扇区的容流平衡检测标志;
步骤4-6,判断是否存在航班不满足容量限制;
步骤4-7,重置排序失败航班的信息;
步骤4-1中,定义如下变量:
[SlotBgnTimej,k,SlotEndTimej,k):第j个时间片的第k个时隙,其中SlotBgnTimej,k为该时隙的开始时间,SlotEndTimej,k为该时隙的截止时间;
SlotSpanNumj:第j个时间片内的时隙个数;
SlotCapi,j,k:机场APTi在第j个时间片的第k个时隙的容量;
SlotFlowi,j,k:机场APTi在第j个时间片的第k个时隙的离场量;
ADRCapUsei,j:机场APTi在第j个时间片能够为航班提供的离场容量值;
SlotCapUsek,i,j:机场APTk在第i个时间片的第j个时隙能够为FltListTmp中航班提供的离场容量值;
SlotCapUsedk,i,j:机场APTk在第i个时间片的第j个时隙已被占用的离场容量值;
DepSlotFlowk,i,j:机场APTk在第i个时间片的第j个时隙的新增离场流量值,初始值为0;
步骤4-2,机场离场容量分解,包括:
步骤4-2-1,确定待检测的航班队列:
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤4-2-2,筛选待处理机场:
针对全国机场队列APTLIST,从队头开始,依次取第i个机场APTi,i∈[1,AptTotalNum],并循环开展以下处理;
步骤4-2-3,筛选待处理时间片:
按照时间先后顺序,依次取第j个时间片[CapBgnTimej,CapEndTimej),j∈[1,CapSpanNum],并循环开展以下处理;循环完毕后,返回步骤4-2-2;
步骤4-2-4,获取机场可用的离场容量:
获取机场APTi在第j个时间片能够为FltListCheck中航班提供的离场容量:
如果参与检测的是国内起飞航班队列:
则ADRCapUsei,j=AptCapDepi,j;
如果参与检测的是国内起降航班队列:
则ADRCapUsei,j=AptCapDepArri,j;
步骤4-2-5,将时间片划分成多个时隙:
按照参数SlotSpanTime将第j个时间片划分成多个时隙:
每个时隙为[SlotBgnTimej,k,SlotEndTimej,k),k∈[1,SlotSpanNumj];
步骤4-2-6,计算各个时隙内离场的航班量:
根据FltListCheck中航班的起飞时间STDi以及起飞机场DepApti,统计机场APTi的第j个时间片内各个时隙的离场航班量SlotFlowi,j,k,k∈[1,SlotSpanNumj];
步骤4-2-7,计算各个时隙的容量:
根据各时隙的流量占比,计算时隙的容量:
返回步骤4-2-3;
步骤4-3包括:
步骤4-3-1,确定待检测的航班队列:
如果参与检测的是国内起飞航班队列,则令FltListCheck=FltListDep;
如果参与检测的是国内起降航班队列,则令FltListCheck=FltListDepArr;
步骤4-3-2,筛选待处理时间片:
按照时间先后顺序,依次取第i个时间片[CapBgnTimei,CapEndTimei),i∈[1,CapSpanNum],并循环开展以下处理;循环完毕后,跳至步骤4-3-9;
步骤4-3-3,筛选待处理的时隙:
按照时间先后顺序,依次取第i个时间片内的第j个时隙[SlotBgnTimei,j,SlotEndTimei,j),j∈[1,SlotSpanNumi],并循环开展以下处理;循环完毕后,返回步骤4-3-2;
步骤4-3-4,筛选待处理机场:
针对全国机场队列APTLIST,从队头开始,依次取第k个机场APTk,k∈[1,AptTotalNum],并循环开展以下处理;循环完毕后,返回步骤4-3-3;
步骤4-3-5,筛选待处理航班:
从FltListCheck队列中筛选第i个时间片的第j个时隙内在机场APTk起飞且需要参与检测的航班,将其加入FltListTmp,包括如下步骤:
步骤4-3-5-1,清空临时航班队列:
清空FltListTmp,令FltTotalNumTmp=0;
步骤4-3-5-2,清空航班处理状态:
针对FltListCheck队列中每架航班Fltm,令其DealMarkm=0;
步骤4-3-5-3,筛选待处理航班:
从FltListCheck队列的第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,开展后续操作;如果所有航班均已处理,结束循环;
步骤4-3-5-4,判断航班Fltm的排序状态位:
对于已成功分配时刻或者排序失败的航班无需再次检测,因此如果SortModem为1或者3,则返回步骤4-3-5-3;否则继续后续操作;
步骤4-3-5-5,判断Fltm是否在机场APTk起飞:
判断航班Fltm的起飞机场是否为APTk;如果不是,则返回步骤4-3-5-3;如果是,继续后续处理;
步骤4-3-5-6,判断航班是否满足统计时段要求:
如果该航班当前没有进行时刻提前,则执行步骤4-3-5-6-1;否则跳至步骤4-3-5-6-2;
步骤4-3-5-6-1,判断非时刻提前航班是否在统计时段内:
如果航班Fltm满足STDm<SlotEndTimei,j,则说明Fltm能够在该时间片内在APTk机场起飞,跳至步骤4-3-5-7;如果不满足,则返回至步骤4-3-5-3;
步骤4-3-5-6-2,判断时刻提前航班是否在统计时段内:
如果航班Fltm同时满足以下三个条件:
1)STDm<SlotEndTimei,j;
2)ETDm≥SlotEndTimei,j;
3)(STDm+SlotSpanTime)≥SlotEndTimei,j;
则说明Fltm能够在该时间片内在APTk机场起飞,继续步骤4-3-5-7;如果不满足,则返回至步骤4-3-5-3;
步骤4-3-5-7,计算航班的处理优先级:
令FltPriom=Fltm(PRIO);
将起飞延误达到消减延误参数一半以上的航班界定为延误较大航班;
步骤4-3-5-8,将航班加入到临时航班队列中:
将航班Fltm加入到FltListTmp中,且令FltTotalNumTmp=FltTotalNumTmp+1;
返回步骤4-3-5-3;
步骤4-3-6,按照起飞时间以及优先级对航班进行排序,包括:
步骤4-3-6-1,根据起飞时间进行排序;
根据先到先服务准则,对FltListTmp中每架航班Fltm,根据其在机场APTk最早可行起飞时间MinSTDm,按照从先到后的顺序进行排序;
步骤4-3-6-2,根据航班处理优先级进行排序:
在上一步基础上,根据FltListTmp中每架航班Fltm的处理优先级FltPriom,按照由大到小的顺序进行排序;
步骤4-3-7,获取机场可用空闲离场容量:
获取机场APTk当前能够为FltListTmp中航班提供的空闲离场容量;
步骤4-3-7-1,获取机场APTk在第i个时间片的第j个时隙能够为FltListCheck中航班提供的离场场总容量;
令SlotCapUsek,i,j=SlotCapk,i,j;
步骤4-3-7-2,计算已被FltListCheck中航班占用的容量值;
令SlotCapUsedk,i,j=0;
步骤4-3-7-2-1,清空航班处理状态
针对FltListCheck队列中每架航班Fltm,令其DealMarkm=0;
步骤4-3-7-2-2,筛选待处理航班;
从FltListCheck队列第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,循环开展后续操作;如果不存在待处理航班,则跳至步骤4-3-7-3;
步骤4-3-7-2-3,判断航班Fltm的排序状态位;
如果航班Fltm的排序状态位SortModem不为1,返回步骤4-3-7-2-2;否则继续后续处理;
步骤4-3-7-2-4,判断航班Fltm是否在机场APTk起飞:
判断航班Fltm的起飞机场是否为APTk;如果不是,则返回步骤4-3-7-2-2;如果是,继续后续操作;
步骤4-3-7-2-5,判断航班Fltm的起飞时间是否在统计时段内:
如果满足STDm∈[SlotBgnTimei,j,SlotEndTimei,j),则令SlotCapUsedk,i,j++;
返回步骤4-3-7-2-2;
步骤4-3-7-3,计算机场APTk在第i个时间片的第j个时隙能够为FltListTmp中航班分配的空闲容量:
令SlotCapUsek,i,j=SlotCapUsek,i,j-SlotCapUsedk,i,j;
步骤4-3-8,检查航班是否满足起飞机场的离场容量限制,包括:
步骤4-3-8-1,清空航班处理状态:
针对FltListTmp队列中每架航班Fltm,令其DealMarkm=0;
令DepSlotFlowk,i,j=0;
步骤4-3-8-2,筛选待处理航班;
从FltListTmp队列第一架航班开始,取当前DealMarkm为0的首架航班Fltm,令其DealMarkm=1,开展后续操作;如果所有航班均已处理,返回步骤4-3-4;
步骤4-3-8-3,判断当前新增流量是否超过空闲容量值:
步骤4-3-8-3-1,如果未超过空闲容量:
即满足DepSlotFlowk,i,j<SlotCapUsek,i,j,说明航班Fltm可以尝试***机场APTk的第i个时间片的第j个时隙;
步骤4-3-8-3-1-1,计算航班Fltm的时刻可行取值范围:
令STDm=SlotBgnTimei,j,
令tmpMinSTDm=STDm,tmpMaxSTDm=tmpMinSTDm+SlotSpanTime-1,
tmpMinSTAm=tmpMinSTDm+(ETAm-ETDm),
tmpMaxSTAm=tmpMaxSTDm+(ETAm-ETDm);
步骤4-3-8-3-1-2,计算航班Fltm当前的综合延误;
如果STDm<MinSTDm,则MixedDelaym=MinSTDm-ETDm;
否则MixedDelaym=STDm-ETDm;
步骤4-3-8-3-1-3,判断航班Fltm起飞时刻的合理性;
如果满足tmpMaxSTDm∈[MinSTDm,MaxSTDm]或者tmpMinSTDm∈[MinSTDm,MaxSTDm],继续后续处理;如果不满足,跳至步骤4-3-8-3-1-7;
步骤4-3-8-3-1-4,计算航班Fltm的起飞延误:
如果航班Fltm的排序状态位SortModem为0,令DepDelaym=0;如果SortModem为2,令DepDelaym=MixedDelaym;
步骤4-3-8-3-1-5,判断航班Fltm是否延误超量,包括:
1)如果Fltm为非时刻提前航班,进行以下判断:
如果DepDelaym>DELE_VALUE,则认为延误超量,令SortModem=3,跳至步骤4-3-8-3-1-7;否则,认为航班Fltm排序成功,令SortModem=1,继续后续处理;
2)如果Fltm为时刻提前航班,进行以下判断:
如果|DepDelaym|>ACC_VALUE,则认为延误超量,令SortModem=3,跳至步骤4-3-8-3-1-7;否则,认为航班Fltm排序成功,令SortModem=1,继续后续处理;
步骤4-3-8-3-1-6,更新排序成功航班信息,包括:
1)更新航班Fltm的起飞时间排序信息:
如果tmpMinSTDm>MinSTDm,令MinSTDm=tmpMinSTDm;
如果tmpMaxSTDm<MaxSTDm,令MaxSTDm=tmpMaxSTDm;
2)更新航班Fltm的降落时间排序信息:
如果tmpMinSTAm>MinSTAm,令MinSTAm=tmpMinSTAm;
如果tmpMaxSTAm<MaxSTAm,令MaxSTAm=tmpMaxSTAm;
令STAm=STDm+(ETAm-ETDm),如果STAm<MinSTAm,则STAm=MinSTAm;
STAm=(STAm/SlotSpanTime)*SlotSpanTime;
3)更新航班Fltm的过点时间排序信息:
令tmpMinDelaym=MinSTDm-ETDm,tmpMaxDelaym=MaxSTDm-ETDm,tmpDepDelaym=STDm-ETDm;
对于航班Fltm的过点队列PassPtListm中每个点PassPtm,n进行以下处理:
令PassPtm,n(tmpSTO)=PassPtm,n(ETO)+tmpDepDelaym;
PassPtm,n(tmpMinSTO)=PassPtm,n(ETO)+tmpMinDelaym;
PassPtm,n(tmpMaxSTO)=PassPtm,n(ETO)+tmpMaxDelaym;
如果PassPtm,n(tmpMinSTO)>PassPtm,n(MinSTO),令PassPtm,n(MinSTO)=PassPtm,n(tmpMinSTO);
如果PassPtm,n(tmpMaxSTO)<PassPtm,n(MaxSTO),令PassPtm,n(MaxSTO)=PassPtm,n(tmpMaxSTO);
令PassPtm,n(STO)=PassPtm,n(tmpSTO),如果PassPtm,n(STO)<PassPtm,n(MinSTO),则PassPtm,n(STO)=PassPtm,n(MinSTO);
更新新增离场流量值:
DepSlotFlowk,i,j=DepSlotFlowk,i,j+1;
返回步骤4-3-8-2;
步骤4-3-8-3-1-7,更新排序失败航班信息:
如果航班为时刻提前航班,则进行步骤4-3-8-3-1-7-1;否则进行步骤4-3-8-3-1-7-2;
步骤4-3-8-3-1-7-1,更新排序失败的非时刻提前航班信息:
令STAm=STDm+(ETAm-ETDm),且
STAm=(STAm/SlotSpanTime)*SlotSpanTime;
令DepDelaym=STDm-ETDm;
令SortModem=3;
返回步骤4-3-8-2;
步骤4-3-8-3-1-7-2,更新排序失败的时刻提前航班信息,包括:
1)初始化航班可行时间范围:
令MinSTDm=ETDm,MaxSTDm=ETDm+DELE_VALUE,MinSTAm=ETAm,MaxSTAm=ETAm+DELE_VALUE;
针对航班Fltm过点队列PassPtListm中每个点PassPtm,n,令
PassPtm,n(STO)=PassPtm,n(ETO),
PassPtm,n(MinSTO)=PassPtm,n(ETO)+(MinSTDm-ETDm),
PassPtm,n(MaxSTO)=PassPtm,n(ETO)+(MaxSTDm-ETDm);
2)初始化容量检测标志位:
令AARCheckModem=0;
令SectorCheckModem=0;
3)更新航班排序起降时间信息:
令STDm=MinSTDm,STAm=MinSTAm;
4)更新容量检测标志位:
令SortModem=2;
5)更新航班时刻提前标志位:
令Fltm(InAccess)=0;
返回步骤4-3-8-2;
步骤4-3-8-3-2,如果超过空闲容量:
即满足DepSlotFlowk,i,j≥SlotCapUsek,i,j,说明航班Fltm不能在第i个时间片的第j个时隙从机场APTk起飞,需另找时隙;
步骤4-3-8-3-2-1,航班状态判断:
判断航班是否满足时刻提前要求,如果满足以下任一条件,则航班时刻不能够提前,执行步骤4-3-8-3-2-2;否则跳至步骤4-3-8-3-2-3:
1)Fltm(InAccess)==0&&Fltm(Accessed)==1;
2)Fltm(InAccess)==0&&AARCheckModem==3;
3)Fltm(InAccess)==0&&SectorCheckModem==3;
步骤4-3-8-3-2-2,非时刻提前航班的处理,包括:
步骤4-3-8-3-2-2-1,更新航班加速状态:
令Fltm(InAccess)=0且Fltm(Accessed)=1;
步骤4-3-8-3-2-2-2,计算航班可行排序时间:
如果STDm<SlotEndTimei,j,则令STDm=SlotEndTimei,j,MixedDelaym=STDm-ETDm;
令tmpMinSTDm=STDm;
令tmpMinSTAm=tmpMinSTDm+(ETAm-ETDm);
步骤4-3-8-3-2-2-3,判断起飞时间是否在可行范围内:
如果满足tmpMinSTDm∈[MinSTDm,MaxSTDm],则进行步骤4-3-8-3-2-2-4;否则进行步骤4-3-8-3-2-2-5;
步骤4-3-8-3-2-2-4,起飞时间在可行范围内的处理:
如果tmpMinSTDm>MinSTDm,则MinSTDm=tmpMinSTDm;
如果tmpMinSTAm>MinSTAm,则MinSTAm=tmpMinSTAm;
令STAm=ETAm+(STDm-ETDm);
令SortModem=2;
返回步骤4-3-8-2;
步骤4-3-8-3-2-2-5,起飞时间不在可行范围内的处理:
令STAm=STDm+(ETAm-ETDm),且
STAm=(STAm/SlotSpanTime)*SlotSpanTime;
令DepDelaym=STDm-ETDm;
令SortModem=3;
返回步骤4-3-8-2;
步骤4-3-8-3-2-3,时刻提前航班的处理,包括:
步骤4-3-8-3-2-3-1,更新航班加速状态:
令Fltm(InAccess)=1且Fltm(Accessed)=1;
步骤4-3-8-3-2-3-2,计算航班可行排序时间:
令tmpSTDm=SlotBgnTimei,j-SlotSpanTime;
如果满足tmpSTDm≥ETDm,则tmpSTDm=ETDm-SlotSpanTime;
如果满足STDm>tmpSTDm,则令STDm=tmpSTDm,MixedDelaym=STDm-ETDm;
令tmpSTDm=STDm;
令tmpSTAm=tmpSTDm+(ETAm-ETDm);
步骤4-3-8-3-2-3-3,判断排序时间是否在可行时间范围内:
如果满足|MixedDelaym|>ACC_VALUE,则该航班超过加速上限,进行步骤4-3-8-3-2-3-4;否则进行步骤4-3-8-3-2-3-5;
步骤4-3-8-3-2-3-4,未超过加速上限航班的处理:
如果tmpMinSTDm<MinSTDm,则MinSTDm=tmpMinSTDm;
如果tmpMinSTAm<MinSTAm,则MinSTAm=tmpMinSTAm;
令STAm=ETAm+(STDm-ETDm);
令SortModem=2;
返回步骤4-3-8-2;
步骤4-3-8-3-2-3-5,超过加速上限航班的处理,包括:
1)初始化航班可行时间范围:
令MinSTDm=ETDm,MaxSTDm=ETDm+DELE_VALUE,MinSTAm=ETAm,MaxSTAm=ETAm+DELE_VALUE;
针对航班Fltm过点队列PassPtListm中每个点PassPtm,n,令
PassPtm,n(STO)=PassPtm,n(ETO),
PassPtm,n(MinSTO)=PassPtm,n(ETO)+(MinSTDm-ETDm),
PassPtm,n(MaxSTO)=PassPtm,n(ETO)+(MaxSTDm-ETDm);
2)初始化容量检测标志位:
令AARCheckModem=0;
令SectorCheckModem=0;
3)更新航班排序起降时间:
令STDm=MinSTDm,STAm=MinSTAm;
4)更新容量检测标志位:
令SortModem=2;
5)更新航班时刻提前标志位:
令Fltm(InAccess)=0;
返回步骤4-3-8-2;
步骤4-3-9,检测是否存在航班未处理完毕:
检查FltListCheck队列中是否存在航班Fltm满足SortModem=2且STDm∈[tBgnTime,tEndTime);如果存在,则说明存在航班还未处理完毕,返回步骤4-3-2,再次开始循环;如果不存在,则计算完毕,退出循环;
步骤4-5包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Fltm,判断其扇区容量检测标志,如果SectorCheckModem为3,则令SectorCheckMark=0,并停止检索;
步骤4-6包括:
如果SectorCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤4-7;
步骤4-7包括:
当FltListCheck队列中排序失败航班重置完毕后,返回步骤4-3;
步骤5包括如下步骤:
步骤5-1,机场离场容量分解;
步骤5-2,根据机场的离场容量限制优化航班时刻;
步骤5-3,检测航班是否满足途径扇区的容量资源限制;
步骤5-4,更新全国所有扇区的容流平衡检测标志;
步骤5-5,检测航班是否满足着陆机场的进场容量资源限制;
步骤5-6,更新全国所有机场的进场容流平衡检测标志;
步骤5-7,判断是否存在航班不满足容量限制;
步骤5-8,重置排序失败航班的信息;
步骤5中令FltListCheck=FltListDepArr;
步骤5-4包括:
令SectorCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其扇区容量检测标志,如果SectorCheckModei为3,则令SectorCheckMark=0,并停止检索;
步骤5-6包括:
令AARCheckMark=1;
针对FltListCheck队列中每架航班Flti,判断其进场容量检测标志,如果AARCheckModei为3,则令AARCheckMark=0,并停止检索;
步骤5-7包括:
如果SectorCheckMark为1且AARCheckMark为1,说明FltListCheck队列检测成功,完成计算,退出循环;否则继续步骤5-8;
步骤5-8包括:
当FltListCheck队列中排序失败航班重置完毕后,返回步骤5-2;
步骤6包括:
对于豁免航班队列FltListExempt中的每一架航班Flti,进行以下处理:
令SortModei=1;
令DepDelayi=0;
令STDi=ETDi,令STAi=ETAi;
对于航班Flti的过点队列PassPtListi中每个点PassPti,j,令PassPti,j(STO)=PassPti,j(ETO);
步骤7包括如下步骤:
步骤7-1,航班运行效能指标筛选;
步骤7-2,计算航班运行效能指标;
步骤7-1包括:
根据与空管用户的交流,筛选关键性指标构成本方法的航班运行效能评估指标集,
具体包括:
航班总延误;
航班平均延误;
航班延误架次;
航班消减架次;
航班正常性;
步骤7-2包括:
步骤7-2-1,变量定义:
TotalFltDelay:全国航班的总延误,单位为小时;
AveFltDelay:全国航班的平均延误,单位为分钟;
FltDelayNum:全国航班的延误架次;
FltDeleteNum:全国航班的消减架次;
FltNormality:全国航班的正常性;
AdjMarki:航班Flti的时刻调整状态,0:未调整、1:时刻提前、2:延误、3:消减,初始值为0;
步骤7-2-2,计算航班时刻调整状态:
对于FltListIni中每架航班Flti,根据其排序状态SortModei以及延误情况DepDelayi,判定航班的时刻调整状态,初始状态下令AdjMarki=0;判定条件如下:
1)延误航班判定:
如果满足SortModei==1&&DepDelayi>0,则该航班为延误航班,令其AdjMarki=2;
2)时刻提前航班判定:
如果满足SortModei==1&&DepDelayi<0,则该航班为延误航班,令其AdjMarki=1;
3)消减航班判定:
如果满足SortModei==3,则该航班为建议消减航班,令其AdjMarki=3;
步骤7-2-3,计算航班延误架次指标:
对于FltListIni中每架航班Flti,如果满足AdjMarki等于2,则该航班为延误航班,加入到延误架次统计量中,即FltDelayNum=FltDelayNum+1;
步骤7-2-4,计算航班消减架次指标:
对于FltListIni中每架航班Flti,如果满足AdjMarki等于3,则该航班为建议消减航班,加入到消减架次统计量中,即FltDeleteNum=FltDeleteNum+1;
步骤7-2-5,计算航班总延误指标:
对于FltListIni中每架航班Flti,如果满足AdjMarki等于2,则该航班为延误航班,将该航班的延误DepDelayi加入到总延误TotalFltDelay中,即:
步骤7-2-6,计算航班平均延误指标:
步骤7-2-7,计算航班正常性指标:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110219096.0A CN113034980B (zh) | 2021-02-26 | 2021-02-26 | 一种基于时刻表的航班运行效能预先评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110219096.0A CN113034980B (zh) | 2021-02-26 | 2021-02-26 | 一种基于时刻表的航班运行效能预先评估方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113034980A CN113034980A (zh) | 2021-06-25 |
CN113034980B true CN113034980B (zh) | 2022-08-19 |
Family
ID=76461908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110219096.0A Active CN113034980B (zh) | 2021-02-26 | 2021-02-26 | 一种基于时刻表的航班运行效能预先评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113034980B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11710416B2 (en) | 2021-07-30 | 2023-07-25 | The 28Th Research Institute Of China Electronics Technology Group Corporation | Multi-dimensional flight release efficiency evaluation method |
CN113554898B (zh) * | 2021-07-30 | 2022-07-19 | 中国电子科技集团公司第二十八研究所 | 一种多维度航班放行效能评估方法 |
CN113643571B (zh) * | 2021-10-18 | 2022-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于航班正常性目标的空域网络优化方法 |
CN113706933B (zh) * | 2021-11-01 | 2022-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于航班正常性目标的时刻优化方法 |
CN114881405B (zh) * | 2022-03-30 | 2024-07-23 | 南京航空航天大学 | 一种基于高峰需求的机场时刻公平性计算方法 |
CN114822088A (zh) * | 2022-06-29 | 2022-07-29 | 中国电子科技集团公司第二十八研究所 | 一种基于航班正常性目标的容流协同优化方法 |
CN115273563B (zh) * | 2022-07-27 | 2023-08-25 | 南京莱斯信息技术股份有限公司 | 地区多机场协同放行中飞越航班决策方法 |
CN115983613B (zh) * | 2023-03-21 | 2023-06-16 | 民航成都信息技术有限公司 | 一种航班拼接方法、装置、电子设备及存储介质 |
CN117351786B (zh) * | 2023-12-01 | 2024-02-27 | 中国电子科技集团公司第二十八研究所 | 一种多元约束下的航班一体化调度方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103426331B (zh) * | 2013-08-22 | 2015-05-27 | 南京莱斯信息技术股份有限公司 | 多机场协同放行***航班排序决策方法 |
CN105574665A (zh) * | 2015-12-14 | 2016-05-11 | 中国民航大学 | 适用于枢纽机场的航班时刻资源配置及优化方法 |
CN109584638B (zh) * | 2018-12-17 | 2021-11-02 | 中国电子科技集团公司第二十八研究所 | 一种面向区域网络的先期航班时刻协同优化方法 |
CN110660274B (zh) * | 2019-09-30 | 2020-09-25 | 中国电子科技集团公司第二十八研究所 | 一种机场容需平衡预测方法 |
-
2021
- 2021-02-26 CN CN202110219096.0A patent/CN113034980B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113034980A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113034980B (zh) | 一种基于时刻表的航班运行效能预先评估方法 | |
CN113643571B (zh) | 一种基于航班正常性目标的空域网络优化方法 | |
CN107016881B (zh) | 一种多跑道机场进场航班多效能优化排序方法 | |
CN109741638B (zh) | 一种进离场管理***一体化协同运行方法 | |
CN104751681B (zh) | 一种基于统计学习模型的停机位分配方法 | |
CN103413462B (zh) | 一种综合考虑空域拥堵和航班延误的空中交通网络流量优化方法 | |
CN113724534B (zh) | 一种航班飞行轨迹多目标动态规划方法 | |
CN109448445A (zh) | 基于长短期记忆神经网络的航班延误分级预警方法 | |
CN107591034A (zh) | 一种进港航班排序的实现方法 | |
CN109584638B (zh) | 一种面向区域网络的先期航班时刻协同优化方法 | |
CN109583627B (zh) | 飞机着陆排队优化方法及装置 | |
CN107291548A (zh) | 任务的资源调度方法及装置 | |
CN103617472A (zh) | 多项目多任务管理中的资源平衡自适应调度方法 | |
CN103345504A (zh) | 单星调度的算子构建方法 | |
CN105825717B (zh) | 一种基于不确定到达时刻的空域时隙资源优化分配方法 | |
CN103294550A (zh) | 一种异构多核线程调度方法、***及异构多核处理器 | |
CN107341620B (zh) | 基于bada燃油消耗率的短期天气下进场航班延误成本计算方法 | |
CN114446094A (zh) | 一种航班排序信息的时空转换方法 | |
CN116307542A (zh) | 基于多计量点约束的进港排序方法及电子终端 | |
CN112365095A (zh) | 基于天气和流量管控影响的航班延误分析及预测方法 | |
Bojanowski et al. | Multi-runway aircraft sequencing at congested airports | |
CN109918185A (zh) | 基于虚拟任务固定优先级混合关键***调度方法 | |
CN113257042A (zh) | 一种基于时空分布特征的多机场终端区航班流生成方法 | |
Xiangwei et al. | Sliding window algorithm for aircraft landing problem | |
CN112070291A (zh) | 一种基于航班正常性的tsat时刻优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |