List of usage examples for com.google.common.collect ImmutableRangeMap get
@Override
@Nullable
public V get(K key)
From source file:com.github.rinde.datgen.pdptw.DatasetGenerator.java
static ScenarioGenerator createGenerator(final long officeHours, long urgency, double scale, TimeSeriesGenerator tsg, final ImmutableRangeMap<Double, Double> dynamismRangeCenters, LocationGenerator lg, Builder b, int numOrdersPerScale) { final ScenarioGenerator.Builder builder = ScenarioGenerator.builder(); ModelBuilder<? extends RoadModel, ? extends RoadUser> roadModelBuilder; DepotGenerator depotBuilder;/* w w w. j av a2s .c o m*/ VehicleGenerator vehicleBuilder; final List<DynamicSpeeds.Builder> dynamicSpeedsBuilders = new ArrayList<>(); for (int i = 0; i < b.numberOfShockwaves.size(); i++) { dynamicSpeedsBuilders.add(DynamicSpeeds.builder()); } if (!b.graphSup.isPresent()) { roadModelBuilder = RoadModelBuilders.plane().withMaxSpeed(VEHICLE_SPEED_KMH) .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR).withDistanceUnit(SI.KILOMETER); depotBuilder = Depots.singleCenteredDepot(); vehicleBuilder = Vehicles.builder().capacities(constant(1)).centeredStartPositions() .creationTimes(constant(-1L)) .numberOfVehicles( constant(DoubleMath.roundToInt(VEHICLES_PER_SCALE * scale, RoundingMode.UNNECESSARY))) .speeds(constant(VEHICLE_SPEED_KMH)).timeWindowsAsScenario().build(); } else { final Point startingLocation = getCenterMostPoint(b.graphSup.get().get()); if (b.cacheSup.isPresent() || b.cachePath.isPresent()) { roadModelBuilder = CachedDynamicGraphRoadModel .builder( ListenableGraph .supplier((Supplier<? extends Graph<MultiAttributeData>>) b.graphSup.get()), null, b.cachePath.get()) .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR).withDistanceUnit(SI.KILOMETER) .withModificationCheck(false); } else { roadModelBuilder = RoadModelBuilders .dynamicGraph(ListenableGraph .supplier((Supplier<? extends Graph<MultiAttributeData>>) b.graphSup.get())) .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR).withDistanceUnit(SI.KILOMETER) .withModificationCheck(false); } depotBuilder = Depots.builder().positions(StochasticSuppliers.constant(startingLocation)).build(); vehicleBuilder = Vehicles.builder().capacities(constant(1)) .startPositions(StochasticSuppliers.constant(startingLocation)).creationTimes(constant(-1L)) .numberOfVehicles( constant(DoubleMath.roundToInt(VEHICLES_PER_SCALE * scale, RoundingMode.UNNECESSARY))) .speeds(constant(VEHICLE_SPEED_KMH)).timeWindowsAsScenario().build(); // dynamic speed events for (int i = 0; i < dynamicSpeedsBuilders.size(); i++) { final DynamicSpeeds.Builder dynamicSpeedsBuilder = dynamicSpeedsBuilders.get(i); dynamicSpeedsBuilder.withGraph((Graph<MultiAttributeData>) b.graphSup.get().get()) .creationTimes(constant(-1L)).randomStartConnections() .shockwaveWaitForRecedeDurations(constant(b.scenarioLengthMs / 2)) .numberOfShockwaves(StochasticSuppliers.constant(b.numberOfShockwaves.get(i))); if (b.shockwaveDurations.isPresent()) { dynamicSpeedsBuilder.shockwaveWaitForRecedeDurations(b.shockwaveDurations.get().get(i)); } if (b.shockwaveBehaviours.isPresent()) { dynamicSpeedsBuilder.shockwaveBehaviour(b.shockwaveBehaviours.get().get(i)); } if (b.shockwaveExpandingSpeeds.isPresent()) { dynamicSpeedsBuilder.shockwaveExpandingSpeed(b.shockwaveExpandingSpeeds.get().get(i)); } if (b.shockwaveRecedingSpeeds.isPresent()) { dynamicSpeedsBuilder.shockwaveRecedingSpeed(b.shockwaveRecedingSpeeds.get().get(i)); } if (b.shockwaveCreationTimes.isPresent()) { dynamicSpeedsBuilder.creationTimes(b.shockwaveCreationTimes.get().get(i)); } } ImmutableList<DynamicSpeedGenerator> dsg; if (b.numberOfShockwaves.isEmpty()) { dsg = (ImmutableList<DynamicSpeedGenerator>) DynamicSpeeds.zeroEvents(); } else { final List<DynamicSpeedGenerator> dsgList = new ArrayList<>(); for (final DynamicSpeeds.Builder dsb : dynamicSpeedsBuilders) { dsgList.add(dsb.build()); } dsg = ImmutableList.copyOf(dsgList); } builder.dynamicSpeedGenerators(dsg); } builder // global .addModel(TimeModel.builder().withRealTime().withStartInClockMode(ClockMode.SIMULATED) .withTickLength(TICK_SIZE).withTimeUnit(SI.MILLI(SI.SECOND))) .scenarioLength(b.scenarioLengthMs) .setStopCondition(StopConditions.and(StatsStopConditions.vehiclesDoneAndBackAtDepot(), StatsStopConditions.timeOutEvent())) // parcels .parcels( Parcels.builder() .announceTimes(TimeSeries.filter( TimeSeries.filter(tsg, TimeSeries.numEventsPredicate(DoubleMath.roundToInt( numOrdersPerScale * scale, RoundingMode.UNNECESSARY))), new Predicate<List<Double>>() { @Override public boolean apply(@Nullable List<Double> input) { final double dynamism = Metrics .measureDynamism(verifyNotNull(input), officeHours); final boolean isInBin = dynamismRangeCenters.get(dynamism) != null; if (isInBin) { System.out.println("Dynamism " + dynamism + " is in bin!"); } return isInBin; } })) .pickupDurations(constant(PICKUP_DURATION)) .deliveryDurations(constant(DELIVERY_DURATION)).neededCapacities(constant(0)) .locations(lg).withGraph(b.graphSup) .timeWindows(new CustomTimeWindowGenerator(urgency)).build()) // vehicles .vehicles(vehicleBuilder) // depots .depots(depotBuilder); // models builder.addModel(PDPDynamicGraphRoadModel .builderForDynamicGraphRm( (ModelBuilder<? extends DynamicGraphRoadModel, ? extends RoadUser>) roadModelBuilder) .withAllowVehicleDiversion(true)); builder.addModel(DefaultPDPModel.builder().withTimeWindowPolicy(TimeWindowPolicies.TARDY_ALLOWED)); return builder.build(); }