Closed nilsnolde closed 6 months ago
Hi Nils, this is Junzhen. I think I am capable of solving this issue. Could you please assign this issue to me? Thanks.
@vesperlou thanks for volunteering, let us know if you need any help apart from the excellent description
As agreed on in #3851 , we should add a costing option to disable hierarchy pruning. It's fairly easy:
max_distance_disable_hierarchy_culling
(long, but exact) to the JSON config generator underservice_limits
and default to 0max_distance_disable_hierarchy_culling
tothor/worker.h
and assign inthor/worker.cc
when parsing the config JSONdisable_hierarchy_pruning
(?) to the costing optionsmax_distance_disable_hierarchy_culling
config option. IMO we can add a function tothor_worker_t
which the actions, which should support this, can call it. I think it doesn't make sense for isochrones, since the algo doesn't use hierarchy limits, and for matrix we can call that newthor_worker_t
method on all source/target pairs. That new function should set thedisable_hierarchy_pruning
costing option to false. That makes me think.. Maybe we shouldn't do this check at all in thor, but rather in loki, that's where most config & distance checks are done. Then you can safely simply replace thor with loki in the above description everywhere. What do you think @kevinkreiser @dnesbitt61 ?disable_hierarchy_pruning
costing option inDynamicCost::ParseBaseCostOptions
and set allmax_up_transitions
tokUnlimitedTransitions
if the value istrue
Then the routing algorithms don't cull down transitions anymore, which will be kinda disastrous for longer routes (hence the JSON config option, actually pretty much overlapping with the
max_distance
service limit for bike/ped). And when used withshortest: true
it'd return a true shortest route for drive types. In fact, I just realized that isochrones always returned true shortest, since there isn't any hierarchy limits at play, interesting..