mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
add method to further customize algo
This commit is contained in:
parent
ca86a6651b
commit
bbcaa863ee
1 changed files with 14 additions and 0 deletions
|
|
@ -34,6 +34,8 @@ import java.util.concurrent.Executors;
|
|||
|
||||
public class Jsprit {
|
||||
|
||||
private final ActivityInsertionCostsCalculator activityInsertion;
|
||||
|
||||
public enum Construction {
|
||||
|
||||
BEST_INSERTION("best_insertion"), REGRET_INSERTION("regret_insertion");
|
||||
|
|
@ -131,6 +133,8 @@ public class Jsprit {
|
|||
|
||||
private Random random = RandomNumberGeneration.newInstance();
|
||||
|
||||
private ActivityInsertionCostsCalculator activityInsertionCalculator;
|
||||
|
||||
public static Builder newInstance(VehicleRoutingProblem vrp) {
|
||||
return new Builder(vrp);
|
||||
}
|
||||
|
|
@ -224,6 +228,11 @@ public class Jsprit {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Builder setActivityInsertionCalculator(ActivityInsertionCostsCalculator activityInsertionCalculator){
|
||||
this.activityInsertionCalculator = activityInsertionCalculator;
|
||||
return this;
|
||||
}
|
||||
|
||||
public VehicleRoutingAlgorithm buildAlgorithm() {
|
||||
return new Jsprit(this).create(vrp);
|
||||
}
|
||||
|
|
@ -293,6 +302,7 @@ public class Jsprit {
|
|||
this.properties = builder.properties;
|
||||
this.objectiveFunction = builder.objectiveFunction;
|
||||
this.random = builder.random;
|
||||
this.activityInsertion = builder.activityInsertionCalculator;
|
||||
}
|
||||
|
||||
private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
|
||||
|
|
@ -395,6 +405,7 @@ public class Jsprit {
|
|||
.setConcurrentMode(es, noThreads)
|
||||
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
|
||||
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
|
||||
.setActivityInsertionCostCalculator(activityInsertion)
|
||||
.build();
|
||||
scorer = getRegretScorer(vrp);
|
||||
regretInsertion.setScoringFunction(scorer);
|
||||
|
|
@ -404,6 +415,7 @@ public class Jsprit {
|
|||
.setInsertionStrategy(InsertionBuilder.Strategy.REGRET)
|
||||
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
|
||||
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
|
||||
.setActivityInsertionCostCalculator(activityInsertion)
|
||||
.build();
|
||||
scorer = getRegretScorer(vrp);
|
||||
regretInsertion.setScoringFunction(scorer);
|
||||
|
|
@ -417,6 +429,7 @@ public class Jsprit {
|
|||
.setInsertionStrategy(InsertionBuilder.Strategy.BEST)
|
||||
.considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString())))
|
||||
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
|
||||
.setActivityInsertionCostCalculator(activityInsertion)
|
||||
.build();
|
||||
best = bestInsertion;
|
||||
} else {
|
||||
|
|
@ -425,6 +438,7 @@ public class Jsprit {
|
|||
.considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString())))
|
||||
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
|
||||
.setConcurrentMode(es, noThreads)
|
||||
.setActivityInsertionCostCalculator(activityInsertion)
|
||||
.build();
|
||||
best = bestInsertion;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue