/** * Provides a {@link MASConfiguration} that configures a MAS that is * controlled centrally by a {@link Solver}. * @param solverCreator The solver creator to use for instantiating solvers. * @param nameSuffix A string which is append to the toString() for the * configuration. * @return A new configuration. */ public static MASConfiguration solverConfiguration( StochasticSupplier<? extends Solver> solverCreator, String nameSuffix) { return MASConfiguration.pdptwBuilder() .addEventHandler(AddVehicleEvent.class, VehicleCreator.INSTANCE) .addModel(Builder.create(solverCreator)) .setName("Central-" + solverCreator.toString() + nameSuffix) .build(); }
/** * Adds the specified {@link TimedEventHandler}s. * @param type The type of event to handle. * @param handler The handler to add. * @return This, as per the builder pattern. */ public <T extends TimedEvent> Builder addEventHandler(Class<T> type, TimedEventHandler<T> handler) { checkSerializable(handler); eventHandlers.put(type, handler); return this; }
.addEventHandler(AddDepotEvent.class, AddDepotEvent.namedHandler()) .addEventHandler(AddParcelEvent.class, AddParcelEvent.namedHandler()) .addEventHandler(AddVehicleEvent.class, CustomVehicleHandler.INSTANCE) .addEventHandler(TimeOutEvent.class, TimeOutEvent.ignoreHandler()) .addModel(StatsTracker.builder()) .build())
.addEventHandler(AddDepotEvent.class, AddDepotEvent.namedHandler()) .addEventHandler(AddParcelEvent.class, AddParcelEvent.namedHandler()) .addEventHandler(AddVehicleEvent.class, CustomVehicleHandler.INSTANCE) .addEventHandler(TimeOutEvent.class, TimeOutEvent.ignoreHandler()) .addModel(StatsTracker.builder()) .build())
.withThreads(1) .addConfiguration(MASConfiguration.pdptwBuilder() .setName("GradientFieldConfiguration") .addEventHandler(AddVehicleEvent.class, VehicleHandler.INSTANCE) .addEventHandler(AddParcelEvent.class, ParcelHandler.INSTANCE) .addModel(GradientModel.builder()) .build()) .addScenario(scenario) .showGui(viewBuilder)
.withThreads(1) .addConfiguration(MASConfiguration.pdptwBuilder() .setName("GradientFieldConfiguration") .addEventHandler(AddVehicleEvent.class, VehicleHandler.INSTANCE) .addEventHandler(AddParcelEvent.class, ParcelHandler.INSTANCE) .addModel(GradientModel.builder()) .build()) .addScenario(scenario) .showGui(viewBuilder)
/** * Constructs a new {@link MASConfiguration} that uses a * {@link RealtimeSolver} created by the specified <code>solverSupplier</code> * to control all vehicles. * @param solverSupplier A {@link StochasticSupplier} that should create * instances of {@link RealtimeSolver}. * @param nameSuffix The suffix to the name of the {@link MASConfiguration}. * The name is formatted as * <code>RtCentral-[solverSupplier][nameSuffix]</code>. * @return A new {@link MASConfiguration} instance. */ public static MASConfiguration solverConfiguration( StochasticSupplier<? extends RealtimeSolver> solverSupplier, String nameSuffix) { return configBuilder(solverSupplier, nameSuffix) .addModel(builder(solverSupplier)) .build(); } // TODO create builder
/** * Creates a new {@link Builder} with default handlers for PDPTW problems. The * default handlers are: * <ul> * <li>{@link TimeOutEvent} is handled by {@link TimeOutEvent#ignoreHandler()} * </li> * <li>{@link AddParcelEvent} is handled by * {@link AddParcelEvent#defaultHandler()}</li> * <li>{@link AddDepotEvent} is handled by * {@link AddDepotEvent#defaultHandler()}</li> * </ul> * Each of these default handlers may be overridden by calls to * {@link Builder#addEventHandler(Class, TimedEventHandler)}. * @return A new {@link Builder}. */ public static Builder pdptwBuilder() { return new Builder().addDefaultPDPTWHandlers(); }
/** * Creates a new {@link Builder} with default handlers for PDPTW problems. The * default handlers are: * <ul> * <li>{@link TimeOutEvent} is handled by {@link TimeOutEvent#ignoreHandler()} * </li> * <li>{@link AddParcelEvent} is handled by * {@link AddParcelEvent#defaultHandler()}</li> * <li>{@link AddDepotEvent} is handled by * {@link AddDepotEvent#defaultHandler()}</li> * </ul> * Each of these default handlers may be overridden by calls to * {@link Builder#addEventHandler(Class, TimedEventHandler)}. * @return A new {@link Builder}. */ public static Builder pdptwBuilder() { return new Builder().addDefaultPDPTWHandlers(); }
/** * @return A new {@link Builder}. */ public static Builder builder() { return new Builder(); }
/** * Adds the specified model builders. * @param models The model builders to add. * @return This, as per the builder pattern. */ public Builder addModels(Iterable<? extends ModelBuilder<?, ?>> models) { for (final ModelBuilder<?, ?> mb : models) { addModel(mb); } return this; }
/** * Creates a new copying {@link Builder}. * @param config The configuration to copy all settings from into the created * builder. * @return A new {@link Builder} instance initialized with the same settings * as the specified configuration. */ public static Builder builder(MASConfiguration config) { return new Builder(config); }
/** * @return A new {@link Builder}. */ public static Builder builder() { return new Builder(); }
public static MASConfiguration solverConfigurationAdapt( StochasticSupplier<? extends Solver> solverSupplier, String nameSuffix, boolean threadGrouping) { return configBuilder(solverSupplier, nameSuffix) .addModel(builder(AdapterSupplier.create(solverSupplier)) .withThreadGrouping(threadGrouping)) .build(); }
/** * Adds the specified model builders. * @param models The model builders to add. * @return This, as per the builder pattern. */ public Builder addModels(Iterable<? extends ModelBuilder<?, ?>> models) { for (final ModelBuilder<?, ?> mb : models) { addModel(mb); } return this; }
Builder addDefaultPDPTWHandlers() { return addEventHandler(TimeOutEvent.class, TimeOutEvent.ignoreHandler()) .addEventHandler(AddDepotEvent.class, AddDepotEvent.defaultHandler()) .addEventHandler(AddParcelEvent.class, AddParcelEvent.defaultHandler()); }
/** * Adds the specified model builder. * @param model The model builder to add. * @return This, as per the builder pattern. */ public Builder addModel(ModelBuilder<?, ?> model) { checkSerializable(model); modelsBuilder.add(model); return this; }
/** * Creates a new copying {@link Builder}. * @param config The configuration to copy all settings from into the created * builder. * @return A new {@link Builder} instance initialized with the same settings * as the specified configuration. */ public static Builder builder(MASConfiguration config) { return new Builder(config); }
Builder addDefaultPDPTWHandlers() { return addEventHandler(TimeOutEvent.class, TimeOutEvent.ignoreHandler()) .addEventHandler(AddDepotEvent.class, AddDepotEvent.defaultHandler()) .addEventHandler(AddParcelEvent.class, AddParcelEvent.defaultHandler()); }
/** * Adds the specified {@link TimedEventHandler}s. * @param type The type of event to handle. * @param handler The handler to add. * @return This, as per the builder pattern. */ public <T extends TimedEvent> Builder addEventHandler(Class<T> type, TimedEventHandler<T> handler) { checkSerializable(handler); eventHandlers.put(type, handler); return this; }