@Override public StopCondition getStopCondition() { return StopConditions.and( StatsStopConditions.vehiclesDoneAndBackAtDepot(), StatsStopConditions.timeOutEvent()); }
static Scenario createScenario(long... delays) { final long endTime = 15 * 60 * 1000; final VehicleDTO vehicle = VehicleDTO.builder() .startPosition(new Point(5, 5)) .availabilityTimeWindow(TimeWindow.create(0, endTime)) .build(); final Scenario.Builder scenario = Scenario.builder() .addEvent(AddDepotEvent.create(-1, new Point(5, 5))) .addEvent(AddVehicleEvent.create(-1, vehicle)) .addEvent(AddVehicleEvent.create(-1, vehicle)) .addEvent(TimeOutEvent.create(endTime)) .addModel(PDPRoadModel.builder(RoadModelBuilders.plane()) .withAllowVehicleDiversion(true)) .addModel(DefaultPDPModel.builder()) .addModel(TimeModel.builder().withTickLength(250)) .setStopCondition(StopConditions.and( StatsStopConditions.vehiclesDoneAndBackAtDepot(), StatsStopConditions.timeOutEvent())); final long[] dls = new long[3]; System.arraycopy(delays, 0, dls, 0, delays.length); scenario .addEvent(createParcel(0, dls[0], new Point(1, 1), new Point(9, 1))); scenario .addEvent(createParcel(1, dls[1], new Point(1, 2), new Point(9, 2))); scenario .addEvent(createParcel(2, dls[2], new Point(9, 9), new Point(1, 9))); return scenario.build(); }
StatsStopConditions.vehiclesDoneAndBackAtDepot())) .build();
StatsStopConditions.vehiclesDoneAndBackAtDepot())) .build();
static Simulator.Builder init( TimedEventHandler<AddVehicleEvent> vehicleHandler, Iterable<? extends TimedEvent> events) { final Scenario scenario = Scenario.builder() .addEvent(AddDepotEvent.create(-1, new Point(5, 5))) .addEvent(AddVehicleEvent.create(-1, VehicleDTO.builder().build())) .addEvent(AddVehicleEvent.create(-1, VehicleDTO.builder().build())) .addEvents(events) .build(); final ScenarioController.Builder sb = ScenarioController.builder(scenario) .withEventHandler(AddParcelEvent.class, AddParcelEvent.defaultHandler()) .withEventHandler(AddVehicleEvent.class, vehicleHandler) .withEventHandler(AddDepotEvent.class, AddDepotEvent.defaultHandler()) .withEventHandler(TimeOutEvent.class, TimeOutEvent.ignoreHandler()) .withOrStopCondition(StatsStopConditions.vehiclesDoneAndBackAtDepot()) .withOrStopCondition(StatsStopConditions.timeOutEvent()); return Simulator.builder() .addModel(PDPRoadModel.builder(RoadModelBuilders.plane()) .withAllowVehicleDiversion(true)) .addModel(DefaultPDPModel.builder()) .addModel(TimeModel.builder() .withRealTime() .withStartInClockMode(ClockMode.SIMULATED) .withTickLength(100)) .addModel(sb) .addModel(StatsTracker.builder()); }