List of usage examples for java.math RoundingMode UNNECESSARY
RoundingMode UNNECESSARY
To view the source code for java.math RoundingMode UNNECESSARY.
Click Source Link
From source file:alfio.model.PriceContainerTest.java
private Stream<Pair<Integer, PriceContainer>> generateTestStream(PriceContainer.VatStatus vatStatus) { List<BigDecimal> vatPercentages = IntStream.range(100, 3000).mapToObj( vatCts -> new BigDecimal(vatCts).divide(new BigDecimal("100.00"), 2, RoundingMode.UNNECESSARY)) .collect(Collectors.toList()); return IntStream.range(1, 500_00).parallel().boxed().flatMap(i -> vatPercentages.stream() .map(vat -> Pair.of(i, new PriceContainerImpl(i, "CHF", vat, vatStatus)))); }
From source file:com.github.rinde.datgen.pdptw.DatasetGenerator.java
Dataset<GeneratedScenario> doGenerate() { final ListeningExecutorService service = MoreExecutors .listeningDecorator(Executors.newFixedThreadPool(builder.numThreads)); final Dataset<GeneratedScenario> dataset = Dataset.naturalOrder(); final List<ScenarioCreator> jobs = new ArrayList<>(); final RandomGenerator rng = new MersenneTwister(builder.randomSeed); final Map<GeneratorSettings, IdSeedGenerator> rngMap = new LinkedHashMap<>(); for (final Long urgency : builder.urgencyLevels) { for (final Double scale : builder.scaleLevels) { for (final Entry<TimeSeriesType, Collection<Range<Double>>> dynLevel : builder.dynamismLevels .asMap().entrySet()) { final int reps = builder.numInstances * dynLevel.getValue().size(); final long urg = urgency * 60 * 1000L; // The office hours is the period in which new orders are accepted, // it is defined as [0,officeHoursLength). final long officeHoursLength; if (urg < halfDiagTT) { officeHoursLength = builder.scenarioLengthMs - twoDiagTT - PICKUP_DURATION - DELIVERY_DURATION; } else { officeHoursLength = builder.scenarioLengthMs - urg - oneAndHalfDiagTT - PICKUP_DURATION - DELIVERY_DURATION; }/*from w ww . jav a 2 s .c o m*/ final int numOrders = DoubleMath.roundToInt(scale * numOrdersPerScale, RoundingMode.UNNECESSARY); final ImmutableMap.Builder<String, String> props = ImmutableMap.builder(); props.put("expected_num_orders", Integer.toString(numOrders)); props.put("pickup_duration", Long.toString(PICKUP_DURATION)); props.put("delivery_duration", Long.toString(DELIVERY_DURATION)); props.put("width_height", String.format("%1.1fx%1.1f", AREA_WIDTH, AREA_WIDTH)); // TODO store this in TimeSeriesType? final RangeSet<Double> rset = TreeRangeSet.create(); for (final Range<Double> r : dynLevel.getValue()) { rset.add(r); } // createTimeSeriesGenerator(dynLevel.getKey(), officeHoursLength, // numOrders, numOrdersPerScale, props); final GeneratorSettings set = GeneratorSettings.builder().setDayLength(builder.scenarioLengthMs) .setOfficeHours(officeHoursLength).setTimeSeriesType(dynLevel.getKey()) .setDynamismRangeCenters(builder.dynamismRangeMap.subRangeMap(rset.span())) .setUrgency(urg).setScale(scale).setNumOrders(numOrders).setProperties(props.build()) .build(); final IdSeedGenerator isg = new IdSeedGenerator(rng.nextLong()); rngMap.put(set, isg); for (int i = 0; i < reps; i++) { final LocationGenerator lg = Locations.builder().min(0d).max(AREA_WIDTH).buildUniform(); final TimeSeriesGenerator tsg2 = createTimeSeriesGenerator(dynLevel.getKey(), officeHoursLength, numOrders, numOrdersPerScale, ImmutableMap.<String, String>builder()); final ScenarioGenerator gen = createGenerator(officeHoursLength, urg, scale, tsg2, set.getDynamismRangeCenters(), lg, builder, numOrdersPerScale); jobs.add(ScenarioCreator.create(isg.next(), set, gen)); } } } } final AtomicLong currentJobs = new AtomicLong(0L); final AtomicLong datasetSize = new AtomicLong(0L); LOGGER.info(" - Submitting " + jobs.size() + " Jobs"); for (final ScenarioCreator job : jobs) { submitJob(currentJobs, service, job, builder.numInstances, dataset, rngMap, datasetSize); } final long targetSize = builder.numInstances * builder.dynamismLevels.values().size() * builder.scaleLevels.size() * builder.urgencyLevels.size(); while (datasetSize.get() < targetSize || dataset.size() < targetSize) { try { // LOGGER.info(" - Waiting, current size ==" + dataset.size()); Thread.sleep(THREAD_SLEEP_DURATION); } catch (final InterruptedException e) { throw new IllegalStateException(e); } } LOGGER.info(" - Shutdown Service, Awaiting Termination"); service.shutdown(); try { service.awaitTermination(1L, TimeUnit.HOURS); } catch (final InterruptedException e) { throw new IllegalStateException(e); } LOGGER.info(" - Returning dataset"); return dataset; }
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;//from w w w . j av a2 s.co 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(); }