Flight plan conflict detection method and device
By performing five types of conflict detection on flight plans, the problem of low efficiency in flight plan conflict identification in existing technologies is solved, and efficient flight plan management with real-time monitoring and synchronous analysis is achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- HAINAN AIRLINES HLDG CO LTD
- Filing Date
- 2026-01-21
- Publication Date
- 2026-05-01
AI Technical Summary
Existing technologies in the air transport industry rely on manual operation and general spreadsheet tools for flight schedule conflict identification, resulting in low processing efficiency and difficulty in supporting real-time monitoring and synchronous analysis of large-scale, multi-source data, leading to information synchronization delays and slow adjustment responses.
A conflict detection method for flight schedules is provided. By obtaining the latest group version of the flight schedule, five types of conflict detection are performed: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection. Conflict detection results are generated and sent via email service.
It enables rapid and effective flight schedule conflict detection, improves processing efficiency, supports real-time monitoring and synchronous analysis, and enhances the timeliness and accuracy of information.
Smart Images

Figure CN121963543A_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of aviation transportation technology, and in particular to a method and apparatus for detecting conflicts in flight schedules. Background Technology
[0002] In the air transport industry, flight scheduling is a complex resource allocation task. Flight slots are a scarce resource, requiring the rational arrangement of flight take-off and landing times within limited airport slot resources, while controlling the increase or decrease in flight volume to maintain a reasonable competitive landscape among airlines on different routes.
[0003] Currently, conflict identification and statistics typically rely on manual operation and general spreadsheet tools (such as Excel). This method is inefficient when dealing with large-scale, multi-source flight schedule data and struggles to support real-time monitoring and synchronous analysis of conflicts and flight volume changes. The timeliness and accuracy of its analysis results are limited, often resulting in information synchronization delays and slow adjustment responses in cross-airline collaborative scenarios. Summary of the Invention
[0004] In view of this, the present invention provides a method and apparatus for detecting flight schedule conflicts, which can quickly and effectively detect conflicts and conflict types in flight schedules.
[0005] The first aspect of this invention provides a method for detecting conflicts in flight schedules, comprising:
[0006] Get the latest group version of the flight schedule;
[0007] Based on the latest group version of the flight schedule, five types of conflict detection are executed concurrently to generate conflict detection results; the five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection.
[0008] The red-headed time conflict detection includes: filtering the target group's data from the same red-headed document, grouping the target group's data into flight segments to obtain the first flight segment grouping result, traversing each first flight segment, and generating the conflict detection result of the first flight segment based on the sum of the average daily number of all direct and skip flights within the first flight segment, the flight's departure time, and flight time.
[0009] The group time slot conflict detection includes: grouping the data in the latest group version of the flight plan into segments to obtain the second segment grouping results; traversing each second segment; and generating the conflict detection result of the second segment based on the departure time of the flights in the second segment and the same official document.
[0010] The newly added flight conflict detection includes: grouping flight segments based on the official document and the latest group version of the flight plan, generating a third flight segment grouping result, traversing each group version of the flight segment, and if the group version of the flight segment is in the official document's flight segment, then generating a third flight segment conflict detection result based on the official document's flight segment data and the group version's flight segment data; wherein, the third flight segment grouping result includes both the official document's flight segment and the group version's flight segment;
[0011] The flight volume reduction conflict detection includes: grouping flight segments based on the same official document and the latest group version of the flight plan, generating a fourth flight segment grouping result, traversing each group version of the flight segment, and generating a fourth flight segment conflict detection result based on the average daily number of flights within the same group and the average daily number of flights in the group version of the flight plan; wherein, the fourth flight segment grouping result includes the flight segments of the same official document and the flight segments of the group version;
[0012] The airline conflict detection includes: grouping flight segments based on the latest group version of the flight plan, generating the fifth segment grouping result, traversing each fifth segment, and generating the conflict detection result of the fifth segment based on the average daily number of flights, the set of operating airlines, and the upper limit of the number of airlines in the fifth segment.
[0013] Optionally, the step of traversing each first flight segment and generating a conflict detection result for the first flight segment based on the sum of the average daily number of all direct and bypass flights within the first flight segment, the flight's departure time, and flight time includes:
[0014] Iterate through each first segment. If there are multiple flights in the first segment, calculate the flight time of the flights in the first segment.
[0015] Based on the segment information of the first flight segment, the flight time and flight information of the flights within the first flight segment, the first moment conflict threshold is obtained;
[0016] The departure times of flights within the first flight segment are obtained through analysis;
[0017] If the flights within the first segment are direct flights, then the conflict detection result of the first segment is generated based on the departure time and the first time conflict threshold of the flights within the first segment;
[0018] If the flights within the first segment are skip flights and are long-distance routes, then the conflict detection result of the first segment is generated based on the departure time of the flights within the first segment, the round-trip flight time of the skip long-distance routes, and the first time conflict threshold.
[0019] Optionally, the step of traversing each second flight segment and generating conflict detection results for the second flight segment based on the aforementioned official document and the flight departure times within the second flight segment includes:
[0020] Iterate through each second segment and obtain the second time conflict threshold based on the segment information, flight time and flight information of the flights within the second segment;
[0021] The departure times of flights within the second flight segment are obtained through analysis;
[0022] Based on the departure time, departure airport, and arrival airport of the flights within the second flight segment, determine the historical data corresponding to the flights in the same official document.
[0023] Based on the historical data corresponding to the flights in the same official document, the second time conflict threshold, the takeoff time of flights in the second segment, and the round-trip flight time of bypassing long routes, the conflict detection results of the first segment are generated.
[0024] Optionally, in the step of traversing each group version of the flight segment, if the flight segment of the group version is in the same red-headed flight segment, then based on the flight segment data of the same red-headed flight segment and the flight segment data of the group version, a conflict detection result for the third flight segment is generated, including:
[0025] Traverse the flight segments of each group version. If the flight segment of the group version is in the same as the Shangtong Hongtou flight segment, determine the average daily number of flights of the Shangtong Hongtou group based on the flight segment data of the Shangtong Hongtou group, and determine the average daily number of flights of the group version flight segment based on the flight segment data of the group version.
[0026] Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the newly added threshold, the conflict detection results of the third flight segment are generated.
[0027] Optionally, the step of traversing each group version of the flight segment and generating the conflict detection result for the fourth flight segment based on the average daily number of flights within the same group and the average daily number of flights in the group version of the flight segment includes:
[0028] Iterate through the flight segments of each group version, determine the average daily number of flights of the Shangtong Hongtou Group based on the Shangtong Hongtou flight segment data, and determine the average daily number of flights of the group version flight segments based on the group version flight segment data;
[0029] Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the reduction threshold, the conflict detection results for the third flight segment are determined.
[0030] Optionally, after performing five types of conflict detection concurrently based on the latest group version of the flight plan and generating conflict detection results, the process further includes:
[0031] Statistical indicators are generated based on the detection results of each type of conflict in the conflict detection results.
[0032] Based on the aforementioned statistical indicators, an email data object is constructed;
[0033] The email data object is used to invoke the email service, and the data in the email data object is sent using the email service interface.
[0034] Optionally, the conflict detection method for the flight schedule further includes:
[0035] The primary navigation operator is determined based on the fleet of operating airlines, the regions of the departure airport and the arrival airport, and the configuration of the regional primary navigation operator.
[0036] A second aspect of the present invention provides a conflict detection device for flight schedules, comprising:
[0037] The acquisition unit is used to obtain the latest group version of the flight plan;
[0038] The conflict detection unit is used to concurrently perform five types of conflict detection based on the latest group version of the flight plan and generate conflict detection results; wherein, the five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection;
[0039] When the conflict detection unit performs the red-headed time conflict detection, it includes: filtering the target group's data from the same red-headed file, grouping the target group's data into flight segments to obtain the first flight segment grouping result, traversing each first flight segment, and generating the first flight segment's conflict detection result based on the sum of the average daily number of all direct and skip flights within the first flight segment, the flight's departure time, and flight time.
[0040] When the conflict detection unit performs the group time conflict detection, it includes: grouping the data in the latest group version of the flight plan into segments to obtain the second segment grouping result; traversing each second segment; and generating the conflict detection result of the second segment based on the same official document and the departure time of the flights in the second segment.
[0041] When the conflict detection unit performs the new flight volume conflict detection, it includes: grouping flight segments based on the same official document and the latest group version of the flight plan, generating a third flight segment grouping result, traversing each group version of the flight segment, and if the group version of the flight segment is in the same official document, generating a third flight segment conflict detection result based on the same official document and the group version of the flight segment data; wherein, the third flight segment grouping result includes the same official document and the group version of the flight segment;
[0042] When the conflict detection unit performs the flight volume reduction conflict detection, it includes: grouping flight segments based on the same official document and the latest group version flight plan, generating a fourth flight segment grouping result, traversing each group version flight segment, and generating a fourth flight segment conflict detection result based on the average daily number of flights within the same group and the average daily number of flights in the group version flight segment; wherein, the fourth flight segment grouping result includes the same official document flight segment and the group version flight segment;
[0043] When the conflict detection unit performs the airline conflict detection, it includes: grouping flight segments based on the latest group version of the flight plan, generating the fifth flight segment grouping result, traversing each fifth flight segment, and generating the conflict detection result of the fifth flight segment based on the average daily number of flights of the fifth flight segment, the set of operating airlines, and the upper limit of the number of airlines.
[0044] Optionally, when the conflict detection unit traverses each first flight segment and generates a conflict detection result for the first flight segment based on the sum of the average daily number of all direct and bypass flights within the first flight segment, the flight's departure time, and flight time, it includes:
[0045] Iterate through each first segment. If there are multiple flights in the first segment, calculate the flight time of the flights in the first segment.
[0046] Based on the segment information of the first flight segment, the flight time and flight information of the flights within the first flight segment, the first moment conflict threshold is obtained;
[0047] The departure times of flights within the first flight segment are obtained through analysis;
[0048] If the flights within the first segment are direct flights, then the conflict detection result of the first segment is generated based on the departure time and the first time conflict threshold of the flights within the first segment;
[0049] If the flights within the first segment are skip flights and are long-distance routes, then the conflict detection result of the first segment is generated based on the departure time of the flights within the first segment, the round-trip flight time of the skip long-distance routes, and the first time conflict threshold.
[0050] Optionally, when the conflict detection unit traverses each second flight segment and generates the conflict detection result for the second flight segment based on the aforementioned official document and the flight departure time within the second flight segment, it includes:
[0051] Iterate through each second segment and obtain the second time conflict threshold based on the segment information, flight time and flight information of the flights within the second segment;
[0052] The departure times of flights within the second flight segment are obtained through analysis;
[0053] Based on the departure time, departure airport, and arrival airport of the flights within the second flight segment, determine the historical data corresponding to the flights in the same official document.
[0054] Based on the historical data corresponding to the flights in the same official document, the second time conflict threshold, the takeoff time of flights in the second segment, and the round-trip flight time of bypassing long routes, the conflict detection results of the first segment are generated.
[0055] Optionally, when the conflict detection unit traverses each group version of the flight segment, and if the flight segment of the group version is within the same red-headed flight segment, the conflict detection result for the third flight segment is generated based on the red-headed flight segment data and the group version flight segment data, including:
[0056] Traverse the flight segments of each group version. If the flight segment of the group version is in the same as the Shangtong Hongtou flight segment, determine the average daily number of flights of the Shangtong Hongtou group based on the flight segment data of the Shangtong Hongtou group, and determine the average daily number of flights of the group version flight segment based on the flight segment data of the group version.
[0057] Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the newly added threshold, the conflict detection results of the third flight segment are generated.
[0058] Optionally, when the conflict detection unit traverses each group version of the flight segment and generates the conflict detection result for the fourth flight segment based on the average daily number of flights within the same group and the average daily number of flights in the group version, the following steps are included:
[0059] Iterate through the flight segments of each group version, determine the average daily number of flights of the Shangtong Hongtou Group based on the Shangtong Hongtou flight segment data, and determine the average daily number of flights of the group version flight segments based on the group version flight segment data;
[0060] Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the reduction threshold, the conflict detection results for the third flight segment are determined.
[0061] Optionally, the flight schedule conflict detection device further includes:
[0062] The statistical indicator generation unit is used to generate statistical indicators based on the detection results of each type of conflict detection in the conflict detection results;
[0063] The email data object construction unit is used to construct email data objects based on the statistical indicators.
[0064] The email service invocation unit is used to invoke the email service using the email data object and to send the data in the email data object using the email service interface.
[0065] Optionally, the flight schedule conflict detection device further includes:
[0066] The primary navigation officer determination unit is used to determine the primary navigation officer based on the set of operating airlines, the region to which the departure airport belongs, the region to which the arrival airport belongs, and the configuration of the regional primary navigation officer.
[0067] A third aspect of the present invention provides an electronic device, comprising:
[0068] One or more processors;
[0069] A storage device on which one or more programs are stored;
[0070] When the one or more programs are executed by the one or more processors, the one or more processors implement the flight schedule conflict detection method as described in any one of the first aspects.
[0071] A fourth aspect of the present invention provides a computer storage medium having a computer program stored thereon, wherein the computer program, when executed by a processor, implements a conflict detection method for flight schedules as described in any one of the first aspects.
[0072] As can be seen from the above scheme, the present invention provides a method and apparatus for conflict detection of flight schedules. After obtaining the latest group version of the flight schedule, the method concurrently performs five types of conflict detection based on the latest group version of the flight schedule: red-headed time slot conflict detection, group time slot conflict detection, flight increase conflict detection, flight decrease conflict detection, and airline conflict detection, generating conflict detection results. This method quickly and effectively detects conflicts and conflict types in flight schedules. Attached Figure Description
[0073] To more clearly illustrate the technical solutions in the embodiments of the present invention or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on the provided drawings without creative effort.
[0074] Figure 1 A flowchart illustrating a conflict detection method for flight schedules provided in an embodiment of the present invention;
[0075] Figure 2 This is a schematic diagram of a flight schedule conflict detection device provided in another embodiment of the present invention. Detailed Implementation
[0076] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.
[0077] The term "comprising" and its variations as used herein are open-ended inclusion, meaning "including but not limited to". The term "based on" means "at least partially based on". The term "one embodiment" means "at least one embodiment"; the term "another embodiment" means "at least one additional embodiment"; the term "some embodiments" means "at least some embodiments". Definitions of other terms will be given in the description below.
[0078] It should be noted that the information (including but not limited to user device information, user personal information, etc.) and data (including but not limited to data used for analysis, stored data, displayed data, etc.) involved in this invention are all information and data authorized by the user or fully authorized by all parties.
[0079] It should be noted that the concepts of "first" and "second" mentioned in this invention are only used to distinguish different devices, modules or units, and are not used to limit the order of functions performed by these devices, modules or units or their interdependencies.
[0080] It should be noted that the terms "a" and "a plurality of" used in this invention are illustrative rather than restrictive. Those skilled in the art should understand that, unless otherwise expressly indicated in the context, they should be understood as "one or more".
[0081] First, the technical terms used in this invention will be explained:
[0082] Flight Season: Civil aviation divides the year into summer / autumn (XQ, March-October) and winter / spring (DC, October-March of the following year);
[0083] Airline: An airline company, represented by a two-letter code (e.g., HU - Hainan Airlines, CN - Grand China Air).
[0084] Flight Leg: From the departure airport to the arrival airport, represented by a three-letter code (e.g., PEK-SHA means Beijing to Shanghai);
[0085] Flight Route: The specific flight operation plan, including flight number, departure and arrival times, and schedule;
[0086] Flight Week: Numbers 1-7 represent Monday to Sunday, such as "135" indicating flights on Mondays, Wednesdays, and Fridays;
[0087] Bureau Data: Official flight schedule data approved by the Civil Aviation Administration of China, serving as a historical benchmark;
[0088] Group Version: The flight schedule version developed internally by the airline group;
[0089] Same Season Last Year: The same season last year, such as summer / autumn 2024 corresponding to summer / autumn 2023;
[0090] Leading Airline: The airline that receives priority coverage on a flight segment, usually the base airline or the airline with the largest market share;
[0091] Single Airline: A flight segment operated by only one airline (within a group);
[0092] Shared Flight: A flight segment operated jointly by multiple airlines;
[0093] Daily Average Frequency: The average number of flights per day for a flight segment / airline / flight number;
[0094] HUX Group: A collection of airline codes for HNA Group, including HU, CN, etc.
[0095] This invention provides a method for conflict detection in flight schedules, such as... Figure 1 As shown, the specific steps include:
[0096] S101, Obtain the latest group version of the flight schedule.
[0097] In the practical application of this invention, the scheduling plans of each airline can be arranged into the latest group version flight plan by pre-setting a fixed time in the system. This is not limited here.
[0098] In practical applications of this invention, the system comprises at least the following components: a timed task layer: FlightTimeConflictAndVolumeTask, used for timed triggering of entry points; a business service layer: FlightTimeConflictAndVolumeService, used for business process orchestration; an asynchronous service layer: FlightTimeConflictAsyncTaskService, used for concurrent conflict detection; a data access layer: multiple Mappers, used for database access; and external services: ReportFeignClient and EmailService, used for data push and email sending, which are not limited here.
[0099] The timed scheduling framework can use, but is not limited to, the ISchedulingTask interface; asynchronous processing can use, but is not limited to, the @Async annotation + CompletableFuture; data processing can use, but is not limited to, the Java Stream API; data caching can use, but is not limited to, Redis; remote calls can use, but are not limited to, Feign Client, and there are no restrictions here.
[0100] In the practical application of this invention, the timed task triggering and parameter parsing can be achieved through the following steps (steps A1-A3):
[0101] Step A1: Define the entry point;
[0102] Specifically, the following code can be used, but is not limited to, to define the entry information:
[0103] FlightTimeConflictAndVolumeTask.execute();
[0104] Step A2: Input parameters;
[0105] tempInPar="email recipients; email CC recipients"
[0106] Example: "user1@example.com,user2@example.com;copy@example.com"
[0107] Parameter parsing logic:
[0108] if(!StringUtils.isEmpty(tempInPar)){
[0109] String[] split=tempInPar.split(";");
[0110] String mailTo = split[0]; / / Email recipient
[0111] String mailCopy = split[1]; / / Email CC recipients (optional)
[0112] }
[0113] Step A3: Invoke the business service;
[0114] Specifically, the following code can be used, but is not limited to, to call business services:
[0115] flightTimeConflictAndVolumeService.FlightTimeConflictAndVolumeStatistics(mailTo,mailCopy);
[0116] In the actual application of this invention, if an exception occurs, all exceptions are captured and error logs are recorded. Stack information can also be printed to facilitate problem localization, so that task exceptions do not affect the continued operation of the timed scheduling framework.
[0117] Understandably, prior to collision detection, basic data preparation is necessary, including the following steps (steps B1-B4):
[0118] Step B1: Load airport data;
[0119] Specifically, the mapping relationship between the airport's three-letter code and its Chinese name can be loaded from a cache (such as REdis) for use in generating Chinese names for subsequent flight segments.
[0120] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0121] Map<String,Object> airportMap=redisTemplatePublicWrapper.hashEntriesGet(REDIS_KEY_AIRPORT).
[0122] Step B2: Query the list of all airlines under the group, and distinguish between airlines inside and outside the group by the airline codes in the list.
[0123] In the practical application of this invention, taking HUX Group as an example, it can be implemented through, but is not limited to, the following code:
[0124] List <string>airlnGroupList=tsAirportFltHisMapper.selectAirlnByAirlnGroup("HUX");
[0125] Step B3: Obtain the latest group version, including at least the version ID, name, year, and season.
[0126] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0127] FltPlanVersion latestVersion=fltPlanVersionMapper.selectLatestJTVersionInfo();
[0128] Step B4: Process seasonal flight data. Specifically, the `processSeasonData` method can be used to process seasonal flight data and return a `TsSeasonDO` object for later use.
[0129] TsSeasonDO tsSeasonDO=processSeasonData(latestVersion);
[0130] Season code conversion: Convert the season number to the season code. For example, the season number is 1 and its corresponding season code is XQ (summer and autumn), and the season number is 2 and its corresponding season code is DC (winter and spring).
[0131] The calculation of the number of days in a flight season is: number of days in a flight season = (end date of flight season - start date of flight season) + 1;
[0132] For example: Summer / Autumn 2024: March 31, 2024 to October 26, 2024, then the number of flight season days = 210 days.
[0133] Step B5: Initialize the group version data. Specifically, this can be done by calling, but is not limited to, the selectAndInitRpFltPlanDto() method to complete the following steps (Steps B51-B55):
[0134] Step B51: Query the group version details data;
[0135] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0136] List <rpfltplanbasedto>rpFltPlanBaseDTOS=
[0137] flightTimeConflictAndVolumeMapper.selectLatestJTVersionDataList(versionId);
[0138] Step B52: Group and analyze data by flight segment;
[0139] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0140] Map <String,List <rpfltplanbasedto>>groupBySegmentRpList=
[0141] rpFltPlanBaseDTOS.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getSegment));
[0142] For each flight segment, calculate the number of flights on the route and the total number of flights on the segment.
[0143] Wherein, Flight Volume = calculateFlightVolumeByDateAndWeek(start date, end date, flight duration);
[0144] Specifically, the total number of flights for the route throughout the entire season is calculated based on the start and end date range and the flight schedule string (e.g., "1357" means Monday, Wednesday, Friday, and Sunday).
[0145] Wherein, total number of flights in a segment = Σ (number of flights on all routes within the segment); average daily number of flights in a segment = total number of flights in the segment / number of days in the flight season;
[0146] Step B53: Group statistics by airline;
[0147] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0148] Map <String,List <rpfltplanbasedto>>groupByAirline=value.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getAirlnCd));
[0149] For each airline, calculate the total number of flights and the average daily number of flights for that airline.
[0150] Among them, the total number of flights of an airline = Σ (the number of flights of the airline on all routes in this segment); the average number of flights per day of an airline = the total number of flights of the airline / the number of days in the flight season;
[0151] Step B54: Group and count by flight number;
[0152] In practical applications of this invention, it can be implemented using, but is not limited to, the following code:
[0153] Map <String,List <rpfltplanbasedto>>groupByFltNbr=subValue.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getFltNbr));
[0154] For each flight number, calculate the average number of flights per day for that flight number: Average number of flights per day = Total number of flights per flight number / Number of days in the flight season;
[0155] Among them, the total number of flights by flight number = Σ (the number of flights on all routes with the same flight number and the same flight segment);
[0156] Step B55: Data merging process;
[0157] Specifically, multiple records with the same flight segment, airline, flight number, and takeoff and landing times will be merged.
[0158] In the specific implementation of this invention, the merging rules may be, but are not limited to: grouping by flight number + departure time + arrival time; merging flight schedules: FltPlanUtil.mergeFltWeek(flight schedule 1, flight schedule 2); merging flight volume: accumulating the flight volume of all records; merging average daily flights: accumulating the average daily flights of all records.
[0159] It is understandable that the above calculation results can be preset with the required precision, such as retaining 2 decimal places and using rounding, which is not limited here.
[0160] Step B6: Initialize the official data. Specifically, this can be done by calling, but is not limited to, the selectInitNimpBureauDto() method to complete the following steps (Steps B61-B63):
[0161] Step B61: Calculate the previous flight season, which can be done using the following rules: current flight season → previous flight season, 2024 summer / autumn (20241) → 2023 summer / autumn (20231); 2024 winter / spring (20242) → 2023 winter / spring (20232). The calculation formula is: previous year = current year - 1; previous season = current season (remains unchanged).
[0162] Step B62: Query the same red-headed data. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0163] List <nimpbureaudo>nimpBureauList=flightTimeConflictAndVolumeMapper.selectRedHeadDataList(lastSameYear,lastSameSeason);
[0164] Step B63: Calculate statistical indicators. It should be noted that this is similar to the group version data, calculating: total number of flights per segment, average daily number of flights per segment, total number of flights per airline system, average daily number of flights per airline system (within HUX group vs. outside group), total number of flights per airline, average daily number of flights per airline, and average daily number of flights per flight number.
[0165] In the airline system statistics, the total number of flights in the airline system = Σ (the total number of flights in the airline system); the average daily number of flights in the airline system = the total number of flights in the airline system / the number of days in the flight season.
[0166] Grouping by flight system (e.g., HUX, non-HUX) can be achieved using, but is not limited to, the following code:
[0167] Map <String,List <nimpbureaudo>>groupByAirlineGroupBureauList=value.stream().collect(Collectors.groupingBy(NimpBureauDo::getAirlnGroup)).
[0168] Step B7: Load configuration data, specifically including the following steps (Steps B71-B73):
[0169] Step B71: Primary Navigation Authority Configuration. This can be achieved by querying the primary navigation authority configuration at the route level using, but is not limited to, the following code:
[0170] List <timeconflictdto>timeConflictOptimization=flightTimeConflictAndVolumeMapper.selectTimeConflictLeadCompany();
[0171] Step B72: Airline Dominance Region Configuration. This can be achieved by querying the regional-level airline dominance configuration using, but is not limited to, the following codes:
[0172] List <tsairlinedominantregiondto>tsAirlineDominantRegionList=flightTimeConflictAndVolumeMapper.selectAllTsAirlineDominantRegion();
[0173] Step B73: Initialize the statistics list. This can be achieved by collecting statistics for flight segments without optimization schemes, using, but not limited to, the following code:
[0174] List <unflightsegment>unFlightSegments=new ArrayList<>().
[0175] S102. Based on the latest group version of the flight plan, perform five types of conflict detection concurrently and generate conflict detection results.
[0176] The five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight increase conflict detection, flight decrease conflict detection, and airline conflict detection.
[0177] Specifically, asynchronous methods annotated with @Async can be executed concurrently, returning a CompletableFuture:
[0178] CompletableFuture <List <timeconflictdto>>bureauTimeConflictFuture=
[0179] flightTimeConflictAsyncTaskService.bureauTimeConflict(parameters...);
[0180] CompletableFuture<List <timeconflictdto>>timeConflictDtoListFuture=
[0181] flightTimeConflictAsyncTaskService.flightTimeConflict(...parameters);
[0182] CompletableFuture<List <flightaddconflictdto>>flightAddConflictFuture=
[0183] flightTimeConflictAsyncTaskService.flightVolumeAdd(parameters...);
[0184] CompletableFuture<List <flightreduceconflictdto>>flightReduceConflictFuture = flightTimeConflictAsyncTaskService.flightVolumeReduce(parameters...);
[0185] CompletableFuture<List <airlineconflictdto>>airlineConflictFuture=flightTimeConflictAsyncTaskService.airlineConflict(parameter...);
[0186] Concurrent wait:
[0187] CompletableFuture <void>allOf=CompletableFuture.allOf(
[0188] bureauTimeConflictFuture,
[0189] timeConflictDtoListFuture,
[0190] flightAddConflictFuture,
[0191] flightReduceConflictFuture,
[0192] airlineConflictFuture );
[0194] allOf.get(); / / Blocks and waits for all tasks to complete.
[0195] In the practical application of this invention, the red-headed time slot conflict detection is used to detect time slot conflicts among flights within the same group in the same red-headed data. The red-headed time slot conflict detection includes:
[0196] The target group's data is obtained by filtering the data from the same official document. The target group's data is then grouped into flight segments to obtain the first flight segment grouping results. Each first flight segment is traversed, and the conflict detection results for the first flight segment are generated based on the sum of the average daily number of direct and skip flights within the first flight segment, the flight departure time, and the flight time.
[0197] Optionally, in another embodiment of the present invention, each first flight segment is traversed, and a conflict detection result for the first flight segment is generated based on the sum of the average daily number of all direct and bypass flights within the first flight segment, the flight departure time, and the flight time. This specifically includes the following steps (steps C1-C5):
[0198] Step C1: Iterate through each first segment. If there are multiple flights in the first segment, calculate the flight time of the flights within the first segment.
[0199] Step C2: Based on the segment information of the first segment, the flight time and flight information of the flights within the first segment, obtain the first moment conflict threshold.
[0200] The segment information should include at least the segment name, segment type, and average daily number of flights per segment, while the flight information should include at least the airline code and flight number. No restrictions are imposed here.
[0201] Step C3: Analyze and obtain the departure time of flights within the first flight segment.
[0202] Step C4: If the flights in the first segment are direct flights, then generate the conflict detection results for the first segment based on the departure time and the first time conflict threshold of the flights in the first segment.
[0203] It should be noted that different first-time conflict thresholds apply to different daily average flight frequencies. For example, if the daily average flight frequency is greater than 5, the corresponding first-time conflict threshold is 1 hour, meaning that for direct flights with more than 5 daily average flights, the departure time interval must be ≥1 hour. If the daily average flight frequency is 3 to 5, the corresponding first-time conflict threshold is 2 hours, meaning that for direct flights with less than 3 daily average flights, the departure time interval must be ≥2 hours. If the daily average flight frequency is less than 3, the corresponding first-time conflict threshold is 3 hours, meaning that for direct flights with less than 3 daily average flights, the departure time interval must be ≥3 hours; otherwise, it is considered a conflict.
[0204] The average daily number of flights is calculated by adding up the number of all direct and shuttle flights on the same route within a flight season and then dividing by the number of days in that flight season.
[0205] Step C5: If the flights in the first segment are skip flights and are long-distance routes, then generate the conflict detection results for the first segment based on the departure time of the flights in the first segment, the round-trip flight time of the skip long-distance routes, and the first time conflict threshold.
[0206] It should be noted that the rule for determining flight time conflicts for skip routes requires calculating the round-trip flight time for each long-distance skip route separately. If the round-trip flight time is greater than or equal to the round-trip threshold (e.g., 9 hours), the corresponding first time conflict threshold can be 0.5. That is, when the return flight time is greater than or equal to the round-trip threshold, the departure time interval between this skip route and other routes in the same segment must be greater than or equal to 0.5 hours. If the round-trip flight time of the skip route is less than 9 hours, there are different first time conflict thresholds for different daily average flights. For example, if the daily average flights are greater than 5, the corresponding first time conflict threshold is 0. For routes with an average daily number of flights greater than 5, the departure time interval between the route and other routes within the same segment must be ≥0.5 hours. For routes with an average daily number of flights less than 3 and a departure time less than 5, the first time slot conflict threshold is 1 hour. For routes with an average daily number of flights less than 3, the first time slot conflict threshold is 3 hours. Otherwise, it is considered a conflict.
[0207] It should be noted that the short-segment flight cancellations are handled using the conflict resolution method for direct flights described in step C4.
[0208] In the practical application of this invention, the following are first inputs: nimpBureauList (the same red-headed data as above), timeConflictOptimization (the main navigation system configuration), and tsAirlineDominantRegionList (the region-dominant configuration). Then, the following steps are used to perform red-headed time conflict detection (steps D1-D5):
[0209] Step D1: Filtering data within the group. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0210] List <nimpbureaudo>HUXBrureaList=
[0211] nimpBureauList.stream()
[0212] .filter(item->"HUX".equals(item.getAirlnGroup()))
[0213] .collect(Collectors.toList());
[0214] Step D2: Grouping by flight segment. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0215] Map <String,List <nimpbureaudo>>groupBySegmentBureauList=
[0216] HUXBrureaList.stream()
[0217] .collect(Collectors.groupingBy(NimpBureauDo::getSegment));
[0218] Step D3: Iterate through each flight segment and check for conflicts. For segments with a single flight, skip them (no potential conflict). For segments with multiple flights, conflict detection can be implemented using, but is not limited to, the following code:
[0219] for (NimpBureauDo currentDto : value) {
[0220] / / Calculate flight time (minutes)
[0221] int flightTime = DateUtils.calculateMinuteDifference(
[0222] currentDto.getFltAtime().substring(0, 4),
[0223] currentDto.getFltDtime().substring(0, 4) );
[0225] / / Get the time conflict threshold
[0226] double flightTimeInterval = getFlightTimeInterval(airline code, flight time, average daily flights per segment, segment type, flight number, segment, data source) );
[0228] / / Analyze takeoff time
[0229] LocalTime currentDepTime=DateUtils.parseTime(currentDto.getFltDtime().substring(0, 4));
[0230] / / Comparison with other flights
[0231] Optional <nimpbureaudo>conflict = value.stream()
[0232] .filter(item -> !item.getFltNbr().equals(currentDto.getFltNbr())) / / exclude itself
[0233] .filter(other -> {
[0234] / / Segment type matching (non-segment jumps are not compared with segment jumps)
[0235] if (!"13".equals(currentDto.getSegNum())) {
[0236] return !"13".equals(other.getSegNum());
[0237] }
[0238] return true;
[0239] })
[0240] .filter(other -> {
[0241] / / Class schedule overlap judgment
[0242] if (StringUtils.isEmpty(FltPlanUtil.sameFltWeek(
[0243] currentDto.getFltWeek(), other.getFltWeek()))) {
[0244] return false;
[0245] }
[0246] / / Time interval judgment
[0247] LocalTime otherDepTime=DateUtils.parseTime(other.getFltDtime().substring(0, 4));
[0248] return isTimeConflict(currentDepTime,otherDepTime,flightTimeInterval);
[0249] })
[0250] .findFirst();
[0251] if (conflict.isPresent()) {
[0252] currentDto.setConflictFlag(true);
[0253] conflictAirlnSet.add(currentDto.getAirlnCd());
[0254] segmentConflictFlag = true;
[0255] }
[0256] }
[0257] Time conflict determination method:
[0258] boolean isTimeConflict(LocalTime time1, LocalTime time2, doubleintervalThreshold) {
[0259] long minutesDiff = Math.abs(ChronoUnit.MINUTES.between(time1,time2));
[0260] return minutesDiff < intervalThreshold;
[0261] }
[0262] Step D4: Determine the main navigation unit. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0263] String mainAirln=determineLeadingAirline(conflictAirlnSet, segment, timeConflictOptimization, tsAirlineDominantRegionList);
[0264] Step D5: Sort by takeoff time. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0265] value.sort(Comparator.comparing(NimpBureauDo::getFltDtime));
[0266] The final output can be achieved using, but is not limited to, the following code:
[0267] List <timeconflictdto>- segment: segment code, - segmentCn: segment name in Chinese, - conflictAirln: list of conflicting airlines, - mainAirln: main navigation airline, - bureauDoList: list of official flights.
[0268] In the practical application of this invention, the group time slot conflict detection is used to detect time slot conflicts in the current group version plan and return all data (including non-conflicting flight segments). The group time slot conflict detection includes:
[0269] The data in the latest group version of the flight plan is grouped into segments to obtain the second segment grouping results. Each second segment is traversed, and the conflict detection results of the second segment are generated based on the departure time of the flights in the second segment and the same official document.
[0270] It should be noted that the difference between group time conflict detection and red-headed time conflict detection lies in the data source and returned content. The data source for group time conflict detection is the current group version, while the data source for red-headed time conflict detection is the same red-headed data. The returned content of group time conflict detection includes all data, while the data source of red-headed time conflict detection only includes conflicting data. In addition, group time conflict detection will perform additional processing, such as marking historical times and setting remarks.
[0271] Optionally, in another embodiment of the present invention, each second flight segment is traversed, and based on the aforementioned official document and the departure time of flights within the second flight segment, a conflict detection result for the second flight segment is generated, including the following steps (steps E1-E5):
[0272] Step E1: Traverse each second segment and obtain the second time conflict threshold based on the segment information, flight time and flight information of the flights within the second segment;
[0273] Step E2: Analyze and obtain the departure times of flights within the second flight segment;
[0274] Step E3: Based on the departure time, departure airport, and arrival airport of the flights within the second flight segment, determine the historical data corresponding to the flights in the same official document;
[0275] Step E4: Based on the historical data corresponding to the flights in the same official document, the second time conflict threshold, the takeoff time of flights in the second segment, and the round-trip flight time of bypassing long routes, generate the conflict detection results for the first segment.
[0276] In the practical application of this invention, group time conflict detection is performed through the following steps (steps F1-F5):
[0277] Step F1: Grouping by flight segment. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0278] Map <String, List <rpfltplanbasedto>> groupBySegmentRpList =
[0279] rpFltPlanBaseDTOList.stream()
[0280] .collect(Collectors.groupingBy(RpFltPlanBaseDTO::getSegment));
[0281] Step F2: Traverse each flight within the flight segment. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0282] for (RpFltPlanBaseDTO currentDto : value) {
[0283] / / Get the conflict time interval threshold
[0284] double flightTimeInterval = getFlightTimeInterval(parameter...);
[0285] / / Analyze takeoff time
[0286] LocalTime currentDepTime = DateUtils.parseTime(currentDto.getDepTime().substring(0, 4));
[0287] / / Compare with official data and mark historical moments
[0288] Optional <nimpbureaudo>any = nimpBureauList.stream()
[0289] .filter(item ->
[0290] currentDto.getDepPort().equals(item.getFltDpt()) &&
[0291] currentDto.getArrPort().equals(item.getFltArr()) &&
[0292] currentDto.getDepTime().equals(item.getFltDtime())
[0293] ).findAny();
[0294] if (any.isPresent()) {
[0295] currentDto.setHistoryFlag("Yes");
[0296] }
[0297] / / Conflict determination (logic is the same as the conflict at the red-head moment)
[0298] Optional <rpfltplanbasedto>conflict = value.stream()
[0299] .filter (excludes itself)
[0300] .filter(Segment Type Matching)
[0301] .filter (overlapping schedules)
[0302] .filter(time interval < threshold)
[0303] .findFirst();
[0304] if (conflict.isPresent()) {
[0305] currentDto.setConflictFlag(true);
[0306] conflict.get().setConflictFlag(true); / / Two-way flag
[0307] conflictAirlnSet.add(currentDto.getAirlnCd());
[0308] segmentConflictFlag = true;
[0309] }
[0310] }
[0311] Step F3: Set the segment conflict flag. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0312] timeConflictDto.setSegmentConflictFlag(segmentConflictFlag);
[0313] Step F4: Set remarks information. Add optimization suggestion remarks for conflicting flight segments according to the configuration. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0314] this.setConflictRemark(timeConflictDto, timeConflictOptimization);
[0315] Step F5: Data push. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0316] / / Push to report service for saving
[0317] nimpReportFeignClient.saveTimeConflictData(pushConflictDtoList);
[0318] / / Send message notification
[0319] sendTimeConflictMessage(pushConflictDtoList, latestVersion);
[0320] Output result:
[0321] List <timeconflictdto>- segment: segment code, - segmentConflictFlag: whether the segment is conflicting, - conflictAirln: conflicting airline, - mainAirln: main navigation airline, - list: group version flight details, - remark: optimization suggestion notes, - orderType: sorting type (used for prioritizing notes).
[0322] It should be noted that both the official flight schedule conflict detection and the group flight schedule conflict detection can be collectively referred to as flight schedule conflict. The data for flight schedule conflict statistics are all taken from the group version passenger data. Non-passenger data is excluded during the calculation, and statistics are performed on a segment-by-segment basis. The rules can be as follows:
[0323] The daily average number of flights with slot conflicts is calculated as follows: according to the group's version of the schedule, the sum of all direct and skip flights on the same route within a flight season is divided by the number of days in that flight season.
[0324] Rules for determining flight schedule conflicts on direct routes: The daily average number of all direct and shuttle flights within the same flight segment within the group's version is calculated. If the daily average number of flights is greater than 5, the departure time interval for direct flights must be ≥1 hour; if there are 3 flights < daily average ≤ 5 flights, the departure time interval must be ≥2 hours; if there are 3 flights or less, the departure time interval must be ≥3 hours. Otherwise, it is considered a conflict.
[0325] Rules for determining flight schedule conflicts for skip-flight routes: The round-trip flight time for each skip-flight long segment must be calculated separately. If the flight time is ≥9 hours, the departure time interval between this skip-flight route and other routes within the same segment must be ≥0.5 hours. If the round-trip flight time for the skip-flight route is less than 9 hours, and the corresponding segment has an average daily number of flights greater than 5, the departure time interval between this skip-flight route and other routes within the same segment must be ≥0.5 hours. For routes with 3 flights < average daily number of flights ≤ 5, the departure time interval must be ≥1 hour. For routes with 3 flights or less, the departure time interval must be ≥3 hours; otherwise, it is considered a conflict. Skip-flight short segments are treated as direct flights.
[0326] In the practical application of this invention, the system will calculate flight slot conflicts based on the group version flight schedule at a fixed time each day (e.g., 7:00 AM) and push the details of the conflicting flight segments to the to-do list of each main navigation company. The main navigation company fills in the optimization plan / responsible airline information for the conflict based on the actual situation. After completing and saving the information, they can select the conflicting flight segments they are in charge of and click the "Push" button to push the conflict information to the to-do alert list of the responsible airline. Upon receiving the conflict information in the system, the responsible airline user fills in the airline confirmation status / responsible airline feedback information based on the actual situation and communicates the handling plan with the main navigation company to form a closed-loop processing mechanism.
[0327] In the practical application of this invention, the flight volume increase conflict detection is used to detect flight segments with excessively increased flight volume compared to the previous "same as above" red header. It should be noted that the "same as above" red header must exist for this flight segment (newly opened flight segments are not detected). The flight volume increase conflict detection includes:
[0328] Based on the same official document and the latest group version of the flight plan, the flight segments are grouped to generate the third flight segment grouping result. Each group version of the flight segment is traversed. If the flight segment of the group version is in the same official document, the conflict detection result of the third flight segment is generated based on the flight segment data of the same official document and the flight segment data of the group version.
[0329] The grouping results for the third segment include segments with the same red header as above and segments from the group version.
[0330] Specifically, the flight segments of each group version are traversed. If a group version flight segment is in the same category as the Shangtong Hongtou flight segment, the average daily number of flights of the Shangtong Hongtou group is determined based on the flight segment data of the Shangtong Hongtou group, and the average daily number of flights of the group version flight segment is determined based on the flight segment data of the group version. Based on the average daily number of flights of the Shangtong Hongtou group, the average daily number of flights of the group version flight segment, the flight segment type, and the new threshold, the conflict detection result of the third flight segment is generated.
[0331] Among them, the types of flight segments include exclusive flight segments (i.e., a flight segment operated by only one airline within the same group) and shared flight segments.
[0332] It should be noted that the data for flight volume conflict statistics (new flight volume conflict detection) is taken from the passenger data of the group version / the same official document. Non-passenger data is excluded during the calculation. The calculation rule for the average daily number of flights with flight volume conflicts can be the sum of the number of flights on the same flight segment within a flight season / the number of days in that flight season.
[0333] Specifically, a single-fly segment (i.e., a segment operated by only one airline within the same group, as listed in the "Shanghai Tong Hongtou" data) is defined as a conflict if the average daily number of flights for that segment in the group version is greater than the average daily number of flights within the same group, and if there are airlines operating the segment in the group version that are not listed in the "Shanghai Tong Hongtou" data. If only one airline in the "Shanghai Tong Hongtou" data operates the segment, it does not need to be included in the statistics.
[0334] For shared flight segments, search for flight segments existing within the group's version plan and compare them with the overall flight volume of the same season in the same industry. That is, it is necessary to compare with the data of the entire civil aviation industry in the same industry. For flight segments with 3 flights / day (inclusive) or less in the data of the entire civil aviation industry in the same industry, if the group version data adds 1 or more flights / day (inclusive) compared with the average daily number of flights in the group in the same industry, it is defined as a flight volume conflict; for flight segments with 4-6 flights / day (inclusive) or less, if the number of flights / day (inclusive) or more is added, it is defined as a flight volume conflict; for flight segments with more than 6 flights / day (excluding 6 flights / day), if the number of flights / day (inclusive) or more is added, it is defined as a flight volume conflict.
[0335] In the practical application of this invention, the following steps are used to detect new flight volume conflicts (steps G1-G7):
[0336] Step G1: Segment grouping. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0337] Map <String, List <nimpbureaudo>> groupBySegmentBureauList =
[0338] nimpBureauList.stream().collect(Collectors.groupingBy(NimpBureauDo::getSegment));
[0339] Map<String,List <rpfltplanbasedto>>groupBySegmentRpList=rpFltPlanBaseDTOList.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getSegment));
[0340] Step G2: Traverse each flight segment of the group version. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0341] for (String key : groupBySegmentRpList.keySet()) {
[0342] / / Check if the red-headed ship has this flight segment
[0343] List <nimpbureaudo>bureauList=groupBySegmentBureauList.get(key);
[0344] if (bureauList == null || bureauList.isEmpty()) {
[0345] continue; / / New segment started, skipping
[0346] }
[0347] / / Get Red Header Data
[0348] double dayOfFlightVolumeForBureau = bureauList.get(0).getDayOfFlightVolume(); / / Daily average of all airlines
[0349] List <nimpbureaudo>groupList = bureauList.stream()
[0350] .filter(item -> "HUX".equals(item.getAirlnGroup()))
[0351] .collect(Collectors.toList());
[0352] double dayOfFlightVolumeForBureauGroup = 0;
[0353] if (!groupList.isEmpty()) {
[0354] dayOfFlightVolumeForBureauGroup = groupList.get(0).getDayOfFlightVolumeForGroup(); / / Daily average within the Red Head Group
[0355] }
[0356] / / Group version daily average
[0357] double dayOfSegmentFlightVolumeForRp = value.get(0).getDayOfFlightVolume();
[0358] / / Determining whether to fly solo or in a group
[0359] Set <string>singleAirline = bureauList.stream()
[0360] .map(NimpBureauDo::getAirlnCd)
[0361] .filter(airlnGroupList::contains)
[0362] .collect(Collectors.toSet());
[0363] }
[0364] Step G3: Determine the conflict in the scenario of flying alone, where flying alone means that only one airline within the same group is operating the flight.
[0365] Conflict conditions:
[0366] 1. The average daily number of flights on the group version of the route is greater than the average daily number of flights on the internal routes of the red-headed group;
[0367] 2. The group version is no longer operated by the same exclusive airline OR, although it is the same airline, the number of flights has increased;
[0368] The decision logic can be implemented using, but is not limited to, the following code: if (singleAirline.size() == 1) {
[0369] if (airlineSet.size() == 1 && Group version airline == Red-headed airline) {
[0370] Skip; / / Still the same exclusive airline
[0371] }
[0372] if (dayOfSegmentFlightVolumeForRp >dayOfFlightVolumeForBureauGroup) {
[0373] Marker conflict;
[0374] }
[0375] }
[0376] Step G4: Conflict determination in co-flying scenarios, where co-flying is defined as having multiple airlines with the same red header (≥2 within the group OR including airlines outside the group);
[0377] Added threshold calculation:
[0378] if (the average daily number of flights of the entire national airline <= 3) {
[0379] New threshold = 1 class / day
[0380] } else if (the average daily number of flights of the entire national airline > 4 && <= 6) {
[0381] New threshold = 2 classes / day
[0382] } else {
[0383] New addition threshold = 3 classes / day
[0384] }
[0385] Conflict conditions: Average daily number of flights per segment in the group version - Average daily number of flights per segment within the red-headed group >= the new threshold;
[0386] Step G5: New airline identification. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0387] for(Map.Entry <String,List <rpfltplanbasedto>>airlnEntry:groupByAirlnRpList.entrySet()){
[0388] Map <String, List <rpfltplanbasedto>> groupByFltNbrRpList =airlnEntry.getValue().stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getFltNbr));
[0389] for (Map.Entry<String, List <rpfltplanbasedto>> fltNbrEntry :groupByFltNbrRpList.entrySet()) {
[0390] / / Group version of flight number daily average number of flights
[0391] double planDayOfFlightVolumeForFltNbr = fltNbrEntry.getValue().get(0).getDayOfFlightVolumeForFltNbr();
[0392] / / Red-headed flight number daily average number of flights
[0393] double dayOfFlightVolumeForFltNbr =
[0394] groupList.stream()
[0395] .filter(item -> item.getFltNbr().equals(fltNbrEntry.getKey()))
[0396] .findFirst()
[0397] .map(NimpBureauDo::getDayOfFlightVolumeForFltNbr)
[0398] .orElse(0.0);
[0399] / / Changes in flight number and schedule
[0400] double countChange = planDayOfFlightVolumeForFltNbr -dayOfFlightVolumeForFltNbr;
[0401] if (dayOfFlightVolumeForFltNbr == 0 || countChange > 0) {
[0402] / / The red header does not exist for this flight number OR the flight number has been increased.
[0403] dto.setFlightVolumeAddFlag(true);
[0404] addAirlnSet.add(dto.getAirlnCd());
[0405] }
[0406] }
[0407] }
[0408] Step G6: Calculate the flight frequency change. Flight segment frequency change = Group version daily average of flight segments - Red-headed group daily average of flight segments; Airline frequency change = Group version daily average of airlines - Red-headed airlines daily average (if not found, use the group version value); Flight number frequency change = Group version daily average of flight numbers - Red-headed flight numbers daily average (if not found, use the group version value).
[0409] Format: +#0.00; -#0.00 (Keep 2 decimal places, including plus or minus sign)
[0410] Step G7: Data push. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0411] / / Push all data to the reporting service
[0412] List <unflightsegment>unFlightSegmentList =
[0413] nimpReportFeignClient.saveFlightAddConflictData(resultList);
[0414] unFlightSegments.addAll(unFlightSegmentList);
[0415] / / Send messages only for conflicting data
[0416] List <flightaddconflictdto>resultListConflict =
[0417] resultList.stream()
[0418] .filter(FlightAddConflictDto::getAddConflictFlag)
[0419] .collect(Collectors.toList());
[0420] this.flightAddConflictSendMessage(resultListConflict, latestVersion);
[0421] Output result:
[0422] List <flightaddconflictdto>- segment: segment code, - addConflictFlag: whether there is a conflict, - hisSegmentFlightVolumeChange: historical average daily flight frequency (formatted), - segmentFlightVolumeChange: segment flight frequency change (formatted), - addAirln: list of newly added airlines, - conflictAirln: list of all operating airlines, - mainAirln: main navigation airline, - classify: classification (1-conflict), - sysOptimize: system optimization flag (2-to be optimized), - list: airline-level detailed list. The airline-level detailed list includes, - airlnFlightVolumeChange: airline flight frequency change, - list: flight number level details, - dayOfFlightVolumeChange: flight number flight frequency change, - flightVolumeAddFlag: whether it is newly added.
[0423] In the practical application of this invention, the flight volume reduction conflict detection is used to detect flight segments with excessively reduced flight volume compared to the same red-headed version. It should be noted that the group version has both the same flight segment and the same red-headed version, which are co-operated (operated by an airline outside the group). The flight volume reduction conflict detection includes:
[0424] Based on the same official document and the latest group version of the flight plan, the flight segments are grouped to generate the fourth flight segment grouping result. The flight segments of each group version are traversed, and the conflict detection result of the fourth flight segment is generated according to the average daily number of flights within the same group and the average daily number of flights of the group version flight segments.
[0425] The fourth segment grouping results include segments with the same red header as above and segments from the group version.
[0426] Specifically, the flight segments of each group version are traversed, and the average daily number of flights of the Shanghai Tonghong Group is determined based on the data of the Shanghai Tonghong Group's red-headed flight segments, and the average daily number of flights of the group version flight segments is determined based on the data of the group version flight segments. Based on the average daily number of flights of the Shanghai Tonghong Group, the average daily number of flights of the group version flight segments, the flight segment type, and the reduction threshold, the conflict detection results for generating the third flight segment are determined.
[0427] It should be noted that the data for the reduction in flight volume is taken from the passenger data in the group version / the same official document. Non-passenger data is excluded during the calculation. The flight segments that exist in the group version plan are retrieved and compared with the overall flight volume of the industry in the same flight season. Only the reduced flight segments need to be displayed.
[0428] The calculation rule for the reduction in daily flight volume is as follows: according to the statistics group's version of the plan or the same official document, the sum of the number of flights on the same flight segment within a flight season / the number of days in that flight season.
[0429] Specifically, the rules for judging a reduction in flight volume are as follows: for flight segments that share flights with airlines outside the group and whose daily average number of flights is 3 or less as calculated by the national civil aviation data with the same red header, a reduction of 1 or more flights per day is defined as a reduced flight segment; for flight segments with a daily average of 3 or more flights, a reduction of 2 or more flights per day is defined as a reduced flight segment.
[0430] In the practical application of this invention, group time conflict detection is performed through the following steps (steps H1-H6):
[0431] Step H1: Segment grouping. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0432] Map <String, List <nimpbureaudo>> groupBySegmentBureauList =
[0433] nimpBureauList.stream().collect(Collectors.groupingBy(NimpBureauDo::getSegment));
[0434] Map<String, List <rpfltplanbasedto>> groupBySegmentRpList =
[0435] rpFltPlanBaseDTOList.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getSegment));
[0436] Step H2: Traverse each flight segment of the group version. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0437] for (String key : groupBySegmentRpList.keySet()) {
[0438] List <rpfltplanbasedto>value = groupBySegmentRpList.get(key);
[0439] / / Daily number of flights within the Red Head Group's domestic routes
[0440] double dayOfFlightVolumeForBureauGroup = 0;
[0441] List <nimpbureaudo>finalGroupList = Collections.emptyList();
[0442] if (CollectionUtils.isNotEmpty(groupBySegmentBureauList.get(key))) {
[0443] finalGroupList = groupBySegmentBureauList.get(key).stream()
[0444] .filter(item -> "HUX".equals(item.getAirlnGroup()))
[0445] .collect(Collectors.toList());
[0446] }
[0447] if (!finalGroupList.isEmpty()) {
[0448] dayOfFlightVolumeForBureauGroup = finalGroupList.get(0).getDayOfFlightVolumeForGroup();
[0449] }
[0450] / / Group version of daily flight frequency
[0451] double dayOfSegmentFlightVolumeForRp = value.get(0).getDayOfFlightVolume();
[0452] / / Determine if there is a shared flight (if the red-headed sign indicates an airline outside the group)
[0453] List <nimpbureaudo>nimpBureauDos = nimpBureauList.stream()
[0454] .filter(item -> key.equals(item.getSegment()) && !airlnGroupList.contains(item.getAirlnCd()))
[0455] .collect(Collectors.toList());
[0456] if (nimpBureauDos.isEmpty()) {
[0457] continue; / / Skip if not flying together
[0458] }
[0459] }
[0460] Step H3: Calculate the reduction threshold. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0461] Reduce threshold calculation: Red-headed All-Civil Aviation Daily Average Flights per Segment = groupBySegmentBureauList.get(key).get(0).getDayOfFlightVolume()
[0462] if (the average daily number of flights of the entire national airline <= 3) {
[0463] Reduction threshold = 1 class / day
[0464] } else {
[0465] Reduction threshold = 2 shifts / day
[0466] }
[0467] Conflict conditions:
[0468] The average daily number of flights within the Red Head Group's internal routes minus the average daily number of flights within the Group's version routes >= the reduction threshold;
[0469] Step H4: Identify and reduce airlines. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0470] / / Grouped by airline
[0471] Map <String, List <rpfltplanbasedto>> groupByAirlineRpList =value.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getAirlnCd));
[0472] / / Airlines currently existing in the group version
[0473] Set <string>currentPlanAirline = groupByAirlineRpList.keySet();
[0474] / / Red Head Group Internal Aviation Company
[0475] Set <string>bureauAirline = finalGroupList.stream()
[0476] .map(NimpBureauDo::getAirlnCd)
[0477] .collect(Collectors.toSet());
[0478] / / Airlines reducing flight frequency
[0479] groupByAirlineRpList.forEach((subkey, subvalue) -> {
[0480] List <nimpbureaudo>bureauDoList = finalGroupList.stream()
[0481] .filter(item -> item.getAirlnCd().equals(subkey))
[0482] .collect(Collectors.toList());
[0483] if (!bureauDoList.isEmpty()) {
[0484] double dayOfFlightVolumeForAirline = bureauDoList.get(0).getDayOfFlightVolumeForAirline();
[0485] / / Average daily flights of group airlines < Average daily flights of red-headed airlines
[0486] if (subvalue.get(0).getDayOfFlightVolumeForAirline() <dayOfFlightVolumeForAirline) {
[0487] reduceAirlineSet.add(subkey);
[0488] }
[0489] }
[0490] });
[0491] Step H5: Calculate the reduction amount. Reduction amount = average daily number of flights within the group's internal flight segments - average daily number of flights within the group's version flight segments; retain two decimal places and round off.
[0492] Step H6: Data transmission. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0493] this.flightReduceConflictSendMessage(flightReduceConflictList,latestVersion);
[0494] Output: List <flightreduceconflictdto>- segment: segment code, - segmentCn: segment name in Chinese, - hisDayOfFlightVolume: historical average daily flights (red-headed national airline), - planDayOfFlightVolume: planned average daily flights, - reduceCount: reduction amount, - reduceAirln: list of airlines to reduce, - mainAirln: main navigation airline.
[0495] In the practical application of this invention, airline conflict detection is used to detect whether the number of airlines operating on a flight segment exceeds the limit. Airline conflict detection includes:
[0496] Based on the latest group version of the flight plan, the flight segments are grouped to generate the fifth flight segment grouping result. Each fifth flight segment is traversed, and the conflict detection result of the fifth flight segment is generated according to the average daily number of flights, the set of operating airlines, and the upper limit of the number of airlines.
[0497] In the practical application of this invention, airline conflict detection is performed through the following steps (steps I1-I5):
[0498] Step I1: Grouping by flight segment. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0499] Map <String, List <rpfltplanbasedto>> groupBySegmentRpList =
[0500] rpFltPlanBaseDTOList.stream().collect(Collectors.groupingBy(RpFltPlanBaseDTO::getSegment));
[0501] Step I2: Traverse each flight segment. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0502] for (String key : groupBySegmentRpList.keySet()) {
[0503] List <rpfltplanbasedto>value = groupBySegmentRpList.get(key);
[0504] / / Average daily number of flights per segment
[0505] double dayOfFlightVolume = value.get(0).getDayOfFlightVolume();
[0506] / / Collection of airlines operating the flights
[0507] Set <string>airlineSet = value.stream()
[0508] .map(RpFltPlanBaseDTO::getAirlnCd)
[0509] .collect(Collectors.toSet());
[0510] }
[0511] Step I3: Calculate the upper limit of the number of airlines. If the average daily number of flights on a flight segment is >= 5, then the upper limit of the number of airlines is 3; otherwise, the upper limit of the number of airlines is 2.
[0512] Conflict condition: Actual number of operating airlines > Maximum number of airlines
[0513] Step I4: Identify the conflicting airlines. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0514] if (airlineSet.size() > maximum number of airlines) {
[0515] / / Determine the main navigation company
[0516] String mainAirline = this.determineLeadingAirline(
[0517] airlineSet,
[0518] key,
[0519] timeConflictOptimization,
[0520] tsAirlineDominantRegionList );
[0522] / / Conflicting airlines = All airlines - Main navigation company
[0523] airlineSet.remove(mainAirline);
[0524] String conflictAirln = airlineSet.stream()
[0525] .distinct()
[0526] .collect(Collectors.joining(" / "));
[0527] }
[0528] Step I5: Data transmission. In the practical application of this invention, this can be achieved through, but is not limited to, the following code:
[0529] this.airlineConflictSendMessage(airlineConflictDtos, latestVersion);
[0530] Output: List <airlineconflictdto>:- segment: segment code, - segmentCn: segment name in Chinese, - planDayOfFlightVolume: planned daily average number of flights, - mainAirln: main air traffic controller, - conflicttAirln: list of conflicting airlines.
[0531] The data for airline conflict statistics are all taken from the group's passenger data. Non-passenger data is excluded during the calculation. Statistics are based on flight segments, and only flight segments with airline conflicts need to be displayed, according to the following rules:
[0532] Airline conflict daily average flight count calculation rules: Statistical group version plan, sum of the number of flights on the same segment within a flight season / number of days in that flight season.
[0533] Airline conflict assessment rules: For routes with an average of 5 or more flights per day, the number of operating airlines must be controlled to 3 or fewer; for routes with an average of less than 5 flights per day, the number of operating airlines must be controlled to 2 or fewer. Otherwise, it is considered an airline conflict.
[0534] In practical application of this invention, the system will statistically analyze airline conflicts based on the group version of the flight schedule at a fixed time each day (e.g., 7:00 AM) and push the conflict details to the pending tasks of each associated airline. After receiving the warning information, the associated airlines will communicate and discuss the issues and optimize flight scheduling according to the actual situation.
[0535] In practical applications of this invention, the following code can be used to wait for all asynchronous tasks to complete:
[0536] CompletableFuture <void>allOf = CompletableFuture.allOf(
[0537] bureauTimeConflictFuture,
[0538] timeConflictDtoListFuture,
[0539] flightAddConflictFuture,
[0540] flightReduceConflictFuture,
[0541] airlineConflictFuture );
[0543] allOf.get();
[0544] In the practical application of this invention, the results of each task can be obtained using the following code:
[0545] List <timeconflictdto>bureauTimeConflictDtoList=bureauTimeConflictFuture.get();
[0546] List <timeconflictdto>planTimeConflictDtoList=timeConflictDtoListFuture.get();
[0547] List <flightaddconflictdto>flightAddConflictDtosList=flightAddConflictFuture.get();
[0548] List <flightreduceconflictdto>flightReduceConflictDtosList=flightReduceConflictFuture.get();
[0549] List <airlineconflictdto>airlineConflictDtosList=airlineConflictFuture.get();
[0550] Optionally, in another embodiment of the present invention, after concurrently performing five types of conflict detection based on the latest group version of the flight plan and generating conflict detection results, the following steps (steps J1 to J3) are further included:
[0551] Step J1: Generate statistical indicators based on the detection results of each type of conflict detection in the conflict detection results;
[0552] In the practical application of this invention, step J1 can be implemented through the following steps (steps K1 to K4):
[0553] Step K1: Count the number of optimized conflict segments. Definition: Conflicting flight segments in the same group data as above, which no longer conflict in the group version. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0554] / / Initial number of optimized entries = 0
[0555] Map <String, List <timeconflictdto>> bureauTimeConflictGroup =
[0556] bureauTimeConflictDtoList.stream().collect(Collectors.groupingBy(TimeConflictDto::getSegment));
[0557] for (String segment : bureauTimeConflictGroup.keySet()) {
[0558] / / Find the group version of this flight segment
[0559] Optional <timeconflictdto>any = planTimeConflictDtoList.stream()
[0560] .filter(item -> segment.equals(item.getSegment()) && !item.isSegmentConflictFlag())
[0561] .findAny();
[0562] if (any.isPresent()) {
[0563] Optimized count increased;
[0564] }
[0565] }
[0566] Step K2: Count the number of newly added conflict segments. Definition: The number of conflict segments that do not exist in the group version plan but are not covered by the red header above. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0567] / / Collection of Red-Headed Conflict Flight Segments
[0568] Set <string>bureauSegments = bureauTimeConflictDtoList.stream()
[0569] .map(TimeConflictDto::getSegment)
[0570] .filter(Objects::nonNull)
[0571] .collect(Collectors.toSet());
[0572] / / The number of passengers not rendezvous at the red-head assembly point during conflict segments of the statistical group
[0573] Number of new conflict entries = (int) planTimeConflictDtoList.stream()
[0574] .filter(TimeConflictDto::isSegmentConflictFlag)
[0575] .map(TimeConflictDto::getSegment)
[0576] .filter(Objects::nonNull)
[0577] .filter(segment -> !bureauSegments.contains(segment))
[0578] .count();
[0579] Step K3: Count the number of segments to be optimized. The number of segments to be optimized = the total number of flight segments with time conflicts in the group version. In the actual application of this invention, this can be achieved through, but is not limited to, the following code:
[0580] Number of items to be optimized = planTimeConflictDtoList.stream()
[0581] .filter(TimeConflictDto::isSegmentConflictFlag)
[0582] .count();
[0583] Step K4: Number of flight segments with increased / decreased flight volume / airline conflict; Number of segments with excessive flight volume increase = flightAddConflictDtosList.size(); Number of segments with excessive flight volume decrease = flightReduceConflictDtosList.size(); Number of segments with airline conflict = airlineConflictDtosList.size().
[0584] Step J2: Construct email data objects based on statistical indicators.
[0585] Specifically, in the practical application of this invention, it can be implemented using, but is not limited to, the following code:
[0586] ConflictCountDto conflictCountDto = new ConflictCountDto();
[0587] conflictCountDto.setFltPlanVersion(latestVersion);
[0588] conflictCountDto.setOptimizedConflictCount("Number of Optimized Conflicts");
[0589] conflictCountDto.setNewConflictCount("Number of new conflicts");
[0590] conflictCountDto.setPendingOptimizationCount(number of items to be optimized);
[0591] conflictCountDto.setFlightAddCount(FlightAddCount);
[0592] conflictCountDto.setFlightReduceCount(number of flights reduced);
[0593] conflictCountDto.setAirlineConflictCount(Airline Conflict Count);
[0594] conflictCountDto.setTimeConflictUnResolvedCount(time conflict count);
[0595] conflictCountDto.setFlightVolumeConflictUnResolvedCount("Number of flight conflicts");
[0596] conflictCountDto.setMailTo(mailTo);
[0597] conflictCountDto.setMailCopy(mailCopy);
[0598] Step J3: Use the email data object to call the email service, and use the email service interface to send the data in the email data object.
[0599] Specifically, in the practical application of this invention, it can be implemented using, but is not limited to, the following code:
[0600] sendEmailService.versionSendEmail(
[0601] conflictCountDto,
[0602] sendPlanTimeConflictDtoList,
[0603] flightAddConflictDtosList,
[0604] flightReduceConflictDtosList,
[0605] airlineConflictDtosList,
[0606] conflictStats.getType1Conflicts(),
[0607] conflictStats.getType2Conflicts() );
[0609] Email content structure:
[0610] 1. Email body: HTML table displaying statistical summary data
[0611] 2. The Excel attachment includes details of time slot conflicts (records with notes), details of new flights, details of reduced flights, and details of airline conflicts.
[0612] Optionally, in another embodiment of the present invention, before performing step J3, email data filtering can be performed first, which can be achieved through, but is not limited to, the following code:
[0613] / / Only records with notes are sent in case of time conflict.
[0614] List <timeconflictdto>sendPlanTimeConflictDtoList =planTimeConflictDtoList.stream()
[0615] .filter(item -> !StringUtils.isEmpty(item.getRemark()))
[0616] .collect(Collectors.toList());
[0617] Optionally, in another embodiment of the present invention, one implementation of the flight schedule conflict detection method further includes:
[0618] The primary navigation operator is determined based on the fleet of operating airlines, the regions of the departure airport and the arrival airport, and the configuration of the regional primary navigation operator.
[0619] Among them, the main navigation company is the airline that is given priority during flight segment optimization. In the actual application of this invention, the airlines can be judged in order of priority, and no limitation is made here.
[0620] Specifically, priority 1 is the route-level configuration, priority 2 is the region-level configuration, and priority 3 defaults to the first airline.
[0621] It should be noted that the query condition for priority 1 is an exact match of flight segments, which can be implemented using the following code:
[0622] If (the flight segment configuration exists in timeConflictOptimization) {
[0623] Main Navigation Unit = Configured Main Navigation Unit
[0624] if (the main navigation department is in the group of operating airlines) {
[0625] return to the main navigation department;
[0626] } else {
[0627] Downgraded to priority 2;
[0628] }
[0629] };
[0630] Priority 2 can be implemented using the following code:
[0631] / / Analyze flight segments
[0632] String[] segments = segment.split("-");
[0633] String depPort = segments[0]; / / Departure airport
[0634] String arrPort = segments[1]; / / Arrival at the airport
[0635] / / Query the region of the departure airport
[0636] String depRegion = getRegionByAirport(depPort);
[0637] / / Find the region of the arrival airport
[0638] String arrRegion = getRegionByAirport(arrPort);
[0639] / / Query the configuration of the main navigation system in the query area
[0640] Optional <tsairlinedominantregiondto>config=tsAirlineDominantRegionList.stream()
[0641] .filter(item ->
[0642] (item.getDepRegion().equals(depRegion) && item.getArrRegion().equals(arrRegion)) ||
[0643] (item.getDepRegion().equals(arrRegion) && item.getArrRegion().equals(depRegion)) )
[0645] .findFirst();
[0646] if (config.isPresent()) {
[0647] Main Navigation Server = config.get().getDominantAirline();
[0648] if (the main navigation department is in the group of operating airlines) {
[0649] return to the main navigation department;
[0650] } else {
[0651] Downgraded to priority 3;
[0652] }
[0653] };
[0654] Priority 3 can be achieved using the following code:
[0655] return the collection of operating airlines.iterator().next().
[0656] As can be seen from the above scheme, the present invention provides a method for conflict detection of flight schedules. After obtaining the latest group version of the flight schedule, it concurrently performs five types of conflict detection based on the latest group version of the flight schedule: red-headed time slot conflict detection, group time slot conflict detection, flight increase conflict detection, flight decrease conflict detection, and airline conflict detection, generating conflict detection results. This method quickly and effectively detects conflicts and conflict types in flight schedules.
[0657] Another embodiment of the present invention provides a conflict detection device for flight schedules, such as... Figure 2 As shown, it specifically includes:
[0658] Unit 100 is used to obtain the latest group version of the flight plan.
[0659] The conflict detection unit 200 is used to concurrently perform five types of conflict detection based on the latest group version of the flight plan and generate conflict detection results.
[0660] The five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight increase conflict detection, flight decrease conflict detection, and airline conflict detection.
[0661] When the conflict detection unit 200 performs conflict detection at the red-headed time, it includes filtering the target group data from the same red-headed document, grouping the target group data into flight segments to obtain the first flight segment grouping results, traversing each first flight segment, and generating the conflict detection results of the first flight segment based on the sum of the average daily number of all direct and skip flights within the first flight segment, the flight departure time and flight time.
[0662] When the conflict detection unit 200 performs group time conflict detection, it includes: grouping the data in the latest group version of the flight plan into segments to obtain the second segment grouping results; traversing each second segment; and generating the conflict detection result of the second segment based on the departure time of the flights in the second segment and the same official document.
[0663] When the conflict detection unit 200 performs conflict detection for newly added flights, it includes: grouping flight segments based on the same red-headed document and the latest group version of the flight plan, generating the third flight segment grouping result, traversing the flight segments of each group version, and if the flight segment of the group version is in the same red-headed flight segment, then generating the conflict detection result of the third flight segment based on the flight segment data of the same red-headed document and the flight segment data of the group version.
[0664] The grouping results for the third segment include segments with the same red header as above and segments from the group version.
[0665] When the conflict detection unit 200 performs conflict detection for reduced flight volume, it includes: grouping flight segments based on the same official document and the latest group version of the flight plan, generating the fourth flight segment grouping result, traversing the flight segments of each group version, and generating the conflict detection result of the fourth flight segment based on the average daily number of flights within the same group and the average daily number of flights in the group version.
[0666] The fourth segment grouping results include segments with the same red header as above and segments from the group version.
[0667] When the conflict detection unit 200 performs airline conflict detection, it includes: grouping flight segments based on the latest group version of the flight plan, generating the fifth flight segment grouping result, traversing each fifth flight segment, and generating the conflict detection result of the fifth flight segment based on the average daily number of flights in the fifth flight segment, the set of operating airlines, and the upper limit of the number of airlines.
[0668] For details on the specific operation of the units disclosed in the above embodiments of the present invention, please refer to the corresponding method embodiments, such as... Figure 1 As shown, it will not be elaborated further here.
[0669] As can be seen from the above scheme, the present invention provides a flight schedule conflict detection device. After the acquisition unit 100 acquires the latest group version of the flight schedule, the conflict detection unit 200 concurrently performs five types of conflict detection based on the latest group version of the flight schedule: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection, generating conflict detection results. This allows for rapid and effective detection of conflicts and conflict types in flight schedules.
[0670] The functions described above in this document can be performed at least in part by one or more hardware logic components. For example, exemplary types of hardware logic components that can be used, without limitation, include: field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), system-on-a-chip (SoCs), complex programmable logic devices (CPLDs), and so on.
[0671] Another embodiment of the present invention provides an electronic device, comprising:
[0672] One or more processors.
[0673] A storage device on which one or more programs are stored.
[0674] When the one or more programs are executed by the one or more processors, the one or more processors implement the flight schedule conflict detection method as described in the above embodiments.
[0675] Another embodiment of the present invention provides a computer storage medium having a computer program stored thereon, wherein the computer program, when executed by a processor, implements the flight schedule conflict detection method as described in the above embodiments.
[0676] In the context of this invention, a machine-readable medium can be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, apparatus, or device. A machine-readable medium can be a machine-readable signal medium or a machine-readable storage medium. Machine-readable media can include, but are not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any suitable combination of the foregoing. More specific examples of machine-readable storage media include electrical connections based on one or more wires, portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fibers, portable compact disk read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination of the foregoing.
[0677] It should be noted that the computer-readable medium described above in this invention can be a computer-readable signal medium, a computer-readable storage medium, or any combination thereof. A computer-readable storage medium can be, for example, but not limited to, an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination thereof. More specific examples of a computer-readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer disk, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any suitable combination thereof. In this invention, a computer-readable storage medium can be any tangible medium containing or storing a program that can be used by or in conjunction with an instruction execution system, apparatus, or device. In this invention, a computer-readable signal medium can include a data signal propagated in baseband or as part of a carrier wave, carrying computer-readable program code. Such propagated data signals can take various forms, including but not limited to electromagnetic signals, optical signals, or any suitable combination thereof. A computer-readable signal medium can be any computer-readable medium other than a computer-readable storage medium, which can send, propagate, or transmit a program for use by or in connection with an instruction execution system, apparatus, or device. The program code contained on the computer-readable medium can be transmitted using any suitable medium, including but not limited to: wires, optical fibers, RF (radio frequency), etc., or any suitable combination thereof.
[0678] The aforementioned computer-readable medium may be included in the aforementioned electronic device; or it may exist independently and not assembled into the electronic device.
[0679] Another embodiment of the present invention provides a computer program product, which, when executed, is used to perform the above-described conflict detection method for flight plans.
[0680] In particular, according to embodiments of the present invention, the processes described above with reference to the flowcharts can be implemented as computer software programs. For example, embodiments of the present invention include a computer program product comprising a computer program carried on a non-transitory computer-readable medium, the computer program containing program code for performing the methods shown in the flowcharts. In such embodiments, the computer program can be downloaded and installed from a network via a communication device, or installed from a storage device, or installed from a ROM. When the computer program is executed by a processing device, it performs the functions defined in the methods of the embodiments of the present invention.
[0681] Although the subject matter has been described using language specific to structural features and / or methodological logic, it should be understood that the subject matter defined in this invention is not necessarily limited to the specific features or actions described above. Rather, the specific features and actions described above are merely exemplary forms for implementing the invention.
[0682] While several specific implementation details are included in the foregoing discussion, these should not be construed as limiting the scope of the invention. Certain features described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments.
[0683] The above description is merely a preferred embodiment of the present invention and an explanation of the technical principles employed. Those skilled in the art should understand that the scope of the invention is not limited to the specific combination of the above-described technical features, but also includes other technical solutions formed by arbitrary combinations of the above-described technical features or their equivalents without departing from the inventive concept. For example, technical solutions formed by substituting the above-described features with technical features of the present invention (but not limited to) that have similar functions.< / tsairlinedominantregiondto> < / timeconflictdto> < / string> < / timeconflictdto> < / timeconflictdto> < / airlineconflictdto> < / flightreduceconflictdto> < / flightaddconflictdto> < / timeconflictdto> < / timeconflictdto> < / void> < / airlineconflictdto> < / string> < / rpfltplanbasedto> < / rpfltplanbasedto> < / flightreduceconflictdto> < / nimpbureaudo> < / string> < / string> < / rpfltplanbasedto> < / nimpbureaudo> < / nimpbureaudo> < / rpfltplanbasedto> < / rpfltplanbasedto> < / nimpbureaudo> < / flightaddconflictdto> < / flightaddconflictdto> < / unflightsegment> < / rpfltplanbasedto> < / rpfltplanbasedto> < / rpfltplanbasedto> < / string> < / nimpbureaudo> < / nimpbureaudo> < / rpfltplanbasedto> < / nimpbureaudo> < / timeconflictdto> < / rpfltplanbasedto> < / nimpbureaudo> < / rpfltplanbasedto> < / timeconflictdto> < / nimpbureaudo> < / nimpbureaudo> < / nimpbureaudo> < / void> < / airlineconflictdto> < / flightreduceconflictdto> < / flightaddconflictdto> < / timeconflictdto> < / timeconflictdto> < / unflightsegment> < / tsairlinedominantregiondto> < / timeconflictdto> < / nimpbureaudo> < / nimpbureaudo> < / rpfltplanbasedto> < / rpfltplanbasedto> < / rpfltplanbasedto> < / rpfltplanbasedto> < / string>
Claims
1. A method for conflict detection in flight schedules, characterized in that, include: Get the latest group version of the flight schedule; Based on the latest group version of the flight schedule, five types of conflict detection are executed concurrently to generate conflict detection results; the five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection. The red-headed time conflict detection includes: filtering the target group's data from the same red-headed document, grouping the target group's data into flight segments to obtain the first flight segment grouping result, traversing each first flight segment, and generating the conflict detection result of the first flight segment based on the sum of the average daily number of all direct and skip flights within the first flight segment, the flight's departure time, and flight time. The group time slot conflict detection includes: grouping the data in the latest group version of the flight plan into segments to obtain the second segment grouping results; traversing each second segment; and generating the conflict detection result of the second segment based on the departure time of the flights in the second segment and the same official document. The newly added flight conflict detection includes: grouping flight segments based on the official document and the latest group version of the flight plan, generating a third flight segment grouping result, traversing each group version of the flight segment, and if the group version of the flight segment is in the official document's flight segment, then generating a third flight segment conflict detection result based on the official document's flight segment data and the group version's flight segment data; wherein, the third flight segment grouping result includes both the official document's flight segment and the group version's flight segment; The flight volume reduction conflict detection includes: grouping flight segments based on the same official document and the latest group version of the flight plan, generating a fourth flight segment grouping result, traversing each group version of the flight segment, and generating a fourth flight segment conflict detection result based on the average daily number of flights within the same group and the average daily number of flights in the group version of the flight plan; wherein, the fourth flight segment grouping result includes the flight segments of the same official document and the flight segments of the group version; The airline conflict detection includes: grouping flight segments based on the latest group version of the flight plan, generating the fifth segment grouping result, traversing each fifth segment, and generating the conflict detection result of the fifth segment based on the average daily number of flights, the set of operating airlines, and the upper limit of the number of airlines in the fifth segment.
2. The flight schedule conflict detection method according to claim 1, characterized in that, The process iterates through each first flight segment, generating conflict detection results for the first flight segment based on the sum of the average daily number of direct and skip flights within that segment, as well as the flight's departure and flight times. These results include: Iterate through each first segment. If there are multiple flights in the first segment, calculate the flight time of the flights in the first segment. Based on the segment information of the first flight segment, the flight time and flight information of the flights within the first flight segment, the first moment conflict threshold is obtained; The departure times of flights within the first flight segment are obtained through analysis; If the flights within the first segment are direct flights, then the conflict detection result of the first segment is generated based on the departure time and the first time conflict threshold of the flights within the first segment; If the flights within the first segment are skip flights and are long-distance routes, then the conflict detection result of the first segment is generated based on the departure time of the flights within the first segment, the round-trip flight time of the skip long-distance routes, and the first time conflict threshold.
3. The flight schedule conflict detection method according to claim 1, characterized in that, The process of traversing each second flight segment, based on the aforementioned official document and the flight departure times within the second flight segment, generates conflict detection results for the second flight segment, including: Iterate through each second segment and obtain the second time conflict threshold based on the segment information, flight time and flight information of the flights within the second segment; The departure times of flights within the second flight segment are obtained through analysis; Based on the departure time, departure airport, and arrival airport of the flights within the second flight segment, determine the historical data corresponding to the flights in the same official document. Based on the historical data corresponding to the flights in the same official document, the second time conflict threshold, the takeoff time of flights in the second segment, and the round-trip flight time of bypassing long routes, the conflict detection results of the first segment are generated.
4. The flight schedule conflict detection method according to claim 1, characterized in that, If a flight segment of a group version is found within a segment with the same red header as the previous one, then a conflict detection result for the third flight segment is generated based on the segment data of the previous red header and the segment data of the group version, including: Traverse the flight segments of each group version. If the flight segment of the group version is in the same as the Shangtong Hongtou flight segment, determine the average daily number of flights of the Shangtong Hongtou group based on the flight segment data of the Shangtong Hongtou group, and determine the average daily number of flights of the group version flight segment based on the flight segment data of the group version. Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the newly added threshold, the conflict detection results of the third flight segment are generated.
5. The flight schedule conflict detection method according to claim 1, characterized in that, The process of traversing each group version of the flight segment, based on the average daily number of flights within the same group and the average daily number of flights in the group version, generates the conflict detection results for the fourth flight segment, including: Iterate through the flight segments of each group version, determine the average daily number of flights of the Shangtong Hongtou Group based on the Shangtong Hongtou flight segment data, and determine the average daily number of flights of the group version flight segments based on the group version flight segment data; Based on the average daily number of flights of the same group, the average daily number of flights of the group version of the flight segment, the flight segment type, and the reduction threshold, the conflict detection results for the third flight segment are determined.
6. The flight schedule conflict detection method according to claim 1, characterized in that, After concurrently executing five types of conflict detection based on the latest group version of the flight plan and generating conflict detection results, the process also includes: Statistical indicators are generated based on the detection results of each type of conflict in the conflict detection results. Based on the aforementioned statistical indicators, an email data object is constructed; The email data object is used to invoke the email service, and the data in the email data object is sent using the email service interface.
7. The flight schedule conflict detection method according to claim 1, characterized in that, Also includes: The primary navigation operator is determined based on the fleet of operating airlines, the regions of the departure airport and the arrival airport, and the configuration of the regional primary navigation operator.
8. A conflict detection device for flight schedules, characterized in that, include: The acquisition unit is used to obtain the latest group version of the flight plan; The conflict detection unit is used to concurrently perform five types of conflict detection based on the latest group version of the flight plan and generate conflict detection results; wherein, the five types of conflict detection include: red-headed time slot conflict detection, group time slot conflict detection, flight volume increase conflict detection, flight volume decrease conflict detection, and airline conflict detection; When the conflict detection unit performs the red-headed time conflict detection, it includes filtering the target group data from the same red-headed file, grouping the target group data into flight segments to obtain the first flight segment grouping result, traversing each first flight segment, and generating the conflict detection result of the first flight segment based on the sum of the average daily number of all direct and skip flights in the first flight segment, the flight departure time and flight time. When the conflict detection unit performs the group time conflict detection, it includes: grouping the data in the latest group version of the flight plan into segments to obtain the second segment grouping result; traversing each second segment; and generating the conflict detection result of the second segment based on the same official document and the departure time of the flights in the second segment. When the conflict detection unit performs the new flight volume conflict detection, it includes: grouping flight segments based on the same official document and the latest group version of the flight plan, generating a third flight segment grouping result, traversing each group version of the flight segment, and if the group version of the flight segment is in the same official document, generating a third flight segment conflict detection result based on the same official document and the group version of the flight segment data; wherein, the third flight segment grouping result includes the same official document and the group version of the flight segment; When the conflict detection unit performs the flight volume reduction conflict detection, it includes: grouping flight segments based on the same official document and the latest group version flight plan, generating a fourth flight segment grouping result, traversing each group version flight segment, and generating a fourth flight segment conflict detection result based on the average daily number of flights within the same group and the average daily number of flights in the group version flight segment; wherein, the fourth flight segment grouping result includes the same official document flight segment and the group version flight segment; When the conflict detection unit performs the airline conflict detection, it includes: grouping flight segments based on the latest group version of the flight plan, generating the fifth flight segment grouping result, traversing each fifth flight segment, and generating the conflict detection result of the fifth flight segment based on the average daily number of flights of the fifth flight segment, the set of operating airlines, and the upper limit of the number of airlines.
9. The flight schedule conflict detection device according to claim 8, characterized in that, Also includes: The statistical indicator generation unit is used to generate statistical indicators based on the detection results of each type of conflict detection in the conflict detection results; The email data object construction unit is used to construct email data objects based on the statistical indicators. The email service invocation unit is used to invoke the email service using the email data object and to send the data in the email data object using the email service interface.
10. The flight schedule conflict detection device according to claim 8, characterized in that, Also includes: The primary navigation officer determination unit is used to determine the primary navigation officer based on the set of operating airlines, the region to which the departure airport belongs, the region to which the arrival airport belongs, and the configuration of the regional primary navigation officer.