Delta Virtual Airlines Water Cooler | Airline Operations |
Putting together a flight schedule to reach an accomplishment efficiently |
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
April 01 2019 18:12 ET by Gerard Beekmans
|
As I embarked on my new accomplishment goal, Eurocap Club, I realized this one was going to take more thinking and planning to make it efficient. The previous Moose Club was easy. Just fly through Canada in mostly a straight line from west to east and cross the pond into Europe. Europe is becoming a mess of criss-crossing and unfortunately repeating some flights (in reverse) necessary to maintain a connected logbook.
I have started to create a set of scripts in Python to build upon my previous script exercise that plotted all of DVAs flights in a massive Google Earth KML file. I'm trying to come up with a sequence of flights that will be more efficient in hitting all the milestones without doing a lot of "wasted" flights. Wasted in the sense that they don't add to an accomplishment because they end up landing at airports I've already visited, or land at airports that aren't part of an accomplishment. Creating a flight sequence automatically is proving to be challenging so before I go down yet another rabbit hole, I wanted to see if something like this already exists.
For example I have the following put together:
Amsterdam -> Lisbon -> Madrid -> Rome
Then the fun begins:
Rome -> Tirana -> Rome -> Skopje -> Rome -> Sofia -> Rome
Other sequences play nicer:
Rome -> Vienna -> Budapest -> Prague -> Kosice (not part of an accomplishment but required to reach the next one) -> Bratislava -> Prague -> Bucharest -> Belgrade -> Rome -> Paris -> Zagreb -> Paris
Only a couple of repeats here then off to do the Scandinavian area.
That's seeing way more of Rome than I had originally planned on. It's probably unavoidable. Putting the entire Europe flight sequence together has taken me a few hours. Good thing flights like Amsterdam -> Kiev are nearly 3 hours so doing the Amsterdam -> Kiev -> Paris route gave me the hours to complete the task.
If possible, I'd like to avoid creating these flight sequences manually, though. It's a bit tedious. It's also very much trial & error looking for all the possible combinations of outbound from/inbound to flights and match the up. This is the kind of thing automation was meant for.
If I did not use the connected logbook method, this would be far easier. Just pick two airports and fly. You can get multiple accomplishment hits each and every flight (two airports for Eurocap along with two countries for Globetrotter and possibly double-up on another accomplishment or two). It would go much faster but it feels less like simulated travel to me in that case and more like just grinding through a video game.
How do you guys handle this?
Gerard BeekmansCaptain, A320
|
|
DVA9080
Senior Captain, DC-6
OLP E-MAIL
Joined on September 30 2010
B757 100 Club
Everett 250 Club
Event Half Century Club
DVA Ten-Year Anniversary
Carolina Club
Online Seven Century Club
Eight Century Club
Elizabethtown, KY
807 legs, 2,189.7 hours
729 legs,
1,981.8 hours online 765 legs,
2,068.0 hours ACARS 93 legs,
240.2 hours event 70 legs dispatched, 109.8
hours
|
Posted onPost created on
April 01 2019 22:33 ET by Nathan Cox
|
Hey Gerard! This sort of dilemma is known as the "travelling salesman problem." You might consider doing some research into algorithms for solving the travelling salesman problem you could potentially implement in your program. I'd imagine one potential solution to this would be to create a large number of flight lines that would satisfy the accomplishment, and then evaluate them all based on some scoring system of minimizing the number of legs or total flight distance to find the best one. That sort of "brute-force" solution would be fairly computationally intensive.
|
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
April 01 2019 22:41 ET by Gerard Beekmans
|
Thanks for the hint, Nathan. My professional coding skills have become a tad rusty after switching careers to network engineering. Computationally intensive? That sounds like a challenge. I have 150 GHz free in CPU and 2 B free in RAM to throw at this problem if need be!
Gerard BeekmansCaptain, A320
|
|
DVA2887
Senior Captain, A320
OLP, 737-ATP, VFRADV E-MAIL
Joined on January 30 2006
50 State Club
Globetrotter
Tri-Jet Triumph
US Coastal Club
Millennium Club
DVA Fifteen-Year Anniversary
US Mountaineer Club
Toulouse 250 Club
Online Eight Century
Charlotte, NC
1,252 legs, 1,761.1 hours
814 legs,
1,022.2 hours online 1,234 legs,
1,739.1 hours ACARS 31 legs,
49.6 hours event 3 legs dispatched, 2.5
hours
|
Posted onPost created on
April 02 2019 08:58 ET by Andrew Vane
|
Sadly, some of the accomplishments are brutal for connected logbook fliers but all that much more of a celebration when they are achieved!
Andrew VaneSenior Captain, A320
|
|
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
April 02 2019 09:01 ET by Gerard Beekmans
|
Andrew, that's one of the reasons I chose DVA instead of the many others. It's not just a grind. It takes planning, some measure of tedium (which isn't a negative thing) and Belgium creative... Such as smartly working on several accomplishments instead of one to overcome that fact of being brutal as you mentioned it.
Gerard BeekmansCaptain, A320
|
|
DVA2887
Senior Captain, A320
OLP, 737-ATP, VFRADV E-MAIL
Joined on January 30 2006
50 State Club
Globetrotter
Tri-Jet Triumph
US Coastal Club
Millennium Club
DVA Fifteen-Year Anniversary
US Mountaineer Club
Toulouse 250 Club
Online Eight Century
Charlotte, NC
1,252 legs, 1,761.1 hours
814 legs,
1,022.2 hours online 1,234 legs,
1,739.1 hours ACARS 31 legs,
49.6 hours event 3 legs dispatched, 2.5
hours
|
Posted onPost created on
April 02 2019 11:55 ET by Andrew Vane
|
If you really want to OCD plan your accomplishments, try to acheive more than one with the same flight. I have done it and its definitely not easy. I think someone here achieved 3 with one flight once but I can't recall who.
Andrew VaneSenior Captain, A320
|
|
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
April 02 2019 12:18 ET by Gerard Beekmans
|
My three posts today all had glaring auto correct issues. Apologies! Can't seem to edit a post once I hit save (or if I can I have missed seeing an edit option).
OCD plan sounds up my alley. Why not make it more complicated. That does sound like a fun challenge actually. I'm 38 & 41 flights away from Century Club, Toulouse Century & Online Century Club, 20 away from Eurocap. Don't think I can make Century and Online Century coincide because I can't fly only online and not have it count toward the basic flight legs but I should be able to make Century, Toulouse Century and Eurocap align with a single final flight. That would require flying an extra 18 or so flights. I just considered doing the Piranha Club one but none have a direct flight out of Europe so I can't make them link up with a single final flight to hit 4 accomplishments.
Maybe I'll settle for hitting three.
Thanks Andrew, you just made this 3 times more complicated to plan.
Gerard BeekmansCaptain, A320
|
|
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
May 21 2019 11:35 ET by Gerard Beekmans
|
I'm continuing to build on this idea. I recently finished the triple-accomplishment-with-one-flight that Andrew challenged me to so now I'm onto the next one. I wanted to start on the White Pearl one which had an obvious first question: How do I get into the area: no easy direct flights and if they exist, they are too far away to work within my schedule (or plane) sometimes. So I needed a new set of programs to solve these questions:
1) How do I get from A to B
2) Multiple hops are fine but each hop needs a max distance (so it converts to flying no more than X hours in a row)
3) Minimum hop distance of X so you don't get those 80 nm flights accidentally included that take more time to plan than to fly
4) Maximum number of hops
Script #1 converts the provided PFPX XML schedule into a SQL database so I can more easily search through the current 9,083 flights (20,620 in total but "only" 9083 unique ones after removing the duplicates from other airlines).
Script #2 runs some fancy math on each of the 9083 entries to come up with a distance for each flight and stores it in the SQL database so it's one less thing to calculate on-the-fly
Script #3 then runs the queries and finds every possible route from A to B with the minimum distance, maximum distance and maximum number of hops.
I'm in Amsterdam (EHAM) right now and want to go to Manila (RPLL) to start the next accomplishment. Here's an example run.
From: EHAM
To: RPLL
Max hops: 5
Min distance: 1000nm (approximately 3-4 hours flight time based on winds)
Max distance: 2000nm (approximately 4-5 hours flight time based on winds)
Time to calculate the routes: 0.08 seconds (not bad)
Routes found: 6
Route 1: EHAM-HECA-OPKC-VTBD-RPLL
Amsterdam (EHAM) - Cairo (HECA) - 1775nm
Cairo (HECA) - Karachi (OPKC) - 1922nm
Karachi (OPKC) - Bangkok (VTBD) - 1999nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 6884
Route 2: EHAM-LTBA-OEJN-OPKC-VTBD-RPLL
Amsterdam (EHAM) - Istanbul (LTBA) - 1193nm
Istanbul (LTBA) - Jeddah (OEJN) - 1272nm
Jeddah (OEJN) - Karachi (OPKC) - 1554nm
Karachi (OPKC) - Bangkok (VTBD) - 1999nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 7206
Route 3: EHAM-LTBA-OERK-OPKC-VTBD-RPLL
Amsterdam (EHAM) - Istanbul (LTBA) - 1193nm
Istanbul (LTBA) - Riyadh (OERK) - 1312nm
Riyadh (OERK) - Karachi (OPKC) - 1113nm
Karachi (OPKC) - Bangkok (VTBD) - 1999nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 6805
Route 4: EHAM-LTBA-OERK-VIDP-VTBD-RPLL
Amsterdam (EHAM) - Istanbul (LTBA) - 1193nm
Istanbul (LTBA) - Riyadh (OERK) - 1312nm
Riyadh (OERK) - Delhi (VIDP) - 1640nm
Delhi (VIDP) - Bangkok (VTBD) - 1577nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 6910
Route 5: EHAM-OLBA-OPKC-VTBD-RPLL
Amsterdam (EHAM) - Beirut (OLBA) - 1724nm
Beirut (OLBA) - Karachi (OPKC) - 1733nm
Karachi (OPKC) - Bangkok (VTBD) - 1999nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 6644
Route 6: EHAM-UUEE-OLBA-OPKC-VTBD-RPLL
Amsterdam (EHAM) - Moscow (UUEE) - 1158nm
Moscow (UUEE) - Beirut (OLBA) - 1332nm
Beirut (OLBA) - Karachi (OPKC) - 1733nm
Karachi (OPKC) - Bangkok (VTBD) - 1999nm
Bangkok (VTBD) - Manila (RPLL) - 1188nm
Total distance flown: 7410
If you want to really go nuts, try something like max hops 100 and no maximum distance and you'll get thousands of route options to keep you busy. I stopped calculating at 16,000 routes.
Now the human element is to figure out the most logical route. Some of the routes, depending on the specifications, will have you backtrack so are not as logical to do. Next up is plotting these routes on Google Earth file so I can eyeball the results and pick the one that makes most sense.
With Andrew's handy list of airports for each accomplishment he provided in one of the PDF guides a while ago, a next addition could be to only include airports in routes that will be part of accomplishments so that each flight is worth something more than just a flight.
If anybody is interested in trying this out I'm happy to share the code. It's not entirely Windows friendly yet but I'm working on that next. If you're not afraid of command line stuff and can install Python, this will work for you.
Gerard BeekmansCaptain, A320
|
|
DVA388
Senior Captain, B747-400
OLP
Joined on December 14 2001
50 State Club
B757 100 Club
US Coastal Club
US Mountaineer Club
Online Century Club
Stage 1 Jet Triple Century Club
Globetrotter
DVA Twenty-Year Anniversary
Millennium Club
Million Mile Club
Midwestern United States
1,252 legs, 2,773.2 hours
153 legs,
178.1 hours online 1,172 legs,
2,643.0 hours ACARS 10 legs,
22.0 hours event 39 legs dispatched, 67.6
hours
|
Posted onPost created on
May 21 2019 14:55 ET by David Vega
|
Gerard, this is very interesting. Perhaps the VA would be motivated to have this as a service once you're done with it. I've been using a very low tech approach of plotting routes on a map and visually selecting best sequence of flights. It's time consuming, but part of the fun. I do recall the traveling salesman problem from school many years ago. Believe you need location of each node and distance between the nodes to compute best path. Please continue working on this.
|
DVA13608
Captain, A320
Joined on January 26 2019
Moose Club
Century Club
Eurocap Club
Toulouse Century Club
Online Century Club
Edmonton, AB Canada
143 legs, 242.3 hours
140 legs,
235.1 hours online 140 legs,
238.3 hours ACARS
|
Posted onPost created on
May 21 2019 15:25 ET by Gerard Beekmans
|
David, yes this is a variation of that traveling salesman (TSM) problem. The issue is I couldn't figure out how to apply a true TSM algorithm to the problem because you can't let the program pick the best path for you. The best path isn't always going to be a valid DVA flight or at least some legs aren't. If we add an accomplishment limit to it as well then it becomes even more narrow. Ultimately I'm not computing the best path. I'm just computing *a* path and as you can see above, it just gives you *all* paths possible within the limits of min/max distance and max hop counts. Our human eyes and brain will have to make the final determination on what the *best* path is for our circumstances. Not necessarily the shortest one because I can't always commit to 10 hour flights when not using time acceleration. Slight difference here between best-path and best-Gerard-path.
In another thread some time ago I posted a route plotting system I cobbled together. As an example I took the entire DVA flight database and put it into a KML file to load into Google Earth. The result was....a huge mess of lines that became impossible to figure out but it was cool to see for the first 10 minutes.
What I'm also working on is taking the above calculated routes and turn those into smaller google earth/maps files. This way it'll plot all my. as an example, EHAM-RPLL options at various hops and distances and give me something to look at. Analyzing a few dozen criss-crossing lines is still practical.
Your "low tech" method is actually still a very valid one. It's hard to programmatically decide on the best path. I myself at least am not an AI programmer so I need to use my actual eyes in the end to make a final determination. I take the manual "figuring out valid routes" out of the equation and automate the map plotting of it. It was a fun exercise even if I'm re-inventing the wheel a bit. I'm sure there are resources already available that do exactly this and much better.
Gerard BeekmansCaptain, A320
|
|
DVA388
Senior Captain, B747-400
OLP
Joined on December 14 2001
50 State Club
B757 100 Club
US Coastal Club
US Mountaineer Club
Online Century Club
Stage 1 Jet Triple Century Club
Globetrotter
DVA Twenty-Year Anniversary
Millennium Club
Million Mile Club
Midwestern United States
1,252 legs, 2,773.2 hours
153 legs,
178.1 hours online 1,172 legs,
2,643.0 hours ACARS 10 legs,
22.0 hours event 39 legs dispatched, 67.6
hours
|
Posted onPost created on
May 21 2019 17:08 ET by David Vega
|
Understand. Trying to avoid long flights may be what adds the complexity. In my low tech process, I first look for what airports maximize playing the role of hubs for the flights. For example, I'm working on the Yellow Rose. KDFW and KIAH are those airports where there are flights to almost all of the other required airports in Texas. I did the same for the US Capitals. Then I map the flights on a screen capture map I get from DVA. I can then visually setup a sequence of flights. I leave the airports not serviced from these hubs for last.
|