change finish route parameters

This commit is contained in:
afischerdev 2023-07-08 18:17:06 +02:00
parent 488d37b070
commit cc265269e6

View file

@ -64,6 +64,8 @@ public class RoutingEngine extends Thread {
protected RoutingContext routingContext;
public double airDistanceCostFactor;
public double lastAirDistanceCostFactor;
private OsmTrack guideTrack;
private OsmPathElement matchPath;
@ -933,6 +935,7 @@ public class RoutingEngine extends Thread {
if (track == null) {
for (int cfi = 0; cfi < airDistanceCostFactors.length; cfi++) {
if (cfi > 0) lastAirDistanceCostFactor = airDistanceCostFactors[cfi-1];
airDistanceCostFactor = airDistanceCostFactors[cfi];
if (airDistanceCostFactor < 0.) {
@ -986,6 +989,7 @@ public class RoutingEngine extends Thread {
// final run for verbose log info and detail nodes
airDistanceCostFactor = 0.;
lastAirDistanceCostFactor = 0.;
guideTrack = track;
startTime = System.currentTimeMillis(); // reset timeout...
try {
@ -1328,7 +1332,7 @@ public class RoutingEngine extends Thread {
}
// recheck cutoff before doing expensive stuff
int addDiff = 300;
int addDiff = 100;
if (path.cost + path.airdistance > maxTotalCost + addDiff) {
path.unregisterUpTree(routingContext);
continue;
@ -1427,7 +1431,7 @@ public class RoutingEngine extends Thread {
boolean inRadius = boundary == null || boundary.isInBoundary(nextNode, bestPath.cost);
if (inRadius && (isFinalLink || bestPath.cost + bestPath.airdistance <= maxTotalCost + addDiff)) {
if (inRadius && (isFinalLink || bestPath.cost + bestPath.airdistance <= (lastAirDistanceCostFactor != 0. ? maxTotalCost*lastAirDistanceCostFactor : maxTotalCost) + addDiff)) {
// add only if this may beat an existing path for that link
OsmLinkHolder dominator = link.getFirstLinkHolder(currentNode);
while (!trafficSim && dominator != null) {