public static double convertToSeconds(String time, String timeFormat) { return convertToSeconds(time, timeFormat, 0L); }
public Map<Long, Vehicle> createVehicles(TrafficSourceMicro trafficSource) { Preconditions.checkNotNull(trafficSource); Map<Long, Vehicle> vehicles = new HashMap<>(); int size = boundaryConditions.getBoundaryCondition().size(); LOG.info("number of vehicleBoundaryCondition entries={}", size); for (BoundaryConditionType boundaryCondition : boundaryConditions.getBoundaryCondition()) { Vehicle vehicle = createVehicle(boundaryCondition, trafficSource); // round to seconds long time = Math .round(TimeUtilities.convertToSeconds(boundaryCondition.getTime(), timeFormat, timeOffsetMillis)); Preconditions.checkArgument(!vehicles.containsKey(time), "time=" + time + " already used as micro boundary condition"); vehicles.put(time, vehicle); } return vehicles; }
private LinearInterpolatedFunction createSpeedProfile(List<SpeedDataType> speedData) { int size = speedData.size(); double[] times = new double[size]; double[] speeds = new double[size]; for (int i = 0; i < size; i++) { SpeedDataType dataPoint = speedData.get(i); times[i] = TimeUtilities.convertToSeconds(dataPoint.getTime(), timeFormat); speeds[i] = dataPoint.getSpeed(); } return new LinearInterpolatedFunction(times, speeds); }
private void createExternalVehicleData(MovsimExternalVehicleControl input) { for (ExternalVehicleType externalVehicleData : input.getExternalVehicle()) { Preconditions.checkArgument(!externalVehicleData.getSpeedData().isEmpty(), "external vehicle needs at least one (time, speed) data entry"); // no check if (time, speed) input data is sorted in time String entryTime = externalVehicleData.getSpeedData().get(0).getTime(); double entryTimestamp = TimeUtilities.convertToSeconds(entryTime, timeFormat); addVehicleInput(entryTimestamp, externalVehicleData); } }
private void addVehiclesToRoadSegments(List<ExternalVehicleType> vehicleInputs, RoadNetwork roadNetwork) { for (ExternalVehicleType vehicleInput : vehicleInputs) { Vehicle vehicle = createVehicle(vehicleInput); String roadId = vehicleInput.getRoadId(); RoadSegment roadSegment = roadNetwork.findByUserId(roadId); Preconditions .checkNotNull(roadSegment, "cannot find roadSegment with id=" + roadId + " for external vehicle"); roadSegment.addVehicle(vehicle); LinearInterpolatedFunction speedProfile = createSpeedProfile(vehicleInput.getSpeedData()); controlledVehicles.put(vehicle, speedProfile); LOG.info("added externally controlled vehicle={} to roadSegment={}", vehicle, roadSegment); // and add vehicle to removal container int size = vehicleInput.getSpeedData().size(); String exitTime = vehicleInput.getSpeedData().get(size - 1).getTime(); double exitTimestamp = TimeUtilities.convertToSeconds(exitTime, timeFormat); addVehicleToRemoveMap(exitTimestamp, vehicle); LOG.info("external vehicle={} will be removed at timestamp={}", vehicle, exitTimestamp); } }