mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
improve break scheduling
This commit is contained in:
parent
229577dd43
commit
c2c3062a43
3 changed files with 2 additions and 5 deletions
|
|
@ -557,6 +557,7 @@ public class Jsprit {
|
||||||
vra.addListener(noiseConfigurator);
|
vra.addListener(noiseConfigurator);
|
||||||
vra.addListener(noise);
|
vra.addListener(noise);
|
||||||
vra.addListener(clusters);
|
vra.addListener(clusters);
|
||||||
|
|
||||||
vra.addListener(new BreakScheduling(vrp,stateManager,constraintManager));
|
vra.addListener(new BreakScheduling(vrp,stateManager,constraintManager));
|
||||||
// vra.addListener(new RuinBreaks());
|
// vra.addListener(new RuinBreaks());
|
||||||
handleExecutorShutdown(vra);
|
handleExecutorShutdown(vra);
|
||||||
|
|
|
||||||
|
|
@ -34,13 +34,11 @@ public class BreakScheduling implements JobInsertedListener, RuinListener {
|
||||||
@Override
|
@Override
|
||||||
public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) {
|
public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) {
|
||||||
Break aBreak = inRoute.getVehicle().getBreak();
|
Break aBreak = inRoute.getVehicle().getBreak();
|
||||||
// if(job2insert == aBreak) return;
|
|
||||||
if(aBreak != null){
|
if(aBreak != null){
|
||||||
boolean removed = inRoute.getTourActivities().removeJob(aBreak);
|
boolean removed = inRoute.getTourActivities().removeJob(aBreak);
|
||||||
if(removed){
|
if(removed){
|
||||||
stateManager.removed(aBreak,inRoute);
|
stateManager.removed(aBreak,inRoute);
|
||||||
stateManager.reCalculateStates(inRoute);
|
stateManager.reCalculateStates(inRoute);
|
||||||
//updateRoute --> alles wichtiges states
|
|
||||||
}
|
}
|
||||||
if(inRoute.getEnd().getArrTime() > aBreak.getTimeWindow().getEnd()){
|
if(inRoute.getEnd().getArrTime() > aBreak.getTimeWindow().getEnd()){
|
||||||
InsertionData iData = breakInsertionCalculator.getInsertionData(inRoute, aBreak, inRoute.getVehicle(), inRoute.getDepartureTime(), inRoute.getDriver(), Double.MAX_VALUE);
|
InsertionData iData = breakInsertionCalculator.getInsertionData(inRoute, aBreak, inRoute.getVehicle(), inRoute.getDepartureTime(), inRoute.getDriver(), Double.MAX_VALUE);
|
||||||
|
|
@ -48,12 +46,9 @@ public class BreakScheduling implements JobInsertedListener, RuinListener {
|
||||||
for(Event e : iData.getEvents()){
|
for(Event e : iData.getEvents()){
|
||||||
eventListeners.inform(e);
|
eventListeners.inform(e);
|
||||||
}
|
}
|
||||||
//inform job inserted
|
|
||||||
stateManager.informJobInserted(aBreak,inRoute,0,0);
|
stateManager.informJobInserted(aBreak,inRoute,0,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -583,6 +583,7 @@ public class VehicleRoutingProblem {
|
||||||
logger.info("setup problem: {}", this);
|
logger.info("setup problem: {}", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "[fleetSize=" + fleetSize + "][#jobs=" + jobs.size() + "][#vehicles=" + vehicles.size() + "][#vehicleTypes=" + vehicleTypes.size() + "][" +
|
return "[fleetSize=" + fleetSize + "][#jobs=" + jobs.size() + "][#vehicles=" + vehicles.size() + "][#vehicleTypes=" + vehicleTypes.size() + "][" +
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue