wip
This commit is contained in:
parent
dcd615ef2a
commit
5b26eac258
@ -497,7 +497,7 @@ std::optional<std::pair<NodeID, EdgeWeight>> runSearch(const DataFacade<Algorith
|
|||||||
EdgeWeight weight_upper_bound,
|
EdgeWeight weight_upper_bound,
|
||||||
const Args &...args)
|
const Args &...args)
|
||||||
{
|
{
|
||||||
if (forward_heap.Empty() || reverse_heap.Empty())
|
if (forward_heap.Empty() && reverse_heap.Empty())
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@ -510,9 +510,17 @@ std::optional<std::pair<NodeID, EdgeWeight>> runSearch(const DataFacade<Algorith
|
|||||||
EdgeWeight weight = weight_upper_bound;
|
EdgeWeight weight = weight_upper_bound;
|
||||||
EdgeWeight forward_heap_min = forward_heap.MinKey();
|
EdgeWeight forward_heap_min = forward_heap.MinKey();
|
||||||
EdgeWeight reverse_heap_min = reverse_heap.MinKey();
|
EdgeWeight reverse_heap_min = reverse_heap.MinKey();
|
||||||
while (forward_heap.Size() + reverse_heap.Size() > 0 /*&&
|
// if (!reverse_heap.Empty())
|
||||||
forward_heap_min + reverse_heap_min < weight*/)
|
// reverse_heap_min = reverse_heap.MinKey();
|
||||||
|
#if 0
|
||||||
|
while (forward_heap.Size() + reverse_heap.Size() > 0 && (
|
||||||
|
forward_heap_min < weight || reverse_heap_min < weight))
|
||||||
|
#else
|
||||||
|
while (forward_heap.Size() > 0 && forward_heap_min < weight_upper_bound)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
// std::cerr << "F: " << forward_heap_min << " R: " << reverse_heap_min << " W: " << weight << std::endl;
|
||||||
|
|
||||||
if (!forward_heap.Empty())
|
if (!forward_heap.Empty())
|
||||||
{
|
{
|
||||||
routingStep<FORWARD_DIRECTION>(
|
routingStep<FORWARD_DIRECTION>(
|
||||||
@ -520,14 +528,21 @@ std::optional<std::pair<NodeID, EdgeWeight>> runSearch(const DataFacade<Algorith
|
|||||||
if (!forward_heap.Empty())
|
if (!forward_heap.Empty())
|
||||||
forward_heap_min = forward_heap.MinKey();
|
forward_heap_min = forward_heap.MinKey();
|
||||||
}
|
}
|
||||||
if (!reverse_heap.Empty())
|
// if (!reverse_heap.Empty())
|
||||||
{
|
// {
|
||||||
|
// routingStep<REVERSE_DIRECTION>(
|
||||||
|
// facade, reverse_heap, forward_heap, middle, weight, force_step_nodes, args...);
|
||||||
|
// if (!reverse_heap.Empty())
|
||||||
|
// reverse_heap_min = reverse_heap.MinKey();
|
||||||
|
// }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!reverse_heap.Empty()) {
|
||||||
routingStep<REVERSE_DIRECTION>(
|
routingStep<REVERSE_DIRECTION>(
|
||||||
facade, reverse_heap, forward_heap, middle, weight, force_step_nodes, args...);
|
facade, reverse_heap, forward_heap, middle, weight, force_step_nodes, args...);
|
||||||
if (!reverse_heap.Empty())
|
if (!reverse_heap.Empty())
|
||||||
reverse_heap_min = reverse_heap.MinKey();
|
reverse_heap_min = reverse_heap.MinKey();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
// No path found for both target nodes?
|
// No path found for both target nodes?
|
||||||
if (weight >= weight_upper_bound || SPECIAL_NODEID == middle)
|
if (weight >= weight_upper_bound || SPECIAL_NODEID == middle)
|
||||||
|
@ -220,7 +220,7 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
((haversine_distance + max_distance_delta) / 4.) * facade.GetWeightMultiplier());
|
((haversine_distance + max_distance_delta) / 4.) * facade.GetWeightMultiplier());
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
std::vector<PhantomNode> test_sources;
|
std::vector<PhantomNode> test_sources;
|
||||||
std::vector<PhantomNode> test_targets;
|
std::vector<PhantomNode> test_targets;
|
||||||
|
|
||||||
@ -259,23 +259,23 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
|
|
||||||
|
|
||||||
// std::cerr << "OLD RUN: \n";
|
// std::cerr << "OLD RUN: \n";
|
||||||
std::vector<double> old_distances;
|
// std::vector<double> old_distances;
|
||||||
|
|
||||||
for (const auto& s: test_sources) {
|
// for (const auto& s: test_sources) {
|
||||||
for (const auto& t: test_targets) {
|
// for (const auto& t: test_targets) {
|
||||||
forward_heap.Clear();
|
// forward_heap.Clear();
|
||||||
double network_distance =
|
// double network_distance =
|
||||||
getNetworkDistanceOld(engine_working_data,
|
// getNetworkDistanceOld(engine_working_data,
|
||||||
facade,
|
// facade,
|
||||||
forward_heap,
|
// forward_heap,
|
||||||
reverse_heap,
|
// reverse_heap,
|
||||||
s,
|
// s,
|
||||||
t,
|
// t,
|
||||||
weight_upper_bound);
|
// weight_upper_bound);
|
||||||
old_distances.push_back(network_distance);
|
// old_distances.push_back(network_distance);
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
// std::cerr << "NEW RUN: \n";
|
// std::cerr << "NEW RUN: \n";
|
||||||
@ -314,7 +314,8 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
std::exit(1);
|
std::exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
std::exit(1);
|
||||||
|
#elif 1
|
||||||
std::vector<double> old_distances;
|
std::vector<double> old_distances;
|
||||||
for (const auto s : util::irange<std::size_t>(0UL, prev_viterbi.size()))
|
for (const auto s : util::irange<std::size_t>(0UL, prev_viterbi.size()))
|
||||||
{
|
{
|
||||||
@ -409,7 +410,7 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
double network_distance =
|
double network_distance =
|
||||||
getNetworkDistanceOld(engine_working_data,
|
getNetworkDistance(engine_working_data,
|
||||||
facade,
|
facade,
|
||||||
forward_heap,
|
forward_heap,
|
||||||
reverse_heap,
|
reverse_heap,
|
||||||
|
Loading…
Reference in New Issue
Block a user