Skip to content

v1.0.6

Compare
Choose a tag to compare
@addy90 addy90 released this 06 Dec 13:12
· 15 commits to main since this release

This release fixes some rare bugs in the code, adds A* shortest path algorithm (however, not recommended and not the default), re-implements the --selector parameter that was accidentially missing its implementation since 1.0, and makes the comparison check if all given ground_truth tracks have corresponding matches.

  • The A* shortest path algorithm can be used with the new --a-star setting, however it is in fact slower and yields worse accuracy than the default Dijkstra's shortest path algorithm. There are two reasons: First, the heuristic method is not admissible, i.e., it calculcates euclidean distance on geographic and spherical coordinate systems, which leads in some cases to overshooting the target distance, which in turn makes A* finding suboptimal solutions. In cartesian coordinate systems, it should work correctly, but nevertheless, it is slower, because, second, we use a single-source-multiple-target shortest path search and cache the results, so with one Dijkstra call, we calculate dozens up to hundreds of routes in one go, whereas the A* algorithm is a single-source-single-target algorithm that needs to be called dozens up to hundreds of times. Therefore, the A* implementation is purely "theoretical" and not recommended to use in practice.
  • The --routing-max-distance-factor, which is the dynamic upper bound for the Dijkstra algorithm, can now be disabled by setting a negative value (e.g., -1). This is just for testing purposes, because in practice, it slows down the matching speed dramatically, depending on the road network size. The default should usually be fine and makes sure that the matching is nearly equally fast, no matter the size of the network.
  • The --selector parameter simply missed its implementation. Oops. It works correctly now again.
  • When in comparison mode, a ground truth track existed but no match, the ground truth was simply ignored. This could lead to a high overall accuracy (i.e., weighted mean correct fraction) when in reality, multiple tracks missed from the matches. Now if matches are missing for a ground truth, the comparison presumes an empty match and yields for that specific track an accuracy of zero. If you want the old behavior, you need to make sure that the ground truth does not contain tracks that are not in the matches, or you can use the --compare-selector parameter multiple times to specify all ids that you want to compare.
  • We also updated expat to 2.6.4 and protobuf to 29.1.

Full Changelog: v1.0.5...v1.0.6