@Override public VehicleDTO doDeserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { final Iterator<JsonElement> it = json.getAsJsonArray().iterator(); return VehicleDTO.builder() .availabilityTimeWindow( (TimeWindow) context.deserialize(it.next(), TimeWindow.class)) .capacity(it.next().getAsInt()).speed(it.next().getAsDouble()) .startPosition((Point) context.deserialize(it.next(), Point.class)) .build(); }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof VehicleDTO) { VehicleDTO that = (VehicleDTO) o; return (this.startPosition.equals(that.getStartPosition())) && (Double.doubleToLongBits(this.speed) == Double.doubleToLongBits(that.getSpeed())) && (this.capacity == that.getCapacity()) && (this.availabilityTimeWindow.equals(that.getAvailabilityTimeWindow())); } return false; }
/** * Instantiate a new vehicle based on the specified properties. * @param vehicleDto The data transfer object that holds all vehicle * properties. */ protected Vehicle(VehicleDTO vehicleDto) { dto = vehicleDto; setStartPosition(dto.getStartPosition()); setCapacity(dto.getCapacity()); }
points.add(v.getDto().getStartPosition()); dueDates[index] = fixTWend(v.getDto().getAvailabilityTimeWindow().end(), state.getTime(), timeConverter); v.getDto().getSpeed(), state.getSpeedUnit());
@Override public double getSpeed() { return dto.getSpeed(); }
/** * @return The start position of the vehicle. */ public final Point getStartPosition() { return dto.getStartPosition(); } }
/** * @return The time window in which this vehicle is available. */ public TimeWindow getAvailabilityTimeWindow() { return dto.getAvailabilityTimeWindow(); }
Point vehicleLocation = vso.getLocation(); final Measure<Double, Velocity> maxSpeed = Measure.valueOf(vso.getDto().getSpeed(), state.getSpeedUnit()); snapshot.getPathTo(vehicleLocation, vso.getDto().getStartPosition(), state.getTimeUnit(), maxSpeed, heuristic); stats.totalTravelTime += tt; if (vso.getDto().getAvailabilityTimeWindow().isAfterEnd(time)) { stats.overTime += time - vso.getDto().getAvailabilityTimeWindow().end();
GraphTravelTimes(GraphRoadModel rm, Unit<Duration> tu, Point centerMostPoint, Iterator<Vehicle> vehicles) { roadModel = rm; double max = 0; while (vehicles.hasNext()) { final Vehicle v = vehicles.next(); max = Math.max(max, v.getDTO().getSpeed()); } vehicleSpeed = Measure.valueOf(max, roadModel.getSpeedUnit()); depotLocations = ImmutableList.of(centerMostPoint); this.timeUnit = tu; }
public Point getDepotLocation() { return vehicle.getDto().getStartPosition(); }
Vehicle(VehicleStateObject vso, int ind) { vehicle = vso; endTime = Util.msToNs(vso.getDto().getAvailabilityTimeWindow()).end(); remainingServiceTime = vso.getRemainingServiceTime() > 0 ? Util.msToNs(vso.getRemainingServiceTime()) : 0; index = ind; }
@Override public VehicleDTO doDeserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { final Iterator<JsonElement> it = json.getAsJsonArray().iterator(); return VehicleDTO.builder() .availabilityTimeWindow( (TimeWindow) context.deserialize(it.next(), TimeWindow.class)) .capacity(it.next().getAsInt()).speed(it.next().getAsDouble()) .startPosition((Point) context.deserialize(it.next(), Point.class)) .build(); }
@Override public JsonElement doSerialize(VehicleDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add( context.serialize(src.getAvailabilityTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getCapacity())); arr.add(context.serialize(src.getSpeed())); arr.add(context.serialize(src.getStartPosition())); return arr; } }
/** * Checks whether the vehicles defined for the specified scenario have the * same speed. If the speed is the same it is returned, otherwise an exception * is thrown. * @param s The {@link Scenario} to get the speed from. * @return The vehicle speed if all vehicles have the same speed. * @throws IllegalArgumentException if either: not all vehicles have the same * speed, or there are no vehicles. */ public static double getVehicleSpeed(Scenario s) { double vehicleSpeed = -1d; for (final TimedEvent te : s.getEvents()) { if (te instanceof AddVehicleEvent) { if (vehicleSpeed == -1d) { vehicleSpeed = ((AddVehicleEvent) te).getVehicleDTO().getSpeed(); } else { checkArgument( vehicleSpeed == ((AddVehicleEvent) te).getVehicleDTO().getSpeed(), "All vehicles are expected to have the same speed."); } } } checkArgument(vehicleSpeed > 0, "There are no vehicles in the scenario."); return vehicleSpeed; }
dv2 = new TestVehicle(new Point(0, 0)); for (final Vehicle tv : asList(dv1, dv2)) { rm.addObjectAt(tv, tv.getDTO().getStartPosition()); pm.register(tv);
AGV(Point startPos) { super(VehicleDTO.builder() .capacity(1) .startPosition(startPos) .speed(FactoryExample.AGV_SPEED) .build()); destination = Optional.absent(); agvModel = Optional.absent(); }
/** * Copy the value of the specified vehicle into this builder. * @param dto The dto to copy values from. * @return This, as per the builder pattern. */ public Builder use(VehicleDTO dto) { return startPosition(dto.getStartPosition()) .availabilityTimeWindow(dto.getAvailabilityTimeWindow()) .speed(dto.getSpeed()) .capacity(dto.getCapacity()); }
DefaultTravelTimes(RoadModel rm, Unit<Duration> tu, Iterable<? extends AddDepotEvent> depots, Iterable<? extends AddVehicleEvent> vehicles) { roadModel = rm; double max = 0; for (final AddVehicleEvent ave : vehicles) { max = Math.max(max, ave.getVehicleDTO().getSpeed()); } vehicleSpeed = Measure.valueOf(max, roadModel.getSpeedUnit()); final ImmutableList.Builder<Point> depotBuilder = ImmutableList.builder(); for (final AddDepotEvent ade : depots) { depotBuilder.add(ade.getPosition()); } depotLocations = depotBuilder.build(); timeUnit = tu; }
AGV(Point startPos) { super(VehicleDTO.builder() .capacity(1) .startPosition(startPos) .speed(FactoryExample.AGV_SPEED) .build()); destination = Optional.absent(); agvModel = Optional.absent(); }
@Override public JsonElement doSerialize(VehicleDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add( context.serialize(src.getAvailabilityTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getCapacity())); arr.add(context.serialize(src.getSpeed())); arr.add(context.serialize(src.getStartPosition())); return arr; } }