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

modify solutionCostCalculation internally

This commit is contained in:
Stefan Schroeder 2013-10-10 14:56:28 +02:00
parent 432f2073d0
commit fe0e0f54b0
3 changed files with 18 additions and 5 deletions

View file

@ -212,7 +212,7 @@ class StateUpdates {
totalOperationCost += transportCost; totalOperationCost += transportCost;
totalOperationCost += actCost; totalOperationCost += actCost;
totalOperationCost += getFixCosts(); // totalOperationCost += getFixCosts();
states.putRouteState(vehicleRoute, StateTypes.COSTS, new StateImpl(totalOperationCost)); states.putRouteState(vehicleRoute, StateTypes.COSTS, new StateImpl(totalOperationCost));

View file

@ -69,6 +69,7 @@ import basics.algo.VehicleRoutingAlgorithmListeners.PrioritizedVRAListener;
import basics.algo.VehicleRoutingAlgorithmListeners.Priority; import basics.algo.VehicleRoutingAlgorithmListeners.Priority;
import basics.io.AlgorithmConfig; import basics.io.AlgorithmConfig;
import basics.io.AlgorithmConfigXmlReader; import basics.io.AlgorithmConfigXmlReader;
import basics.route.Vehicle;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;
@ -536,10 +537,16 @@ public class VehicleRoutingAlgorithms {
public void calculateCosts(VehicleRoutingProblemSolution solution) { public void calculateCosts(VehicleRoutingProblemSolution solution) {
double costs = 0.0; double costs = 0.0;
for(VehicleRoute route : solution.getRoutes()){ for(VehicleRoute route : solution.getRoutes()){
costs += stateManager.getRouteState(route, StateTypes.COSTS).toDouble(); costs += stateManager.getRouteState(route, StateTypes.COSTS).toDouble() + getFixedCosts(route.getVehicle());
} }
solution.setCost(costs); solution.setCost(costs);
} }
private double getFixedCosts(Vehicle vehicle) {
if(vehicle == null) return 0.0;
if(vehicle.getType() == null) return 0.0;
return vehicle.getType().getVehicleCostParams().fix;
}
}; };
return calc; return calc;
} }

View file

@ -186,8 +186,8 @@ public class GendreauPostOptTest {
routes.add(route); routes.add(route);
// routes.add(new VehicleRoute(getEmptyTour(),getDriver(),getNoVehicle())); // routes.add(new VehicleRoute(getEmptyTour(),getDriver(),getNoVehicle()));
// routes.add(new VehicleRoute(getEmptyTour(),getDriver(),getNoVehicle())); // routes.add(new VehicleRoute(getEmptyTour(),getDriver(),getNoVehicle()));
VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(routes, states.getRouteState(route, StateTypes.COSTS).toDouble()); VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(routes, states.getRouteState(route, StateTypes.COSTS).toDouble() + getFixedCosts(routes));
assertEquals(110.0, sol.getCost(), 0.5); assertEquals(110.0, sol.getCost(), 0.5);
@ -209,10 +209,16 @@ public class GendreauPostOptTest {
assertEquals(80.0,newSolution.getCost(),0.5); assertEquals(80.0,newSolution.getCost(),0.5);
} }
private double getFixedCosts(Collection<VehicleRoute> routes) {
double c = 0.0;
for(VehicleRoute r : routes){ c += r.getVehicle().getType().getVehicleCostParams().fix; }
return c;
}
private double getCosts(VehicleRoutingProblemSolution newSolution, StateManagerImpl states) { private double getCosts(VehicleRoutingProblemSolution newSolution, StateManagerImpl states) {
double c = 0.0; double c = 0.0;
for(VehicleRoute r : newSolution.getRoutes()){ for(VehicleRoute r : newSolution.getRoutes()){
c += states.getRouteState(r, StateTypes.COSTS).toDouble(); c += states.getRouteState(r, StateTypes.COSTS).toDouble() + r.getVehicle().getType().getVehicleCostParams().fix;
} }
return c; return c;
} }