1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

enable serialize vehicles

This commit is contained in:
hilaminster 2019-10-23 19:16:04 +03:00
parent c0218b3927
commit dfd9d47b18
3 changed files with 14 additions and 9 deletions

View file

@ -42,6 +42,7 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.BreakActivity
import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity;
import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory;
import com.graphhopper.jsprit.core.problem.vehicle.InfiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.InfiniteFleetManagerFactory;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager;
import com.graphhopper.jsprit.core.util.NoiseMaker; import com.graphhopper.jsprit.core.util.NoiseMaker;
import com.graphhopper.jsprit.core.util.RandomNumberGeneration; import com.graphhopper.jsprit.core.util.RandomNumberGeneration;
@ -460,10 +461,13 @@ public class Jsprit {
private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
ini(vrp); ini(vrp);
if (vehicleFleetManager == null) { if (vehicleFleetManager == null) {
Set<Vehicle> vehicles = new HashSet<>();
vehicles.addAll(vrp.getVehicles());
if (vrp.getFleetSize().equals(VehicleRoutingProblem.FleetSize.INFINITE)) { if (vrp.getFleetSize().equals(VehicleRoutingProblem.FleetSize.INFINITE)) {
vehicleFleetManager = new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); vehicleFleetManager = new InfiniteFleetManagerFactory(vehicles).createFleetManager();
} else { } else {
FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vrp.getVehicles());
FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vehicles);
finiteFleetManagerFactory.setRandom(random); finiteFleetManagerFactory.setRandom(random);
vehicleFleetManager = finiteFleetManagerFactory.createFleetManager(); vehicleFleetManager = finiteFleetManagerFactory.createFleetManager();
} }

View file

@ -41,16 +41,14 @@ import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator;
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute;
import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter; import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.Solutions;
import com.graphhopper.jsprit.instance.reader.CordeauReader; import com.graphhopper.jsprit.instance.reader.CordeauReader;
import com.graphhopper.jsprit.util.Examples; import com.graphhopper.jsprit.util.Examples;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class BuildAlgorithmFromScratch { public class BuildAlgorithmFromScratch {
@ -129,8 +127,9 @@ public class BuildAlgorithmFromScratch {
public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) { public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) {
Set<Vehicle> vehicles = new HashSet<>();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); vehicles.addAll(vrp.getVehicles());
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
StateManager stateManager = new StateManager(vrp); StateManager stateManager = new StateManager(vrp);
ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager);

View file

@ -667,7 +667,9 @@ public class VehicleRoutingAlgorithms {
return new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); return new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager();
} else if (vrp.getFleetSize().equals(FleetSize.FINITE)) { } else if (vrp.getFleetSize().equals(FleetSize.FINITE)) {
return new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); Set<Vehicle> vehicles = new HashSet<>();
vehicles.addAll(vrp.getVehicles());
return new FiniteFleetManagerFactory(vehicles).createFleetManager();
} }
throw new IllegalStateException("fleet size can only be infinite or finite. " + throw new IllegalStateException("fleet size can only be infinite or finite. " +
"makes sure your config file contains one of these options"); "makes sure your config file contains one of these options");