Skip to content

Commit 25507f8

Browse files
committed
refactor regret scoring
1 parent 0852cca commit 25507f8

File tree

1 file changed

+20
-10
lines changed
  • jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box

1 file changed

+20
-10
lines changed

jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java

+20-10
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ public static class Builder {
175175

176176
private ScoringFunction regretScorer = null;
177177

178+
private RegretScoringFunction regretScoringFunction = null;
179+
178180
private Map<SearchStrategy, Double> customStrategies = new HashMap<>();
179181

180182
private VehicleFleetManager fleetManager = null;
@@ -318,6 +320,11 @@ public Builder setRegretScorer(ScoringFunction scoringFunction) {
318320
return this;
319321
}
320322

323+
public Builder setRegretScoringFunction(RegretScoringFunction scoringFunction) {
324+
this.regretScoringFunction = scoringFunction;
325+
return this;
326+
}
327+
321328
public VehicleRoutingAlgorithm buildAlgorithm() {
322329
return new Jsprit(this).create(vrp);
323330
}
@@ -382,6 +389,8 @@ public int createNumberToBeRemoved() {
382389

383390
private ScoringFunction regretScorer;
384391

392+
private RegretScoringFunction regretScoringFunction;
393+
385394
private final Map<SearchStrategy, Double> customStrategies = new HashMap<>();
386395

387396
private VehicleFleetManager vehicleFleetManager;
@@ -398,12 +407,18 @@ private Jsprit(Builder builder) {
398407
this.activityInsertion = builder.activityInsertionCalculator;
399408
this.acceptor = builder.solutionAcceptor;
400409
regretScorer = builder.regretScorer;
410+
regretScoringFunction = builder.regretScoringFunction;
401411
customStrategies.putAll(builder.customStrategies);
402412
vehicleFleetManager = builder.fleetManager;
403413
}
404414

405415
private void ini(VehicleRoutingProblem vrp) {
406-
if (regretScorer == null) regretScorer = getRegretScorer(vrp);
416+
if (regretScorer == null) {
417+
regretScorer = getRegretScorer(vrp);
418+
}
419+
if (regretScoringFunction == null) {
420+
regretScoringFunction = new DefaultRegretScoringFunction(regretScorer);
421+
}
407422
}
408423

409424
private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
@@ -533,7 +548,6 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
533548
ruinTimeRelated.setRandom(random);
534549

535550
AbstractInsertionStrategy regret;
536-
final ScoringFunction scorer;
537551

538552
boolean fastRegret = Boolean.parseBoolean(getProperty(Parameter.FAST_REGRET.toString()));
539553
if (es != null) {
@@ -546,8 +560,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
546560
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
547561
.setActivityInsertionCostCalculator(activityInsertion)
548562
.build();
549-
scorer = regretScorer;
550-
regretInsertion.setScoringFunction(scorer);
563+
regretInsertion.setRegretScoringFunction(regretScoringFunction);
551564
regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes());
552565
regret = regretInsertion;
553566
}
@@ -559,8 +572,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
559572
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
560573
.setActivityInsertionCostCalculator(activityInsertion)
561574
.build();
562-
scorer = regretScorer;
563-
regretInsertion.setScoringFunction(scorer);
575+
regretInsertion.setRegretScoringFunction(regretScoringFunction);
564576
regret = regretInsertion;
565577
}
566578
} else {
@@ -572,8 +584,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
572584
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
573585
.setActivityInsertionCostCalculator(activityInsertion)
574586
.build();
575-
scorer = regretScorer;
576-
regretInsertion.setScoringFunction(scorer);
587+
regretInsertion.setRegretScoringFunction(regretScoringFunction);
577588
regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes());
578589
regret = regretInsertion;
579590
}
@@ -584,8 +595,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
584595
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
585596
.setActivityInsertionCostCalculator(activityInsertion)
586597
.build();
587-
scorer = regretScorer;
588-
regretInsertion.setScoringFunction(scorer);
598+
regretInsertion.setRegretScoringFunction(regretScoringFunction);
589599
regret = regretInsertion;
590600
}
591601
}

0 commit comments

Comments
 (0)