/** * Adds an additional stop condition to the controller in AND fashion. The * first stop condition is defined by {@link Scenario#getStopCondition()}. * @param stp The builder that constructs the {@link StopCondition}. * @return A new {@link Builder} instance. * @see StopConditions */ @CheckReturnValue public Builder withAndStopCondition(StopCondition stp) { final StopModelBuilder smb; if (getStopModelBuilder().stopCondition().equals( StopConditions.alwaysFalse())) { smb = StopModelBuilder.create(stp); } else { smb = StopModelBuilder.create(StopConditions.and(getStopModelBuilder() .stopCondition(), stp)); } return create(getScenario(), getEventHandlers(), getNumberOfTicks(), smb, isIgnoreRedundantHandlers()); }
/** * Adds an additional stop condition to the controller in OR fashion. The * first stop condition is defined by {@link Scenario#getStopCondition()}. * @param stp The builder that constructs the {@link StopCondition}. * @return A new {@link Builder} instance. * @see StopConditions */ @CheckReturnValue public Builder withOrStopCondition(StopCondition stp) { final StopModelBuilder smb; if (getStopModelBuilder().stopCondition().equals( StopConditions.alwaysFalse())) { smb = StopModelBuilder.create(stp); } else { smb = StopModelBuilder.create(StopConditions.or(getStopModelBuilder() .stopCondition(), stp)); } return create(getScenario(), getEventHandlers(), getNumberOfTicks(), smb, isIgnoreRedundantHandlers()); }
.withTimeWindowPolicy(TimeWindowPolicies.STRICT)) .setStopCondition( StopConditions.and(StopConditions.alwaysTrue(), StopConditions.limitedTime(1000)));
@Override public StopCondition getStopCondition() { return StopConditions.and( StatsStopConditions.vehiclesDoneAndBackAtDepot(), StatsStopConditions.timeOutEvent()); }
.withEventHandler(EventB.class, new NopHandler<EventB>()) .withEventHandler(EventC.class, new NopHandler<EventC>()) .withAndStopCondition(StopConditions.alwaysTrue())) .build(); .withEventHandler(EventB.class, new NopHandler<EventB>()) .withEventHandler(EventC.class, new NopHandler<EventC>()) .withAndStopCondition(StopConditions.limitedTime(100))) .build();
.setStopCondition(StopConditions.limitedTime(endTime));
.setStopCondition(StopConditions.or( StatsStopConditions.timeOutEvent(), StatsStopConditions.vehiclesDoneAndBackAtDepot()))
/** * Test the default settings of a scenario. */ @Test public void testDefaults() { final Scenario.Builder builder = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS); assertThat(builder.getTimeWindow()) .isEqualTo(TimeWindow.create(0, 8 * 60 * 60 * 1000)); assertThat(builder.getStopCondition()) .isEqualTo(StopConditions.alwaysFalse()); final Scenario scenario = builder.build(); assertTrue(scenario.getModelBuilders().isEmpty()); assertSame(Scenario.DEFAULT_PROBLEM_CLASS, scenario.getProblemClass()); assertEquals("", scenario.getProblemInstanceId()); assertThat(scenario.getStopCondition()).isEqualTo( StopConditions.alwaysFalse()); assertEquals(TimeWindow.create(0, 8 * 60 * 60 * 1000), scenario.getTimeWindow()); }
.instanceId("crazyfast") .scenarioLength(7L) .setStopCondition(StopConditions.alwaysTrue()) .addModel( RoadModelBuilders.plane() StopConditions.alwaysTrue()); assertEquals(1, scenario.getModelBuilders().size()); assertThat(scenario.getModelBuilders().iterator().next()
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(); }
.setStopCondition(StopConditions.limitedTime(endTime));
.setStopCondition(StopConditions.or( StatsStopConditions.timeOutEvent(), StatsStopConditions.vehiclesDoneAndBackAtDepot()))
/** * Adds an additional stop condition to the controller in AND fashion. The * first stop condition is defined by {@link Scenario#getStopCondition()}. * @param stp The builder that constructs the {@link StopCondition}. * @return A new {@link Builder} instance. * @see StopConditions */ @CheckReturnValue public Builder withAndStopCondition(StopCondition stp) { final StopModelBuilder smb; if (getStopModelBuilder().stopCondition().equals( StopConditions.alwaysFalse())) { smb = StopModelBuilder.create(stp); } else { smb = StopModelBuilder.create(StopConditions.and(getStopModelBuilder() .stopCondition(), stp)); } return create(getScenario(), getEventHandlers(), getNumberOfTicks(), smb, isIgnoreRedundantHandlers()); }
.scenarioLength(4 * 60 * 60 * 1000L) .setStopCondition( StopConditions.and( StatsStopConditions.anyTardiness(), StatsStopConditions.timeOutEvent()))
/** * Adds an additional stop condition to the controller in OR fashion. The * first stop condition is defined by {@link Scenario#getStopCondition()}. * @param stp The builder that constructs the {@link StopCondition}. * @return A new {@link Builder} instance. * @see StopConditions */ @CheckReturnValue public Builder withOrStopCondition(StopCondition stp) { final StopModelBuilder smb; if (getStopModelBuilder().stopCondition().equals( StopConditions.alwaysFalse())) { smb = StopModelBuilder.create(stp); } else { smb = StopModelBuilder.create(StopConditions.or(getStopModelBuilder() .stopCondition(), stp)); } return create(getScenario(), getEventHandlers(), getNumberOfTicks(), smb, isIgnoreRedundantHandlers()); }