Use rectified linear unit to prevent negative duration values

This commit is contained in:
Michael Krasnyk
2017-05-02 22:13:20 +02:00
committed by Patrick Niklaus
parent a9d3e61884
commit 334a7b50cd
3 changed files with 44 additions and 4 deletions
+5 -2
View File
@@ -170,10 +170,13 @@ inline RouteLeg assembleLeg(const datafacade::BaseDataFacade &facade,
weight = weight + target_weight;
if (route_data.empty())
{
duration -= (target_traversed_in_reverse ? source_node.reverse_duration
: source_node.forward_duration);
weight -=
(target_traversed_in_reverse ? source_node.reverse_weight : source_node.forward_weight);
duration -= (target_traversed_in_reverse ? source_node.reverse_duration
: source_node.forward_duration);
// use rectified linear unit function to avoid negative duration values
// due to flooring errors in phantom snapping
duration = std::max(0, duration);
}
std::string summary;
+4 -2
View File
@@ -223,9 +223,11 @@ inline std::vector<RouteStep> assembleSteps(const datafacade::BaseDataFacade &fa
// | |---------| source_weight
// | |---| target_weight
const EdgeWeight weight = target_weight - source_weight;
const EdgeWeight duration = target_duration - source_duration;
BOOST_ASSERT(weight >= 0);
BOOST_ASSERT(duration >= 0);
// use rectified linear unit function to avoid negative duration values
// due to flooring errors in phantom snapping
const EdgeWeight duration = std::max(0, target_duration - source_duration);
steps.push_back(RouteStep{source_node.name_id,
facade.GetNameForID(source_node.name_id).to_string(),