The ancient automated pathfinder-stations

Okay, here's some further thoughts based on having gotten the program working for myself, and your responses here.

Frequent use:
I use that program regularly, but certainly not "a lot". It turned out that the hassle of regularly downloading the data and updating a more efficient representation is not worth the hassle. It has a lot to do with the fact that I wrote this tool to be used in regions with a low star density. I don't know if anybody is often enough in such regions. And the pilots that are, probably don't need such a tool.
I respectfully disagree - I think the people who most need this kind of tool are the fringe explorer types. For getting around the galaxy in general, something like Spansh's neutron router works great, and even the in-game router is adequate most of the time. Where things break down is in the sparse case, when the mean separation between stars becomes comparable to the jump range of the ship. The in-game plotter stops working because it won't plot through synth jumps, and it won't make large detours to find its way around local gaps. And the online routing tools assume you can use the plotter to find your way to the next waypoint. Meanwhile explorers like me can see in EDSM that a given destination has been reached, but you can't tell if it's accessible in your ship or just some extreme jumpaconda build. Most of the galaxy hasn't been sufficiently explored for routing with EDSM data alone to make sense, but the fringes are different: dedicated perimeter explorers like Alitnil actually have plotted a great deal of the outer fringes. Using the VisitedStarsCache dump currently being discussed in another thread, I was able to see that in the region I'm looking at now, probably over 99% of stars in the area are already in EDSM.

In terms of usage pattern, I'm not likely to run this on the same region over the course of months, and I'm not likely to use it extremely often in general, but in the process of exploring this region, I am likely to run it many times in a row (with, say, slightly different start and end points). And I'm likely to do that again at some point in the future, when I encounter another interesting but tricky gap or fringe region. As such, I'd be hesitant to tell a prospective user like myself that the only good way to use the tool is to download a multi-GB file first. Far better experience if it can grab what it needs (even if that isn't super speedy the first time) and cache it for future runs on the same region.

Djikstra:
That was the first I thought about. I even already had a working implementation … and well, the rest of this story is descibred in the first post.
Also, once I had this idea I was nerd sniped and really wanted to see if I actually am able to implement this specific idea into code. … I was and that made me happy, but there likely is a much better solution using numpy and real math to do all of that.
Maybe less important for now. Having used the tool, it seems acceptably fast for the intended case of a sparse region with only a few thousand stars to consider. I didn't realize until I saw it in action that you aren't exploring the entire graph, but stopping on the first acceptable solution and shuffling a few times to optimize stochastically. Might be worth eventually adding the option to pick different routing algorithms for harder cases, and/or using Numpy to vectorize just expensive portions like the bulk distance calculations.

Question: Is there an interest, that I provide some kind of user interface. It will be just textinput on the console but that would remove the need to change the parameters in the sourcecode. I didn't do that before since I was the only user and thus didn't see the need for it.
In terms of development priorities, I think my two highest would be 1) a better user interface, and 2) better use of the EDSM API (namely reliability and cacheing). I'm already knocking up #1, since it bugs me greatly to have to modify a source file to use a program. Python has a great built-in library for doing command line argument parsing. So if you don't feel like doing that, I'll send you a PR in a few days. I might make some progress on #2 as well, just in the course of debugging why it sometimes fails.
 
I'm glad that somebody thinks that this tool may be actually of help for other people :).

And btw. if you want to make a webpage out of it (like spansh) you are very welcome to do that :) .

Having used the tool, it seems acceptably fast for the intended case of a sparse region with only a few thousand stars to consider.
That was unexpected and a huge compliment, thank you * blushing *.

And yes, I stop at the first solution. But I've thought this through for quite a while and this solution may not be the super optimal path but it is very close to it (under the given constraints). And it has to be since additional short jumps will increase the "resistance" of the while path. BUT I agree it is not the "perfect" solution.

Be my guest to do the two things you propose :) . It sounds great what you intend to do :). But please give me some time when you check in the changes (is it called like that?). This would be the first collaborative project I'm working on and I have to learn all that and I'm a bit occupied in RL at the moment. That is for the case that you don't want to branch the project and develop an independent tool based in my code.

I'd like to work on the the neutron boosting problem That will likely require some changes in the star finding, node creation and pathfinding algorithm .
 
The neutron boosted jumping poses the problem that one may jump to a destination one can not come back from. So than the way back needs to be found, too. … Just loud thinking here ;)
 
Be my guest to do the two things you propose :) . It sounds great what you intend to do :). But please give me some time when you check in the changes (is it called like that?). This would be the first collaborative project I'm working on and I have to learn all that and I'm a bit occupied in RL at the moment. That is for the case that you don't want to branch the project and develop an independent tool based in my code.
No worries, we're all busy IRL.

Unless our plans wind up badly diverging, I don't see the need to create my own version of the tool. But I will branch it. The way Github is meant to work, each collaborator creates their own fork of the repository, and uses the Pull Request mechanism to contribute changes to the master repository. So I would make some changes, send you a PR, then the PR appears in your repo where we can discuss it in the comments and potentially make additional changes. At the end, you (as owner of the master repo) will get to choose whether to accept or reject the PR. All that can be done through the Github web interface. Happy to talk you through things when we get there.

And btw. if you want to make a webpage out of it (like spansh) you are very welcome to do that :) .
No thanks. :)

This does serve as a proof-of-concept that hosting a routing tool wouldn't necessarily kill someone's server. But, for a public service where the users don't pay for their own compute cycles, you'd have to be very careful about what kind of routes you allow users to request. As you noted, this is a tool that can take a few seconds to a few hours to run, depending on the inputs.
 
Oh great … I had a very brief (like 1 minute) look over it, just to see what a pull request looks like (it's a first for me) and which buttons I have to press after I've looked at what you did.
From your description all seems very well and please go ahead with doing what you want to do :)
 
Just a quick “thank you” for this tool from a happy user. Had noted the development of it when OP made their first post, but only recently got the opportunity to make use of it - I’m currently pootling around the Outer Arm in a ship with less range than would be ideal down here (deliberate choice!) and it’s helped me across a few areas where the in-game plotter and my own skills have both let me down. Much appreciated.
 
Thank you :) . I hoped but never expected that anybody who isn't me will use it.

Btw. the newest version also takes Neutron boosting into account. Albeit, that shouldn't matter much in this regions where this tool is supposed to be used since there are usually jst very few neutron stars (if at all).

And Maolagin has implemented a much better interface which allows to use it without writing the necessary parameters into the sourcecode.
 
Update: One does not need to manually download Orvidius file with all known neutron stars any longer if Neutron boosting shall be considered when finding a path. The download takes place automatically now.
@Orvidius: I assumed that this is OK for you since you publish the list anyway. If you disagree, please tell me and I will remove this function again. Should have probably asked about that beforehand.
 
Last edited:
Congratulations on a new release - it looks like a lot of work went into this!

Unfortunately this change makes the program significantly less useful to me (I tend to run it in a GUI-less environment) so I will continue using the command line version. Many thanks for getting the program to this point, though.
 
Thank you for the compliment.

Unfortunately this change makes the program significantly less useful to me (I tend to run it in a GUI-less environment) so I will continue using the command line version.
I know what you mean and it was a hard decision.

Originally I intended to offer both. I had already started implementing it (via a --nogui parameter on the command line). But than I realized how much more work that would be and how many cases would have to be implemented (since I handle the necessary parameters different now) and that the code would be become much more "cluttered" than it already is. So for over a day I weight the pro's and con's in my head and decided afterwards to go just with the GUI.

But I've never thought that I'll provide a gui. So maybe one day I may provide both options.

Also, since the actual pathfinding algorithm didn't change the previous version will give you the same results.
 
Love the tool, and the GUI update is nice. There's some interesting oddities in the pathfinding solution....

I'm currently in system: Phooe Aed LM-W d1-0 (25797.375 / -19.625 / -7269.625)

Routing from here to nearby Hypau Aec IO-Z d13-0 (Arm's End; 26874.21875 / -18.6875 / -7473.59375) - works correctly
Routing from here to POI Lone Runner (Jongoae OX-L d7-0; 24939.59375 / 14.09375 / -9350.375) - can not find route
Routing from Hypau Aec IO-Z d13-0 to Jongoae OX-L d7-0 - can find route

So it appears that in some cases the route finder can not find a direct path, but will if you move in some direction and try again....
 
Love the tool, and the GUI update is nice. There's some interesting oddities in the pathfinding solution....

I'm currently in system: Phooe Aed LM-W d1-0 (25797.375 / -19.625 / -7269.625)

Routing from here to nearby Hypau Aec IO-Z d13-0 (Arm's End; 26874.21875 / -18.6875 / -7473.59375) - works correctly
Routing from here to POI Lone Runner (Jongoae OX-L d7-0; 24939.59375 / 14.09375 / -9350.375) - can not find route
Routing from Hypau Aec IO-Z d13-0 to Jongoae OX-L d7-0 - can find route

So it appears that in some cases the route finder can not find a direct path, but will if you move in some direction and try again....
Hey there!

So two things to bear in mind about the tool. First is, it relies on systems EDSM knows about. It looks like you're in an extreme perimeter system, so if by chance there is a gap in the EDSM-known stars too wide for you to jump over, the router might think you are simply stuck. Although since it can route from your current location to Arm's End to your destination, that seems unlikely.

The second issue is that, to keep the routing problem tractable, it only considers stars within a region around the straight line path. Exactly which stars depend on whether you are using the online EDSM queries, or the offline mode, but the region only extends about 1000 LY off the line. It looks like you're on a bit of a cape jutting out into the Perseus Fade, so it might be the case that the search region for the first search doesn't quite extend far enough to pick up the stars you need in the main body of the arm. That's probably something that could be made configurable.
 
@Heavy Johnson: Maolagin is right. Just stars in a tube with a diameter of 1000 ly that stretches from from A to B are considered. So that's 500 ly to each side and in that region are still some areas not very well discovered. But that is basically what Maolagin already said.
When I wrote the program I have experimented a bit with this tube. In almost all cases the "rate of return" is not significantly improving if the diameter is increased. However, the process time increases non-linear. One reason is that the number of stars goes with square of the radius. Another is, that this is still a permutation problem in its core (even though I simplified it a lot).

Considering this fundamental limitation, a non-direct route can't be found by the program itself. Because it is simply unaware of its surroundings outside said tube; it just doesn't know enough stars. A non-direct route could be found if the user provides the point where the bend is supposed to be. That however, is equivalent to the user finding one path from A to bend and afterwards doing it once more from bend to B.
I by the way use edastro for the "manual routing" in low density star areas.

I was recently in the same region and had the same issue (probably around the same place). I also had to "adjust" for the bend in the path myself.
Another example is a straight line of one level three jump and two regular jumps to reach the end systems that was replaced by like 40 regular jumps in a complicated path. So non direct lines are already taken care of ... within the tube that is ;)

Also, thank you very much for telling me. Such feedback makes me aware of stuff I haven't thought about (even though it may not apply to this special case at hand). :)
 
Back
Top Bottom