Exemple #1
0
  private void writeVehiclesAndTheirTypes(XMLConfiguration xmlConfig) {

    // vehicles
    String vehiclePathString = Schema.VEHICLES + "." + Schema.VEHICLE;
    int counter = 0;
    for (Vehicle vehicle : vrp.getVehicles()) {
      xmlConfig.setProperty(vehiclePathString + "(" + counter + ").id", vehicle.getId());
      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").typeId", vehicle.getType().getTypeId());
      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").startLocation.id",
          vehicle.getStartLocation().getId());
      if (vehicle.getStartLocation().getCoordinate() != null) {
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").startLocation.coord[@x]",
            vehicle.getStartLocation().getCoordinate().getX());
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").startLocation.coord[@y]",
            vehicle.getStartLocation().getCoordinate().getY());
      }
      if (vehicle.getStartLocation().getIndex() != Location.NO_INDEX) {
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").startLocation.index",
            vehicle.getStartLocation().getIndex());
      }

      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").endLocation.id", vehicle.getEndLocation().getId());
      if (vehicle.getEndLocation().getCoordinate() != null) {
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").endLocation.coord[@x]",
            vehicle.getEndLocation().getCoordinate().getX());
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").endLocation.coord[@y]",
            vehicle.getEndLocation().getCoordinate().getY());
      }
      if (vehicle.getEndLocation().getIndex() != Location.NO_INDEX) {
        xmlConfig.setProperty(
            vehiclePathString + "(" + counter + ").endLocation.index",
            vehicle.getEndLocation().getId());
      }
      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").timeSchedule.start",
          vehicle.getEarliestDeparture());
      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").timeSchedule.end", vehicle.getLatestArrival());

      xmlConfig.setProperty(
          vehiclePathString + "(" + counter + ").returnToDepot", vehicle.isReturnToDepot());

      // write skills
      String skillString = getSkillString(vehicle);
      xmlConfig.setProperty(vehiclePathString + "(" + counter + ").skills", skillString);

      counter++;
    }

    // types
    String typePathString = Schema.builder().append(Schema.TYPES).dot(Schema.TYPE).build();
    int typeCounter = 0;
    for (VehicleType type : vrp.getTypes()) {
      xmlConfig.setProperty(typePathString + "(" + typeCounter + ").id", type.getTypeId());

      for (int i = 0; i < type.getCapacityDimensions().getNuOfDimensions(); i++) {
        xmlConfig.setProperty(
            typePathString
                + "("
                + typeCounter
                + ").capacity-dimensions.dimension("
                + i
                + ")[@index]",
            i);
        xmlConfig.setProperty(
            typePathString + "(" + typeCounter + ").capacity-dimensions.dimension(" + i + ")",
            type.getCapacityDimensions().get(i));
      }

      xmlConfig.setProperty(
          typePathString + "(" + typeCounter + ").costs.fixed", type.getVehicleCostParams().fix);
      xmlConfig.setProperty(
          typePathString + "(" + typeCounter + ").costs.distance",
          type.getVehicleCostParams().perDistanceUnit);
      xmlConfig.setProperty(
          typePathString + "(" + typeCounter + ").costs.time",
          type.getVehicleCostParams().perTimeUnit);
      typeCounter++;
    }
  }
Exemple #2
0
  @Before
  public void doBefore() {
    Vehicle vehicle = mock(Vehicle.class);
    VehicleType type = mock(VehicleType.class);
    when(type.getCapacityDimensions())
        .thenReturn(Capacity.Builder.newInstance().addDimension(0, 20).build());
    when(vehicle.getType()).thenReturn(type);

    VehicleRoutingProblem.Builder serviceProblemBuilder =
        VehicleRoutingProblem.Builder.newInstance();
    Service s1 =
        Service.Builder.newInstance("s").addSizeDimension(0, 10).setLocationId("loc").build();
    Service s2 =
        Service.Builder.newInstance("s2").addSizeDimension(0, 5).setLocationId("loc").build();
    serviceProblemBuilder.addJob(s1).addJob(s2);
    final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build();

    final VehicleRoutingProblem.Builder pdProblemBuilder =
        VehicleRoutingProblem.Builder.newInstance();
    Pickup pickup =
        (Pickup)
            Pickup.Builder.newInstance("pick").addSizeDimension(0, 10).setLocationId("loc").build();
    Delivery delivery =
        (Delivery)
            Delivery.Builder.newInstance("del").addSizeDimension(0, 5).setLocationId("loc").build();
    pdProblemBuilder.addJob(pickup).addJob(delivery);
    final VehicleRoutingProblem pdProblem = pdProblemBuilder.build();

    final VehicleRoutingProblem.Builder shipmentProblemBuilder =
        VehicleRoutingProblem.Builder.newInstance();
    Shipment shipment1 =
        Shipment.Builder.newInstance("s1")
            .addSizeDimension(0, 10)
            .setPickupLocation("pick")
            .setDeliveryLocation("del")
            .build();
    Shipment shipment2 =
        Shipment.Builder.newInstance("s2")
            .addSizeDimension(0, 5)
            .setPickupLocation("pick")
            .setDeliveryLocation("del")
            .build();
    shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build();
    final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build();

    VehicleRoute.Builder serviceRouteBuilder = VehicleRoute.Builder.newInstance(vehicle);
    serviceRouteBuilder.setJobActivityFactory(
        new JobActivityFactory() {

          @Override
          public List<AbstractActivity> createActivities(Job job) {
            return serviceProblem.copyAndGetActivities(job);
          }
        });
    serviceRoute = serviceRouteBuilder.addService(s1).addService(s2).build();

    VehicleRoute.Builder pdRouteBuilder = VehicleRoute.Builder.newInstance(vehicle);
    pdRouteBuilder.setJobActivityFactory(
        new JobActivityFactory() {
          @Override
          public List<AbstractActivity> createActivities(Job job) {
            return pdProblem.copyAndGetActivities(job);
          }
        });
    pickup_delivery_route = pdRouteBuilder.addService(pickup).addService(delivery).build();

    VehicleRoute.Builder shipmentRouteBuilder = VehicleRoute.Builder.newInstance(vehicle);
    shipmentRouteBuilder.setJobActivityFactory(
        new JobActivityFactory() {
          @Override
          public List<AbstractActivity> createActivities(Job job) {
            return shipmentProblem.copyAndGetActivities(job);
          }
        });
    shipment_route =
        shipmentRouteBuilder
            .addPickup(shipment1)
            .addPickup(shipment2)
            .addDelivery(shipment2)
            .addDelivery(shipment1)
            .build();

    stateManager = new StateManager(mock(VehicleRoutingProblem.class));
    stateManager.updateLoadStates();
  }