Open bonza2 opened 2 years ago
I am experiencing the same issue. The returned distance between two nodes of interest is about a mile shorter than the Euclidian distance. NetworkX is able to return a distance greater than the Euclidean distance using the same network. Happy to post code and data if that helps.
Description of the bug
I am encountering incorrect shortest path solutions when using the
Network.shortest_path
(andNetwork.shortest_paths
) method on a network with impedance values of small or large (though still reasonable) orders of magnitude. I have included a very simple toy example below that captures the problem. Essentially, when the impedance values are scaled to a sufficiently small order of magnitude (by experiment seems to be ~1e-4) or large order of magnitude (by experiment seems to be ~1e7), the shortest path solution is no longer correct (and, incidentally, appears to revert to a solution that traverses the least number of nodes, rather than minimizing total impedance, though my example doesn't explore this aspect of the problem).Environment
Operating system: Windows 10 Enterprise
Python version: 3.9.10
Pandana version: 0.6.1
Paste the code that reproduces the issue here:
The above example produces the expected solution.
Now, use exactly the same nodes and edges, but scale the impedance values down by a factor of 10:
In the second example, clearly the more expensive and incorrect route has been chosen. The same behavior is observed at the larger end of impedance values also: for example, using the above example, when the impedance values are 1e7 instead .0001, and 2e7 instead of .0002, the same behavior occurs. I'm at a loss as to why this is happening?
Thank you for your help!