mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
some renaming
This commit is contained in:
parent
3bf9c288ca
commit
2b1203e4ab
8 changed files with 47 additions and 47 deletions
|
|
@ -16,6 +16,7 @@ import org.apache.log4j.Logger;
|
|||
|
||||
import util.Neighborhood;
|
||||
import algorithms.HardConstraints.HardRouteLevelConstraint;
|
||||
import algorithms.MarginalsCalculus.Marginals;
|
||||
import basics.Job;
|
||||
import basics.Service;
|
||||
import basics.costs.VehicleRoutingTransportCosts;
|
||||
|
|
@ -76,8 +77,8 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
if(jobToInsert == null) throw new IllegalStateException("jobToInsert is missing.");
|
||||
if(newVehicle == null || newVehicle instanceof NoVehicle) throw new IllegalStateException("newVehicle is missing.");
|
||||
|
||||
InsertionFacts iFacts = new InsertionFacts(currentRoute, jobToInsert, newVehicle, newDriver, newVehicleDepartureTime);
|
||||
if(!hardRouteLevelConstraint.fulfilled(new InsertionScenario(iFacts, null))){
|
||||
InsertionContext insertionContext = new InsertionContext(currentRoute, jobToInsert, newVehicle, newDriver, newVehicleDepartureTime);
|
||||
if(!hardRouteLevelConstraint.fulfilled(insertionContext)){
|
||||
return InsertionData.noInsertionFound();
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
break;
|
||||
}
|
||||
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
||||
Marginals mc = calculate(iFacts, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||
if(mc != null){
|
||||
if(mc.getAdditionalCosts() < bestCost){
|
||||
bestCost = mc.getAdditionalCosts();
|
||||
|
|
@ -116,7 +117,7 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
}
|
||||
End nextAct = end;
|
||||
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
||||
Marginals mc = calculate(iFacts, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||
if(mc != null) {
|
||||
if(mc.getAdditionalCosts() < bestCost){
|
||||
bestCost = mc.getAdditionalCosts();
|
||||
|
|
@ -135,7 +136,7 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
return insertionData;
|
||||
}
|
||||
|
||||
public Marginals calculate(InsertionFacts iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double departureTimeAtPrevAct) {
|
||||
public Marginals calculate(InsertionContext iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double departureTimeAtPrevAct) {
|
||||
return marginalCalculus.calculate(iFacts, prevAct, nextAct, newAct, departureTimeAtPrevAct);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ class HardConstraints {
|
|||
|
||||
interface HardRouteLevelConstraint {
|
||||
|
||||
public boolean fulfilled(InsertionScenario iScenario);
|
||||
public boolean fulfilled(InsertionContext insertionContext);
|
||||
|
||||
}
|
||||
|
||||
interface HardActivityLevelConstraint {
|
||||
|
||||
public boolean fulfilled(InsertionFacts iFacts, TourActivity act, double arrTime);
|
||||
public boolean fulfilled(InsertionContext iFacts, TourActivity act, double arrTime);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -27,10 +27,10 @@ class HardConstraints {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean fulfilled(InsertionScenario iScenario) {
|
||||
int currentLoad = (int) states.getRouteState(iScenario.getiFacts().getRoute(), StateTypes.LOAD).toDouble();
|
||||
Service service = (Service) iScenario.getiFacts().getJob();
|
||||
if(currentLoad + service.getCapacityDemand() > iScenario.getiFacts().getNewVehicle().getCapacity()){
|
||||
public boolean fulfilled(InsertionContext insertionContext) {
|
||||
int currentLoad = (int) states.getRouteState(insertionContext.getRoute(), StateTypes.LOAD).toDouble();
|
||||
Service service = (Service) insertionContext.getJob();
|
||||
if(currentLoad + service.getCapacityDemand() > insertionContext.getNewVehicle().getCapacity()){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -47,7 +47,7 @@ class HardConstraints {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean fulfilled(InsertionFacts iFacts, TourActivity act, double arrTime) {
|
||||
public boolean fulfilled(InsertionContext iFacts, TourActivity act, double arrTime) {
|
||||
if(arrTime > states.getActivityState(act, StateTypes.LATEST_OPERATION_START_TIME).toDouble()){
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import basics.route.Driver;
|
|||
import basics.route.Vehicle;
|
||||
import basics.route.VehicleRoute;
|
||||
|
||||
class InsertionFacts {
|
||||
class InsertionContext {
|
||||
|
||||
private VehicleRoute route;
|
||||
private Job job;
|
||||
|
|
@ -48,7 +48,7 @@ class InsertionFacts {
|
|||
return newDepTime;
|
||||
}
|
||||
|
||||
public InsertionFacts(VehicleRoute route, Job job, Vehicle newVehicle,
|
||||
public InsertionContext(VehicleRoute route, Job job, Vehicle newVehicle,
|
||||
Driver newDriver, double newDepTime) {
|
||||
super();
|
||||
this.route = route;
|
||||
|
|
@ -2,9 +2,9 @@ package algorithms;
|
|||
|
||||
class InsertionScenario {
|
||||
|
||||
InsertionFacts iFacts;
|
||||
InsertionContext iFacts;
|
||||
InsertionData iData;
|
||||
public InsertionScenario(InsertionFacts iFacts, InsertionData iData) {
|
||||
public InsertionScenario(InsertionContext iFacts, InsertionData iData) {
|
||||
super();
|
||||
this.iFacts = iFacts;
|
||||
this.iData = iData;
|
||||
|
|
@ -12,7 +12,7 @@ class InsertionScenario {
|
|||
/**
|
||||
* @return the iFacts
|
||||
*/
|
||||
public InsertionFacts getiFacts() {
|
||||
public InsertionContext getiFacts() {
|
||||
return iFacts;
|
||||
}
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
package algorithms;
|
||||
|
||||
class Marginals {
|
||||
|
||||
private double additionalCosts;
|
||||
private double additionalTime;
|
||||
public Marginals(double additionalCosts, double additionalTime) {
|
||||
super();
|
||||
this.additionalCosts = additionalCosts;
|
||||
this.additionalTime = additionalTime;
|
||||
}
|
||||
/**
|
||||
* @return the additionalCosts
|
||||
*/
|
||||
public double getAdditionalCosts() {
|
||||
return additionalCosts;
|
||||
}
|
||||
/**
|
||||
* @return the additionalTime
|
||||
*/
|
||||
public double getAdditionalTime() {
|
||||
return additionalTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -4,6 +4,32 @@ import basics.route.TourActivity;
|
|||
|
||||
interface MarginalsCalculus {
|
||||
|
||||
Marginals calculate(InsertionFacts iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct);
|
||||
class Marginals {
|
||||
|
||||
private double additionalCosts;
|
||||
private double additionalTime;
|
||||
public Marginals(double additionalCosts, double additionalTime) {
|
||||
super();
|
||||
this.additionalCosts = additionalCosts;
|
||||
this.additionalTime = additionalTime;
|
||||
}
|
||||
/**
|
||||
* @return the additionalCosts
|
||||
*/
|
||||
public double getAdditionalCosts() {
|
||||
return additionalCosts;
|
||||
}
|
||||
/**
|
||||
* @return the additionalTime
|
||||
*/
|
||||
public double getAdditionalTime() {
|
||||
return additionalTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Marginals calculate(InsertionContext iContext, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class MarginalsCalculusTriangleInequality implements MarginalsCalculus{
|
|||
}
|
||||
|
||||
@Override
|
||||
public Marginals calculate(InsertionFacts iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct) {
|
||||
public Marginals calculate(InsertionContext iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct) {
|
||||
double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle());
|
||||
double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle());
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public class BuildCVRPAlgoFromScratchTest {
|
|||
HardActivityLevelConstraint hardActLevelConstraint = new HardActivityLevelConstraint() {
|
||||
|
||||
@Override
|
||||
public boolean fulfilled(InsertionFacts iFacts, TourActivity act, double arrTime) {
|
||||
public boolean fulfilled(InsertionContext iFacts, TourActivity act, double arrTime) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue