fix edge-expanded offsets
This commit is contained in:
@@ -59,14 +59,26 @@ struct PhantomNode
|
||||
|
||||
int GetForwardWeightPlusOffset() const
|
||||
{
|
||||
SimpleLogger().Write(logDEBUG) << "->fwd_offset: " << forward_offset << ", weight: " << forward_weight;
|
||||
return reverse_offset + forward_weight;
|
||||
if (SPECIAL_NODEID == forward_node_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
// SimpleLogger().Write(logDEBUG) << "->fwd_offset: " << forward_offset << ", weight: " << forward_weight;
|
||||
const int result = (forward_offset + forward_weight);
|
||||
// SimpleLogger().Write(logDEBUG) << "forward queue weight: " << result;
|
||||
return result;
|
||||
}
|
||||
|
||||
int GetReverseWeightPlusOffset() const
|
||||
{
|
||||
SimpleLogger().Write(logDEBUG) << "->rev_offset: " << reverse_offset << ", weight: " << reverse_weight;
|
||||
return forward_offset + reverse_weight;
|
||||
if (SPECIAL_NODEID == reverse_node_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
// SimpleLogger().Write(logDEBUG) << "->rev_offset: " << reverse_offset << ", weight: " << reverse_weight;
|
||||
const int result = (reverse_offset + reverse_weight);
|
||||
// SimpleLogger().Write(logDEBUG) << "reverse queue weight: " << result;
|
||||
return result;
|
||||
}
|
||||
|
||||
void Reset()
|
||||
@@ -103,8 +115,6 @@ struct PhantomNode
|
||||
(forward_weight != INVALID_EDGE_WEIGHT) ||
|
||||
(reverse_weight != INVALID_EDGE_WEIGHT)
|
||||
) &&
|
||||
// (ratio >= 0.) &&
|
||||
// (ratio <= 1.) &&
|
||||
(name_id != std::numeric_limits<unsigned>::max()
|
||||
);
|
||||
}
|
||||
@@ -141,6 +151,31 @@ struct PhantomNodes
|
||||
{
|
||||
return source_phantom == target_phantom;
|
||||
}
|
||||
|
||||
bool ComputeForwardQueueOffset() const
|
||||
{
|
||||
if (source_phantom.forward_node_id == target_phantom.forward_node_id)
|
||||
{
|
||||
const int forward_queue_weight = source_phantom.GetForwardWeightPlusOffset();
|
||||
const int reverse_queue_weight = target_phantom.GetForwardWeightPlusOffset();
|
||||
const int weight_diff = (forward_queue_weight - reverse_queue_weight);
|
||||
SimpleLogger().Write(logDEBUG) << "fwd queue offset: " << std::max(0, weight_diff);
|
||||
return 0;//std::max(0, weight_diff);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool ComputeReverseQueueOffset() const
|
||||
{
|
||||
if (source_phantom.reverse_node_id == target_phantom.reverse_node_id)
|
||||
{
|
||||
const int forward_queue_weight = source_phantom.GetReverseWeightPlusOffset();
|
||||
const int reverse_queue_weight = target_phantom.GetReverseWeightPlusOffset();
|
||||
const int weight_diff = (forward_queue_weight - reverse_queue_weight);
|
||||
return 0;//std::max(0, weight_diff);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
inline std::ostream& operator<<(std::ostream &out, const PhantomNodes & pn)
|
||||
|
||||
@@ -765,21 +765,21 @@ public:
|
||||
|
||||
if (SPECIAL_NODEID != result_phantom_node.forward_node_id)
|
||||
{
|
||||
result_phantom_node.forward_weight *= (ratio);
|
||||
result_phantom_node.forward_weight *= ratio;
|
||||
}
|
||||
if( SPECIAL_NODEID != result_phantom_node.reverse_node_id )
|
||||
if (SPECIAL_NODEID != result_phantom_node.reverse_node_id)
|
||||
{
|
||||
result_phantom_node.reverse_weight *= 1.-ratio;
|
||||
result_phantom_node.reverse_weight *= (1.-ratio);
|
||||
}
|
||||
// result_phantom_node.ratio = ratio;
|
||||
|
||||
SimpleLogger().Write(logDEBUG) << "result location: " << result_phantom_node.location << ", start: " << current_start_coordinate << ", end: " << current_end_coordinate;
|
||||
SimpleLogger().Write(logDEBUG) << "fwd node: " << result_phantom_node.forward_node_id << ", rev node: " << result_phantom_node.reverse_node_id;
|
||||
SimpleLogger().Write(logDEBUG) << "fwd weight: " << result_phantom_node.forward_weight << ", rev weight: " << result_phantom_node.reverse_weight;// << ", ratio: " << result_phantom_node.ratio;
|
||||
SimpleLogger().Write(logDEBUG) << "fwd offset: " << result_phantom_node.forward_offset << ", rev offset: " << result_phantom_node.reverse_offset;// << ", ratio: " << result_phantom_node.ratio;
|
||||
SimpleLogger().Write(logDEBUG) << "fwd weight: " << result_phantom_node.forward_weight << ", rev weight: " << result_phantom_node.reverse_weight;
|
||||
SimpleLogger().Write(logDEBUG) << "fwd offset: " << result_phantom_node.forward_offset << ", rev offset: " << result_phantom_node.reverse_offset;
|
||||
SimpleLogger().Write(logDEBUG) << "bidirected: " << (result_phantom_node.isBidirected() ? "y" : "n");
|
||||
SimpleLogger().Write(logDEBUG) << "name id: " << result_phantom_node.name_id;
|
||||
SimpleLogger().Write(logDEBUG) << "geom id: " << result_phantom_node.packed_geometry_id;
|
||||
SimpleLogger().Write(logDEBUG) << "ratio: " << ratio;
|
||||
|
||||
return found_a_nearest_edge;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user