![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
![]()
I've been asked to help write some code to assist in flight planning
by choosing routes. I have just enough Computer Science and IFR background to make me dangerous. I said that I'd donate my effort if it results in Free code the community can use. So we're making this a community project. Although this sounds like a fairly simple task, performed by DUAT(S) and IFR students daily, there are a lot of complexities and I suspect that there are lots of opportunities for the community to optimize the process. Here's are some of my thoughts to kick around. All the data we need should be in the FAA ATA-100 collection. http://aviationtoolbox.org/old/ATA-100/ Flights will mostly be along airways. http://aviationtoolbox.org/old/ATA-1...ats/Awy_rf.txt Preferred routes should be used when possible. http://aviationtoolbox.org/old/ATA-1...ats/Pfr_rf.txt Transitions between airports and airways will be handled with standard arrival and departure procedures when possible. http://aviationtoolbox.org/old/ATA-1.../Stardp_rf.txt Here's a simple-minded algorithm with lots of holes to fill. Provide start and end airports and altitude restrictions. Get started with a standard departure or create one. Use preferred route or create one using least cost (mileage) routing. There are 20,757 airways. Finish using a standard approach or create one. So...suggestions? Thank you. --kyler |
#2
|
|||
|
|||
![]()
In a previous article, Kyler Laird said:
Here's a simple-minded algorithm with lots of holes to fill. Provide start and end airports and altitude restrictions. Get started with a standard departure or create one. Use preferred route or create one using least cost (mileage) routing. There are 20,757 airways. Finish using a standard approach or create one. So...suggestions? I started playing around with this idea years ago before when I was going to write an on-line flight planner. (That was an idea I started work on and then abandoned, and then a year or two later when I discovered CoPilot I decided that this was a better use of all the FAA data I had collected.) What I thought I'd do for the first cut at the algorithm was: Find every VOR that's within "X" degrees of a straight line between the start and end At that VOR - Find every VOR that's within "X" degrees of a straight line between that VOR and the end point. - Continue iterating until there are no VORs between you and the end point. When you have all your candidate routes, throw away any that don't have airways between the VOR. Maybe make an exception if the distance is less than "Y". Sort from shortest to longest. Obviously that needs some work to handle DPs and STARs and preferred routes. -- Paul Tomblin http://xcski.com/blogs/pt/ Today Has Been Two Of Those Days. -- Mike Andrews |
#3
|
|||
|
|||
![]()
Paul Tomblin wrote:
In a previous article, Kyler Laird said: Here's a simple-minded algorithm with lots of holes to fill. Provide start and end airports and altitude restrictions. Get started with a standard departure or create one. Use preferred route or create one using least cost (mileage) routing. There are 20,757 airways. Finish using a standard approach or create one. So...suggestions? I started playing around with this idea years ago before when I was going to write an on-line flight planner. (That was an idea I started work on and then abandoned, and then a year or two later when I discovered CoPilot I decided that this was a better use of all the FAA data I had collected.) What I thought I'd do for the first cut at the algorithm was: Find every VOR that's within "X" degrees of a straight line between the start and end At that VOR - Find every VOR that's within "X" degrees of a straight line between that VOR and the end point. - Continue iterating until there are no VORs between you and the end point. When you have all your candidate routes, throw away any that don't have airways between the VOR. Maybe make an exception if the distance is less than "Y". Sort from shortest to longest. Obviously that needs some work to handle DPs and STARs and preferred routes. I'd think some of the approaches taught in any good operations research course would be much better. It's been 20+ years since I took my last OR course, but I'd look into a good OR text before writing code. There a much better methods than a brute force, exhaustive search approach. Matt |
#4
|
|||
|
|||
![]()
All the data we need should be in the FAA ATA-100 collection.
http://aviationtoolbox.org/old/ATA-100/ Flights will mostly be along airways. http://aviationtoolbox.org/old/ATA-1...ats/Awy_rf.txt Preferred routes should be used when possible. http://aviationtoolbox.org/old/ATA-1...ats/Pfr_rf.txt Transitions between airports and airways will be handled with standard arrival and departure procedures when possible. http://aviationtoolbox.org/old/ATA-1.../Stardp_rf.txt Excuse my ignorance, but what is http://aviationtoolbox.org ? Lots of good data there but not so much as a readme to explain who/why. I recently bought a copy of the FAA database disc from ATA-100 in order to play with my own flight planning application -- now it appears that I could have downloaded it from http://aviationtoolbox.org. Cool. |
#5
|
|||
|
|||
![]() Preferred routes should be used when possible. So...suggestions? Find out what the =real= preferred routes are. They are not published. They are in the hands of the approach controllers. On the East Coast (where I fly) the preferred routes are almost never given (to me), but rather, other routes which seem to be standard are. Jose -- (for Email, make the obvious changes in my address) |
#6
|
|||
|
|||
![]()
In a previous article, said:
Lots of good data there but not so much as a readme to explain who/why. I recently bought a copy of the FAA database disc from ATA-100 in order to play with my own flight planning application -- now it appears that I could have downloaded it from http://aviationtoolbox.org. Cool. Yeah, it's pretty sucky that the FAA wants $36 to make a CD (and ship it FedEx), when there is so little data and so few people who care that it's easy to share it out over a measly cable modem upload. I have the CD subscription, and I make it available to a number of people who download it from me every 56 days when I get the new one. -- Paul Tomblin http://xcski.com/blogs/pt/ "You are all but subwidgets in a composite container whose logical tab group I have registered the traversal order of. I can merely point at you and your popup dialogue will be unmapped unless XmNautoUnmanage is False." |
#7
|
|||
|
|||
![]()
In article ,
Kyler Laird wrote: Flights will mostly be along airways. http://aviationtoolbox.org/old/ATA-1...ats/Awy_rf.txt I keep meaning to apply Dijkstra's algorithm to airway routing. The key will be choosing edge costs. Preferred routes should be used when possible. Transitions between airports and airways will be handled with standard arrival and departure procedures when possible. You can do this all with appropriate costs assigned to the routes and transitions that you want. The tricky part is weighting thoses costs properly against whatever you consider to be overriding factors (eg forecast winds, icing, aircraft performance, distance, available nav equipment, ...) -- Ben Jackson http://www.ben.com/ |
#8
|
|||
|
|||
![]() |
#9
|
|||
|
|||
![]()
"Ben Jackson" wrote in message
news:tCmbd.121529$He1.75934@attbi_s01... I keep meaning to apply Dijkstra's algorithm to airway routing. The key will be choosing edge costs. I tried something similar for Western Europe. Thinking aloud... My algorithm was basically: a) load the entire airway network as a graph using distances as costs b) link airports to the network using SIDs and STARs (important in Europe, probably less so in US) c) add preferred routes using the a cost of start_to_end_great_circle_distance * factor, where factor is just less than 1. d) run Dijkstra's algorithm (I was doing this in Perl so I just used the Graph module from CPAN) for a departure airport e) store the least cost routing from the departure airport to everywhere else in a database Repeat for other departure airports of interest. Processing time for one departure airport for my network was about 30s on a fairly typical desktop machine. YMMV, literally. ;-) Provided your airway network only changes every 28 days (can't speak for the US but that's what happens in the rest of the world for aeronautical data), you've then got "static" routes valid for a month which means that to run this for 100 airports or so, it should be a case of "do the calculation once and store the results". You can do this all with appropriate costs assigned to the routes and transitions that you want. The tricky part is weighting thoses costs properly against whatever you consider to be overriding factors (eg forecast winds, icing, aircraft performance, distance, available nav equipment, ...) Adding dynamic issues is not only difficult from a "what cost factor do I use?" point of view, but actually affects the entire strategy. Calculating weighted factors based on winds means that you have to do a calculation for the entire network (you may be able to preload the network, but you still have to run a weighting factor calc for each edge) which is likely to be very time consuming. You then have to run Dijkstra's algorithm to get the least-cost routes. But now we're doing that for *every* flight, which means that we wait for both steps of the processing (edge costs + Dijkstra) instead of doing a database lookup on stuff that's run once a month. I wondered about a middle ground. If you could store the 10 or even 100 least-cost routes for a particular airport-pair, then running those routes for a single flight would be relatively quick (either individually or doing Dijkstra on the much reduced network). But Dijkstra doesn't produce the runners up, only the winner, so how do we find the set of 10 or 100 routes to consider? Do you knock out legs and run the algorithm again? If so, which ones? Reducing the network to waypoints within x miles of the great circle for a particular flight (a little like Paul Tomblin's suggestion) is one possibility, but, at least in Europe, x would have to be pretty big. On a 3 hour trip to Germany from my home base in the UK, I basically have the choice between an initial route that goes east over Holland, or south and then south east over Belgium. For a 450 mile route, I have to consider a band of possibilities at least 150 miles wide. Anyway, just sharing some thinking. Julian Scarfe |
#10
|
|||
|
|||
![]()
"Julian Scarfe" writes:
"Ben Jackson" wrote in message news:tCmbd.121529$He1.75934@attbi_s01... I keep meaning to apply Dijkstra's algorithm to airway routing. That was my first thought...'course it's about all I remember about network theory... The key will be choosing edge costs. What's the difficulty here? The airway file contains distances. Are we not treating airways as the network edges? I tried something similar for Western Europe. Thinking aloud... My algorithm was basically: a) load the entire airway network as a graph using distances as costs b) link airports to the network using SIDs and STARs (important in Europe, probably less so in US) c) add preferred routes using the a cost of start_to_end_great_circle_distance * factor, where factor is just less than 1. Hmmmm...I like that. It would allow for lots of tweaking too. d) run Dijkstra's algorithm (I was doing this in Perl so I just used the Graph module from CPAN) for a departure airport e) store the least cost routing from the departure airport to everywhere else in a database Repeat for other departure airports of interest. Processing time for one departure airport for my network was about 30s on a fairly typical desktop machine. YMMV, literally. ;-) I wasn't planning to do a lot of precomputation. When we get into altitude restrictions it just gets too complicated. The shortest path for me from Indiana to California is going to be much different than for someone who is going to stay below 8,000'. Besides altitude restrictions, I can imagine wanting to specify avoidance of MOAs, long overwater segments, busy airspace, etc. Adding dynamic issues is not only difficult from a "what cost factor do I use?" point of view, but actually affects the entire strategy. Calculating weighted factors based on winds means that you have to do a calculation for the entire network Oh, yeah...winds too. (you may be able to preload the network, but you still have to run a weighting factor calc for each edge) which is likely to be very time consuming. You then have to run Dijkstra's algorithm to get the least-cost routes. But now we're doing that for *every* flight, which means that we wait for both steps of the processing (edge costs + Dijkstra) instead of doing a database lookup on stuff that's run once a month. It's not clear to me that this is a terrible burden. A student sitting in front of enroute charts can figure out reasonable solutions so I assume I can program a computer to do the same in short order. I think that learning to disregard edges that aren't of interest is the key. This seems fairly simple at first but in mountainous regions with low altitude restrictions it could get difficult because you might need to go far away from a direct route. Reducing the network to waypoints within x miles of the great circle for a particular flight (a little like Paul Tomblin's suggestion) is one possibility, but, at least in Europe, x would have to be pretty big. On a 3 hour trip to Germany from my home base in the UK, I basically have the choice between an initial route that goes east over Holland, or south and then south east over Belgium. For a 450 mile route, I have to consider a band of possibilities at least 150 miles wide. This doesn't sound so bad to me. I don't have a grasp on the power required to solve it though. Anyway, just sharing some thinking. Indeed! I appreciate the thoughts! --kyler |
|
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
IFR route BOS - IAD? | Peter MacPherson | Instrument Flight Rules | 2 | September 4th 04 05:46 AM |
NAS and associated computer system | Newps | Instrument Flight Rules | 8 | August 12th 04 05:12 AM |
filing IFR plan for VFR flight conditions | Paul Safran | Instrument Flight Rules | 53 | May 11th 04 03:07 AM |
Route planning question | Paul Tomblin | Instrument Flight Rules | 3 | April 4th 04 02:40 PM |
My route to the 3rd annual ParasolAirplanes Fly In | Scott | Home Built | 1 | July 18th 03 07:28 PM |