Output message about number of used restrictions is now more helpful.
This commit is contained in:
parent
d2b5b8d854
commit
ebf3eea004
@ -104,7 +104,7 @@ void EdgeBasedGraphFactory::Run() {
|
|||||||
|
|
||||||
std::vector<_Restriction>::iterator restrictionIterator = inputRestrictions.begin();
|
std::vector<_Restriction>::iterator restrictionIterator = inputRestrictions.begin();
|
||||||
Percent p(_nodeBasedGraph->GetNumberOfNodes());
|
Percent p(_nodeBasedGraph->GetNumberOfNodes());
|
||||||
int numberOfResolvedRestrictions(0);
|
int numberOfSkippedTurns(0);
|
||||||
int nodeBasedEdgeCounter(0);
|
int nodeBasedEdgeCounter(0);
|
||||||
NodeID onlyToNode(0);
|
NodeID onlyToNode(0);
|
||||||
|
|
||||||
@ -122,6 +122,7 @@ void EdgeBasedGraphFactory::Run() {
|
|||||||
|
|
||||||
//Check every turn restriction originating from this edge if it is an 'only_*'-turn.
|
//Check every turn restriction originating from this edge if it is an 'only_*'-turn.
|
||||||
if(restrictionIterator != inputRestrictions.end() && u == restrictionIterator->fromNode) {
|
if(restrictionIterator != inputRestrictions.end() && u == restrictionIterator->fromNode) {
|
||||||
|
//copying iterator, so we can loop over restrictions without forgetting currect position.
|
||||||
std::vector<_Restriction>::iterator secondRestrictionIterator = restrictionIterator;
|
std::vector<_Restriction>::iterator secondRestrictionIterator = restrictionIterator;
|
||||||
do {
|
do {
|
||||||
if(v == secondRestrictionIterator->viaNode) {
|
if(v == secondRestrictionIterator->viaNode) {
|
||||||
@ -161,12 +162,13 @@ void EdgeBasedGraphFactory::Run() {
|
|||||||
for(_NodeBasedDynamicGraph::EdgeIterator e2 = _nodeBasedGraph->BeginEdges(v); e2 < _nodeBasedGraph->EndEdges(v); ++e2) {
|
for(_NodeBasedDynamicGraph::EdgeIterator e2 = _nodeBasedGraph->BeginEdges(v); e2 < _nodeBasedGraph->EndEdges(v); ++e2) {
|
||||||
_NodeBasedDynamicGraph::NodeIterator w = _nodeBasedGraph->GetTarget(e2);
|
_NodeBasedDynamicGraph::NodeIterator w = _nodeBasedGraph->GetTarget(e2);
|
||||||
//if (u,v,w) is a forbidden turn, continue
|
//if (u,v,w) is a forbidden turn, continue
|
||||||
bool isTurnRestricted(false);
|
|
||||||
if(isOnlyAllowed && w != onlyToNode) {
|
if(isOnlyAllowed && w != onlyToNode) {
|
||||||
// INFO("skipped turn <" << u << "," << v << "," << w << ">, only allowing <" << u << "," << v << "," << onlyToNode << ">");
|
//We are at an only_-restriction but not at the right turn.
|
||||||
|
++numberOfSkippedTurns;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isTurnRestricted(false);
|
||||||
if( u != w ) { //only add an edge if turn is not a U-turn
|
if( u != w ) { //only add an edge if turn is not a U-turn
|
||||||
if(restrictionIterator != inputRestrictions.end() && u == restrictionIterator->fromNode) {
|
if(restrictionIterator != inputRestrictions.end() && u == restrictionIterator->fromNode) {
|
||||||
std::vector<_Restriction>::iterator secondRestrictionIterator = restrictionIterator;
|
std::vector<_Restriction>::iterator secondRestrictionIterator = restrictionIterator;
|
||||||
@ -227,7 +229,7 @@ void EdgeBasedGraphFactory::Run() {
|
|||||||
edgeBasedNodes.push_back(currentNode);
|
edgeBasedNodes.push_back(currentNode);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
++numberOfResolvedRestrictions;
|
++numberOfSkippedTurns;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,7 +240,7 @@ void EdgeBasedGraphFactory::Run() {
|
|||||||
edgeBasedNodes.erase( std::unique(edgeBasedNodes.begin(), edgeBasedNodes.end()), edgeBasedNodes.end() );
|
edgeBasedNodes.erase( std::unique(edgeBasedNodes.begin(), edgeBasedNodes.end()), edgeBasedNodes.end() );
|
||||||
INFO("Node-based graph contains " << nodeBasedEdgeCounter << " edges");
|
INFO("Node-based graph contains " << nodeBasedEdgeCounter << " edges");
|
||||||
INFO("Edge-based graph contains " << edgeBasedEdges.size() << " edges, blowup is " << (double)edgeBasedEdges.size()/(double)nodeBasedEdgeCounter);
|
INFO("Edge-based graph contains " << edgeBasedEdges.size() << " edges, blowup is " << (double)edgeBasedEdges.size()/(double)nodeBasedEdgeCounter);
|
||||||
INFO("Edge-based graph obeys " << numberOfResolvedRestrictions << " turn restrictions, " << (inputRestrictions.size() - numberOfResolvedRestrictions )<< " skipped.");
|
INFO("Edge-based graph skipped " << numberOfSkippedTurns << " turns, defined by " << inputRestrictions.size() << " restrictions.");
|
||||||
INFO("Generated " << edgeBasedNodes.size() << " edge based nodes");
|
INFO("Generated " << edgeBasedNodes.size() << " edge based nodes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user