TNK081 Tillämpad Kommunikationsoptimering Tobias Andersson Projektuppgift Sekvensering av flygplan
Bakgrund Redan idag har många flygplatser i världen nått sitt kapacitetstak och tvingas tacka nej till flygbolag som önskar starta och landa där. Då kapaciteten utnyttjas till fullo finns inte mycket utrymme för att hantera eventuella störningar vilket lätt leder till det uppstår köer och förseningar, speciellt under rusningstid (peak-hour). Den trånga resursen på flygplatsen är ofta landningsbanan och det mest naturliga sättet att öka kapaciteten för landningar och starter är förstås att bygga ytterligare en bana. Detta är dock mycket dyrt och belagt med flera andra svårigheter, som tex miljökrav. Ett annat sätt att öka det maximala antalet rörelser (starter och landningar) per timme är att utnyttja den befintliga infrastrukturen på ett effektivare sätt. Vortex Ett flygplan som har bärkraft på vingarna (mao flyger) ger upphov till sk wake vortex, virvelvindar, som kan vara mycket kraftiga. Ju större och tyngre planet är desto kraftigare blir vindarna. När ett flygplan startar eller landar på en bana tar det en viss tid innan dessa vindar har försvagats tillräckligt för att det ska vara säkert för ytterligare ett plan att starta eller landa. På grund av detta finns det säkerhetsavstånd mellan olika flygplan som alltid måste respekteras. Eftersom ett stort plan ger upphov till kraftiga vindar men själv är mindre känsligt för vindpåverkan, medan ett litet plan är mer känsligt och ger upphov till mindre kraftiga vindar, så är säkerhetsavstånden beroende av planens storlek. Om ett litet plan nyss landat och ett stort plan står på tur så är det ett litet säkerhetsavstånd, medan det omvända naturligtvis också gäller. Sekvensering Säkerhetsavstånden, och därmed tiden, mellan två landande (eller startande) flygplan är alltså olika beroende av storlek och vikt. Detta innebär att antal rörelser per tidsenhet på en bana är beroende av i vilken ordning planen landar. Genom att på ett smart sätt sekvensera ordningen på planen skulle således en flygledare kunna öka kapaciteten på landningsbanan. Uppgift Er uppgift är att skapa en applikation som automatiskt tilldelar landningstider till flygplan som ska landa på en flygplats. Den manuella processen kan vara att ett flygplan kommer i närheten av kontrolltornet (ca 10 minuter från landning) och då begär och får en landningstid av en flygledare. Det vanligaste är att flygledaren använder first-come-first-served regeln för att bestämma i vilken ordning flygplanen ska landa. Då planet begär landningstid finns det en tidigaste tid som det är möjligt för planet att klara av. Ofta kan det krävas att den sista biten av flygningen blir oekonomisk för att det ska vara möjligt att hinna fram till denna tid, vilket innebär att det inte finns något incitament för flygplanet att landa före den tidtabellbestämda tiden, utan att det i stället uppstår en extra kostnad om planet landar för tidigt. Målet för flygplanet är således att landa så nära den planerade tiden som möjligt, men hellre lite före än lite efter, eftersom flygbolagen i möjligaste mån vill undvika förseningar. Då flygplanen har med sig en begränsad mängd bränsle finns det också en senaste tid då planet kan landa. Att ge ett flygplan en landningstid efter denna är inte förenligt med gällande säkerhetsföreskrifter.
Flygplanen som kommer till den aktuella flygplatsen finns i tre viktklasser; lätt (L), medium (M) och tung (H) och flygplatsen har också föregått med gott exempel genom att ange säkerhetsavstånden i tid i stället för sträcka. Det erforderliga avståndet mellan två landande flygplan framgår av Tabell 1. På rad 4 i Tabell 1 står M L 113. Detta tolkas som att om ett plan i viktklass M har landat så måste det gå 113 sekunder innan ett plan av viktklass L får landa. Vikt, ledande Vikt, följande Säkerhetsavstånd [s] L L 90 L M 68 L H 68 M L 113 M M 90 M H 68 H L 135 H M 113 H H 90 Tabell 1: Säkerhetsavstånd I Bilaga 1 finns data som kan användas för att testa applikationen. Datan är sorterad i kolumner där varje rad motsvarar ett flygplan. Kolumnerna är : A/C 14 TA 1071 ETL 1671 STL 1781 LTL 3230 där A/C är ett id-nummer på planet, TA den tid då planet begär en landningstid, ETL den tidigaste tid planet kan landa, STL den tid som planet ska landa enligt tidtabellen, LTL den tid då planet senast måste landa och W viktklassen på planet. Om ni tycker att 100 flygplan är för mycket att arbeta med kan ni börja med att kika på tex de 10 första planen. Datan kan också hittas på http://www.itn.liu.se/~toban/sequence.txt, eller gå in på http://www.itn.liu.se/~toban/ och klicka på Courses, där ni också kan hitta dessa instruktioner i pdf-format. Statiskt vs Dynamiskt I den applikation ni utvecklar kan ni (om ni vill) anta att ni känner till all data innan ni gör er sekvensering. Så är naturligtvis inte fallet i verkligheten; flygledarna har enbart en grov uppfattning om när ett speciellt plan kommer att dyka upp och kan egentligen inte sortera in det i någon kö förrän det begärt en landningstid. Om ni vill utveckla en dynamisk algoritm måste ni således anta att tornet inte får kännedom om ett plan förrän tidpunkten TA, och därefter tar ett beslut om när planet ska få landa. Detta kan då innebära att han måste ändra landningstiden för något annat plan, vilket kan göra att det är lämpligt att anta en frystid, dvs en senaste tidpunkt då ett flygplans landningstid inte får ändras. W M
Bilaga 1: Data 1 1 601 507 2090 H 2 125 725 1029 2527 M 3 328 928 1528 2878 M 4 374 974 1730 3002 H 5 456 1056 1880 3118 M 6 519 1119 1051 2735 H 7 548 1148 1592 3020 M 8 595 1195 1307 2901 M 9 601 1201 1667 3084 H 10 618 1218 1168 2843 H 11 624 1224 1184 2831 L 12 688 1288 1812 3200 H 13 1013 1613 1535 3224 H 14 1071 1671 1781 3230 M 15 1100 1700 2468 3734 M 16 1201 1801 1905 3503 H 17 1467 2067 1971 3669 H 18 1491 2091 2039 3715 H 19 1642 2242 2166 3688 M 20 1740 2340 2232 3936 M 21 2019 2619 2829 4186 M 22 2105 2705 2595 3901 L 23 2126 2726 2916 4471 L 24 2203 2803 2733 4418 H 25 2282 2882 2642 4056 L 26 2646 3246 3910 5228 M 27 2735 3335 3301 4968 L 28 2757 3357 3843 5250 L 29 2768 3368 3626 5147 H 30 2828 3428 3262 4995 L 31 2863 3463 3395 5079 H 32 2895 3495 4363 5579 H 33 2944 3544 3684 5264 M 34 3023 3623 3575 5249 M 35 3032 3632 3776 5354 L 36 3123 3723 4523 5773 M 37 3590 4190 3970 5283 L 38 3620 4220 5022 6271 H 39 3646 4246 5126 6336 H 40 3776 4376 4714 6195 M 41 3883 4483 4875 6329 L 42 4294 4894 5606 6900 L 43 4365 4965 5807 7036 M 44 4382 4982 5166 6724 L 45 4421 5021 5565 6943 L 46 4430 5030 5654 6992 L 47 4545 5145 5301 6873 H 48 4575 5175 5987 7231 H 49 4614 5214 5984 7249 M 50 4624 5224 5652 7088 H
51 4746 5346 5626 7136 L 52 4988 5588 6004 7446 L 53 5091 5691 6299 7645 M 54 5104 5704 6144 7574 L 55 5208 5808 6338 7723 L 56 5344 5944 6798 8021 M 57 5381 5981 6527 7904 M 58 5502 6102 6508 7955 H 59 5608 6208 6180 7844 H 60 5982 6582 6852 8367 M 61 6242 6842 6802 8472 L 62 6568 7168 7410 8939 H 63 6640 7240 7730 9135 H 64 6908 7508 7840 9324 M 65 7032 7632 8392 9662 H 66 7035 7635 8313 9624 L 67 7125 7725 8135 9580 L 68 7174 7774 8224 9649 L 69 7471 8071 8211 9791 H 70 7552 8152 8246 9849 H 71 7644 8244 8886 10215 H 72 7750 8350 8260 9955 H 73 8023 8623 8883 10403 H 74 8401 9001 9285 10793 M 75 8765 9365 9351 11008 H 76 8969 9569 10107 11488 L 77 9030 9630 9662 11296 H 78 9220 9820 10480 11800 L 79 9222 9822 10094 11608 L 80 9519 10119 10913 12166 H 81 9552 10152 10956 12204 M 82 9788 10388 10870 12279 M 83 9797 10397 11191 12444 H 84 9811 10411 11175 12443 H 85 9844 10444 10286 12015 M 86 10141 10741 10832 12532 L 87 10216 10816 10911 12611 H 88 10258 10858 10984 12571 L 89 10330 10930 11476 12853 M 90 10443 11043 11327 12835 L 91 10623 11223 11333 12928 H 92 10679 11279 11847 13213 L 93 10970 11570 12048 13459 L 94 11089 11689 12081 13535 L 95 11137 11737 12025 13531 H 96 11342 11942 12544 13893 M 97 11524 12124 12886 14155 H 98 11536 12136 12338 13887 L 99 11638 12238 12562 14050 H 100 11723 12323 12759 14191 M