mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
separate waiting time feature from variable start times
This commit is contained in:
parent
70d6ae1797
commit
c8eb1dd7b4
14 changed files with 148 additions and 1002 deletions
|
|
@ -5,8 +5,7 @@ import jsprit.analysis.toolbox.Plotter;
|
|||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||
import jsprit.core.algorithm.box.Jsprit;
|
||||
import jsprit.core.algorithm.state.StateManager;
|
||||
import jsprit.core.algorithm.state.UpdateDepartureTime;
|
||||
import jsprit.core.algorithm.state.UpdateTimeSlack;
|
||||
import jsprit.core.algorithm.state.UpdateFutureWaitingTimes;
|
||||
import jsprit.core.analysis.SolutionAnalyser;
|
||||
import jsprit.core.problem.Location;
|
||||
import jsprit.core.problem.VehicleRoutingProblem;
|
||||
|
|
@ -38,28 +37,32 @@ public class VariableStartAndWaitingTimeExample {
|
|||
public static void main(String[] args) {
|
||||
|
||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(4.).setCostPerWaitingTime(2.0).build();
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").setCostPerDistance(4.).setCostPerWaitingTime(2.0).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").setCostPerDistance(4.).setCostPerWaitingTime(2.0).build();
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").setCostPerDistance(3.).setCostPerWaitingTime(2.0).build();
|
||||
// VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").setCostPerDistance(4.).setCostPerWaitingTime(2.0).build();
|
||||
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setReturnToDepot(true)
|
||||
.setHasVariableDepartureTime(true).setStartLocation(Location.newInstance(0, 0)).build();
|
||||
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setType(type1).setReturnToDepot(true)
|
||||
.setHasVariableDepartureTime(true).setStartLocation(Location.newInstance(0, 0)).build();
|
||||
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setType(type2).setReturnToDepot(true)
|
||||
.setHasVariableDepartureTime(true).setStartLocation(Location.newInstance(0, 0)).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setReturnToDepot(false)
|
||||
.setStartLocation(Location.newInstance(0, 0))
|
||||
// .setEarliestStart(0).setLatestArrival(400)
|
||||
.build();
|
||||
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setType(type1).setReturnToDepot(false)
|
||||
.setStartLocation(Location.newInstance(0, 0))
|
||||
// .setEarliestStart(0).setLatestArrival(400)
|
||||
.build();
|
||||
// VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setType(type2).setReturnToDepot(true)
|
||||
// .setStartLocation(Location.newInstance(0, 0)).build();
|
||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||
Random r = RandomNumberGeneration.newInstance();
|
||||
for(int i=0;i<40;i++){
|
||||
Service s = Service.Builder.newInstance("s_"+i).setServiceTime(1)
|
||||
Service s = Service.Builder.newInstance("s_"+i).setServiceTime(5)
|
||||
// .setTimeWindow(TimeWindow.newInstance(r.nextInt(50),100+r.nextInt(150)))
|
||||
.setLocation(Location.newInstance(1 - r.nextInt(5), 10 + r.nextInt(10))).build();
|
||||
vrpBuilder.addJob(s);
|
||||
}
|
||||
Service s1 = Service.Builder.newInstance("s12").setLocation(Location.newInstance(-3, 15)).setTimeWindow(TimeWindow.newInstance(20, 60)).build();
|
||||
Service s1 = Service.Builder.newInstance("s12").setLocation(Location.newInstance(-3, 15)).setTimeWindow(TimeWindow.newInstance(290, 600)).build();
|
||||
// Service s4 = Service.Builder.newInstance("s13").setLocation(Location.newInstance(5,15)).setTimeWindow(TimeWindow.newInstance(100, 160)).build();
|
||||
Service s2 = Service.Builder.newInstance("s10").setLocation(Location.newInstance(-1, 15)).setTimeWindow(TimeWindow.newInstance(200, 250)).build();
|
||||
Service s3 = Service.Builder.newInstance("s11").setLocation(Location.newInstance(10, 10)).setTimeWindow(TimeWindow.newInstance(300, 310)).build();
|
||||
vrpBuilder.addJob(s1).addJob(s2).addJob(s3).addVehicle(v4).addVehicle(v2).addVehicle(v3);
|
||||
Service s2 = Service.Builder.newInstance("s10").setLocation(Location.newInstance(-1, 15)).setTimeWindow(TimeWindow.newInstance(0, 250)).build();
|
||||
Service s3 = Service.Builder.newInstance("s11").setLocation(Location.newInstance(10, 10)).setTimeWindow(TimeWindow.newInstance(300, 600)).build();
|
||||
vrpBuilder.addJob(s1).addJob(s2).addJob(s3).addVehicle(v2).addVehicle(v3);
|
||||
vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||
|
||||
|
|
@ -67,8 +70,7 @@ public class VariableStartAndWaitingTimeExample {
|
|||
@Override
|
||||
public VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) {
|
||||
StateManager stateManager = new StateManager(vrp);
|
||||
stateManager.addStateUpdater(new UpdateDepartureTime(vrp.getTransportCosts(), stateManager));
|
||||
stateManager.addStateUpdater(new UpdateTimeSlack(stateManager,vrp.getTransportCosts()));
|
||||
stateManager.addStateUpdater(new UpdateFutureWaitingTimes(stateManager,vrp.getTransportCosts()));
|
||||
ConstraintManager constraintManager = new ConstraintManager(vrp,stateManager);
|
||||
|
||||
return Jsprit.Builder.newInstance(vrp)
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@ import jsprit.analysis.toolbox.Plotter;
|
|||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||
import jsprit.core.algorithm.box.Jsprit;
|
||||
import jsprit.core.algorithm.state.StateManager;
|
||||
import jsprit.core.algorithm.state.UpdateDepartureTime;
|
||||
import jsprit.core.algorithm.state.UpdateTimeSlack;
|
||||
import jsprit.core.algorithm.state.UpdateFutureWaitingTimes;
|
||||
import jsprit.core.problem.Location;
|
||||
import jsprit.core.problem.VehicleRoutingProblem;
|
||||
import jsprit.core.problem.constraint.ConstraintManager;
|
||||
|
|
@ -32,11 +31,11 @@ public class VariableStartAndWaitingTimeExample2 {
|
|||
|
||||
public static void main(String[] args) {
|
||||
|
||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(1.5).setCostPerWaitingTime(1.0).build();
|
||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(1.5).setCostPerWaitingTime(1.).build();
|
||||
// VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").setCostPerDistance(1.5).setCostPerWaitingTime(.0).build();
|
||||
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setReturnToDepot(true)
|
||||
.setHasVariableDepartureTime(false).setStartLocation(Location.newInstance(0, 0)).build();
|
||||
.setStartLocation(Location.newInstance(0, 0)).build();
|
||||
|
||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||
|
||||
|
|
@ -45,7 +44,7 @@ public class VariableStartAndWaitingTimeExample2 {
|
|||
Service s4 = Service.Builder.newInstance("s13").setLocation(Location.newInstance(0, 10)).build();
|
||||
Service s2 = Service.Builder.newInstance("s10").setLocation(Location.newInstance(1, 12)).build();
|
||||
Service s3 = Service.Builder.newInstance("s11").setLocation(Location.newInstance(4, 10)).build();
|
||||
Service s5 = Service.Builder.newInstance("s14").setLocation(Location.newInstance(6, 5)).setTimeWindow(TimeWindow.newInstance(100,220)).build();
|
||||
Service s5 = Service.Builder.newInstance("s14").setLocation(Location.newInstance(6, 5)).setTimeWindow(TimeWindow.newInstance(110,220)).build();
|
||||
vrpBuilder.addJob(s1).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addVehicle(v2);
|
||||
vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||
|
|
@ -54,8 +53,7 @@ public class VariableStartAndWaitingTimeExample2 {
|
|||
@Override
|
||||
public VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) {
|
||||
StateManager stateManager = new StateManager(vrp);
|
||||
stateManager.addStateUpdater(new UpdateDepartureTime(vrp.getTransportCosts(), stateManager));
|
||||
stateManager.addStateUpdater(new UpdateTimeSlack(stateManager,vrp.getTransportCosts()));
|
||||
stateManager.addStateUpdater(new UpdateFutureWaitingTimes(stateManager,vrp.getTransportCosts()));
|
||||
ConstraintManager constraintManager = new ConstraintManager(vrp,stateManager);
|
||||
|
||||
return Jsprit.Builder.newInstance(vrp)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue