mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
rename VehicleBuilder to Builder; adapt VehicleFleetManagerTest to
changes in VehicleFleetManager
This commit is contained in:
parent
c1849a9d5a
commit
7386ba7309
24 changed files with 137 additions and 91 deletions
|
|
@ -62,7 +62,7 @@ final class CalculatesVehTypeDepServiceInsertion implements JobInsertionCalculat
|
||||||
Collection<Vehicle> relevantVehicles = new ArrayList<Vehicle>();
|
Collection<Vehicle> relevantVehicles = new ArrayList<Vehicle>();
|
||||||
if(!(selectedVehicle instanceof NoVehicle)) {
|
if(!(selectedVehicle instanceof NoVehicle)) {
|
||||||
relevantVehicles.add(selectedVehicle);
|
relevantVehicles.add(selectedVehicle);
|
||||||
relevantVehicles.addAll(fleetManager.getAvailableVehicle(selectedVehicle.getType().getTypeId(),selectedVehicle.getLocationId()));
|
relevantVehicles.addAll(fleetManager.getAvailableVehicles(selectedVehicle.getType().getTypeId(),selectedVehicle.getLocationId()));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
relevantVehicles.addAll(fleetManager.getAvailableVehicles());
|
relevantVehicles.addAll(fleetManager.getAvailableVehicles());
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ final class FindCheaperVehicleAlgo {
|
||||||
path.addAll(vehicleRoute.getTourActivities().getActivities());
|
path.addAll(vehicleRoute.getTourActivities().getActivities());
|
||||||
path.add(vehicleRoute.getEnd());
|
path.add(vehicleRoute.getEnd());
|
||||||
|
|
||||||
for(Vehicle vehicle : fleetManager.getAvailableVehicle(vehicleRoute.getVehicle().getType().getTypeId(), vehicleRoute.getVehicle().getLocationId())){
|
for(Vehicle vehicle : fleetManager.getAvailableVehicles(vehicleRoute.getVehicle().getType().getTypeId(), vehicleRoute.getVehicle().getLocationId())){
|
||||||
// Vehicle vehicle = fleetManager.getEmptyVehicle(vehicleType);
|
// Vehicle vehicle = fleetManager.getEmptyVehicle(vehicleType);
|
||||||
if(vehicle.getType().getTypeId().equals(vehicleRoute.getVehicle().getType().getTypeId())){
|
if(vehicle.getType().getTypeId().equals(vehicleRoute.getVehicle().getType().getTypeId())){
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -92,13 +92,13 @@ class InfiniteVehicles implements VehicleFleetManager{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<? extends Vehicle> getAvailableVehicles() {
|
public Collection<Vehicle> getAvailableVehicles() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<? extends Vehicle> getAvailableVehicle(
|
public Collection<Vehicle> getAvailableVehicles(
|
||||||
String withoutThisType, String locationId) {
|
String withoutThisType, String locationId) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,8 @@ interface VehicleFleetManager {
|
||||||
|
|
||||||
abstract void unlockAll();
|
abstract void unlockAll();
|
||||||
|
|
||||||
abstract Collection<? extends Vehicle> getAvailableVehicles();
|
abstract Collection<Vehicle> getAvailableVehicles();
|
||||||
|
|
||||||
Collection<? extends Vehicle> getAvailableVehicle(String withoutThisType, String locationId);
|
Collection<Vehicle> getAvailableVehicles(String withoutThisType, String locationId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
* this type and location. If so, it returns this penalty vehicle. If not, no vehicle with this type and location is returned.
|
* this type and location. If so, it returns this penalty vehicle. If not, no vehicle with this type and location is returned.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Collection<? extends Vehicle> getAvailableVehicles() {
|
public Collection<Vehicle> getAvailableVehicles() {
|
||||||
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
for(TypeKey key : typeMapOfAvailableVehicles.keySet()){
|
for(TypeKey key : typeMapOfAvailableVehicles.keySet()){
|
||||||
if(!typeMapOfAvailableVehicles.get(key).isEmpty()){
|
if(!typeMapOfAvailableVehicles.get(key).isEmpty()){
|
||||||
|
|
@ -195,7 +195,7 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
* @return collection of available vehicles without the vehicles that have the typeId 'withoutThisType' AND the locationId 'withThisLocation'.
|
* @return collection of available vehicles without the vehicles that have the typeId 'withoutThisType' AND the locationId 'withThisLocation'.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Collection<? extends Vehicle> getAvailableVehicle(String withoutThisType, String withThisLocationId) {
|
public Collection<Vehicle> getAvailableVehicles(String withoutThisType, String withThisLocationId) {
|
||||||
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
TypeKey thisKey = new TypeKey(withoutThisType,withThisLocationId);
|
TypeKey thisKey = new TypeKey(withoutThisType,withThisLocationId);
|
||||||
for(TypeKey key : typeMapOfAvailableVehicles.keySet()){
|
for(TypeKey key : typeMapOfAvailableVehicles.keySet()){
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ import basics.route.Start;
|
||||||
import basics.route.TimeWindow;
|
import basics.route.TimeWindow;
|
||||||
import basics.route.Vehicle;
|
import basics.route.Vehicle;
|
||||||
import basics.route.VehicleImpl;
|
import basics.route.VehicleImpl;
|
||||||
import basics.route.VehicleImpl.VehicleBuilder;
|
import basics.route.VehicleImpl.Builder;
|
||||||
import basics.route.VehicleRoute;
|
import basics.route.VehicleRoute;
|
||||||
import basics.route.VehicleType;
|
import basics.route.VehicleType;
|
||||||
import basics.route.VehicleTypeImpl;
|
import basics.route.VehicleTypeImpl;
|
||||||
|
|
@ -284,7 +284,7 @@ public class VrpXMLReader{
|
||||||
for(HierarchicalConfiguration vehicleConfig : vehicleConfigs){
|
for(HierarchicalConfiguration vehicleConfig : vehicleConfigs){
|
||||||
String vehicleId = vehicleConfig.getString("id");
|
String vehicleId = vehicleConfig.getString("id");
|
||||||
if(vehicleId == null) throw new IllegalStateException("vehicleId is missing.");
|
if(vehicleId == null) throw new IllegalStateException("vehicleId is missing.");
|
||||||
VehicleBuilder builder = VehicleImpl.VehicleBuilder.newInstance(vehicleId);
|
Builder builder = VehicleImpl.Builder.newInstance(vehicleId);
|
||||||
String typeId = vehicleConfig.getString("typeId");
|
String typeId = vehicleConfig.getString("typeId");
|
||||||
if(typeId == null) throw new IllegalStateException("typeId is missing.");
|
if(typeId == null) throw new IllegalStateException("typeId is missing.");
|
||||||
VehicleTypeImpl type = types.get(typeId);
|
VehicleTypeImpl type = types.get(typeId);
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public class VehicleImpl implements Vehicle {
|
||||||
public static class NoVehicle extends VehicleImpl {
|
public static class NoVehicle extends VehicleImpl {
|
||||||
|
|
||||||
public NoVehicle() {
|
public NoVehicle() {
|
||||||
super(VehicleBuilder.newInstance("noVehicle").setType(VehicleTypeImpl.newInstance(null, 0, null)));
|
super(Builder.newInstance("noVehicle").setType(VehicleTypeImpl.newInstance(null, 0, null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCapacity(){
|
public int getCapacity(){
|
||||||
|
|
@ -40,8 +40,8 @@ public class VehicleImpl implements Vehicle {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class VehicleBuilder {
|
public static class Builder {
|
||||||
static Logger log = Logger.getLogger(VehicleBuilder.class);
|
static Logger log = Logger.getLogger(Builder.class);
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
private String locationId;
|
private String locationId;
|
||||||
|
|
@ -51,32 +51,32 @@ public class VehicleImpl implements Vehicle {
|
||||||
|
|
||||||
private VehicleType type = VehicleTypeImpl.Builder.newInstance("default", 0).build();
|
private VehicleType type = VehicleTypeImpl.Builder.newInstance("default", 0).build();
|
||||||
|
|
||||||
private VehicleBuilder(String id) {
|
private Builder(String id) {
|
||||||
super();
|
super();
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleBuilder setType(VehicleType type){
|
public Builder setType(VehicleType type){
|
||||||
this.type = type;
|
this.type = type;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleBuilder setLocationId(String id){
|
public Builder setLocationId(String id){
|
||||||
this.locationId = id;
|
this.locationId = id;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleBuilder setLocationCoord(Coordinate coord){
|
public Builder setLocationCoord(Coordinate coord){
|
||||||
this.locationCoord = coord;
|
this.locationCoord = coord;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleBuilder setEarliestStart(double start){
|
public Builder setEarliestStart(double start){
|
||||||
this.earliestStart = start;
|
this.earliestStart = start;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleBuilder setLatestArrival(double arr){
|
public Builder setLatestArrival(double arr){
|
||||||
this.latestArrival = arr;
|
this.latestArrival = arr;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
@ -88,7 +88,7 @@ public class VehicleImpl implements Vehicle {
|
||||||
return new VehicleImpl(this);
|
return new VehicleImpl(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static VehicleBuilder newInstance(String vehicleId){ return new VehicleBuilder(vehicleId); }
|
public static Builder newInstance(String vehicleId){ return new Builder(vehicleId); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -109,7 +109,7 @@ public class VehicleImpl implements Vehicle {
|
||||||
|
|
||||||
private final double latestArrival;
|
private final double latestArrival;
|
||||||
|
|
||||||
private VehicleImpl(VehicleBuilder builder){
|
private VehicleImpl(Builder builder){
|
||||||
id = builder.id;
|
id = builder.id;
|
||||||
type = builder.type;
|
type = builder.type;
|
||||||
coord = builder.locationCoord;
|
coord = builder.locationCoord;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public class CalcWithTimeSchedulingTest {
|
||||||
|
|
||||||
public void timeScheduler(){
|
public void timeScheduler(){
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("myVehicle").setEarliestStart(0.0).setLatestArrival(100.0).
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("myVehicle").setEarliestStart(0.0).setLatestArrival(100.0).
|
||||||
setLocationCoord(Coordinate.newInstance(0, 0)).setLocationId("0,0")
|
setLocationCoord(Coordinate.newInstance(0, 0)).setLocationId("0,0")
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("myType", 20).setCostPerDistance(1.0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("myType", 20).setCostPerDistance(1.0).build()).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
|
|
|
||||||
|
|
@ -128,9 +128,9 @@ public class GendreauPostOptTest {
|
||||||
VehicleTypeImpl lightType = VehicleTypeImpl.Builder.newInstance("light", 10).setFixedCost(10).setCostPerDistance(1.0).build();
|
VehicleTypeImpl lightType = VehicleTypeImpl.Builder.newInstance("light", 10).setFixedCost(10).setCostPerDistance(1.0).build();
|
||||||
VehicleTypeImpl heavyType = VehicleTypeImpl.Builder.newInstance("heavy", 10).setFixedCost(30).setCostPerDistance(2.0).build();
|
VehicleTypeImpl heavyType = VehicleTypeImpl.Builder.newInstance("heavy", 10).setFixedCost(30).setCostPerDistance(2.0).build();
|
||||||
|
|
||||||
lightVehicle1 = VehicleImpl.VehicleBuilder.newInstance("light").setLocationId("0,0").setType(lightType).build();
|
lightVehicle1 = VehicleImpl.Builder.newInstance("light").setLocationId("0,0").setType(lightType).build();
|
||||||
lightVehicle2 = VehicleImpl.VehicleBuilder.newInstance("light2").setLocationId("0,0").setType(lightType).build();
|
lightVehicle2 = VehicleImpl.Builder.newInstance("light2").setLocationId("0,0").setType(lightType).build();
|
||||||
heavyVehicle = VehicleImpl.VehicleBuilder.newInstance("heavy").setLocationId("0,0").setType(heavyType).build();
|
heavyVehicle = VehicleImpl.Builder.newInstance("heavy").setLocationId("0,0").setType(heavyType).build();
|
||||||
|
|
||||||
|
|
||||||
job1 = getService("10,0");
|
job1 = getService("10,0");
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public class TestDepartureTimeOpt {
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
||||||
VehicleType type = mock(VehicleTypeImpl.class);
|
VehicleType type = mock(VehicleTypeImpl.class);
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -78,7 +78,7 @@ public class TestDepartureTimeOpt {
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
||||||
VehicleType type = mock(VehicleTypeImpl.class);
|
VehicleType type = mock(VehicleTypeImpl.class);
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -105,7 +105,7 @@ public class TestDepartureTimeOpt {
|
||||||
public void whenSettingOneCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
public void whenSettingOneCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -133,7 +133,7 @@ public class TestDepartureTimeOpt {
|
||||||
public void whenSettingOneCustWithTWAndDepTimeChoice_depTimeShouldBe0(){
|
public void whenSettingOneCustWithTWAndDepTimeChoice_depTimeShouldBe0(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s", 0).setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -165,7 +165,7 @@ public class TestDepartureTimeOpt {
|
||||||
Service service2 = Service.Builder.newInstance("s2", 0).setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
Service service2 = Service.Builder.newInstance("s2", 0).setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
||||||
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -197,7 +197,7 @@ public class TestDepartureTimeOpt {
|
||||||
Service service2 = Service.Builder.newInstance("s2", 0).setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
Service service2 = Service.Builder.newInstance("s2", 0).setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
||||||
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("vehLoc").setLocationCoord(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType", 0).build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ public class TestTourStateUpdaterWithService {
|
||||||
states.initialiseStateOfJobs(services);
|
states.initialiseStateOfJobs(services);
|
||||||
|
|
||||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("test", 0).build();
|
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("test", 0).build();
|
||||||
vehicle = VehicleImpl.VehicleBuilder.newInstance("testvehicle").setType(type).setLocationId("0,0")
|
vehicle = VehicleImpl.Builder.newInstance("testvehicle").setType(type).setLocationId("0,0")
|
||||||
.setEarliestStart(0.0).setLatestArrival(50.0).build();
|
.setEarliestStart(0.0).setLatestArrival(50.0).build();
|
||||||
|
|
||||||
tour = new TourActivities();
|
tour = new TourActivities();
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import algorithms.VehicleFleetManager.TypeKey;
|
import basics.route.PenaltyVehicleType;
|
||||||
import basics.route.Vehicle;
|
import basics.route.Vehicle;
|
||||||
import basics.route.VehicleImpl;
|
import basics.route.VehicleImpl;
|
||||||
import basics.route.VehicleTypeImpl;
|
import basics.route.VehicleTypeImpl;
|
||||||
|
|
@ -41,38 +41,32 @@ public class TestVehicleFleetManager extends TestCase{
|
||||||
public void setUp(){
|
public void setUp(){
|
||||||
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
|
|
||||||
v1 = VehicleImpl.VehicleBuilder.newInstance("standard").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("standard", 0).build()).build();
|
v1 = VehicleImpl.Builder.newInstance("standard").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("standard", 0).build()).build();
|
||||||
v2 = VehicleImpl.VehicleBuilder.newInstance("foo").setLocationId("fooLoc").setType(VehicleTypeImpl.Builder.newInstance("foo", 0).build()).build();
|
v2 = VehicleImpl.Builder.newInstance("foo").setLocationId("fooLoc").setType(VehicleTypeImpl.Builder.newInstance("foo", 0).build()).build();
|
||||||
|
|
||||||
vehicles.add(v1);
|
vehicles.add(v1);
|
||||||
vehicles.add(v2);
|
vehicles.add(v2);
|
||||||
fleetManager = new VehicleFleetManagerImpl(vehicles);
|
fleetManager = new VehicleFleetManagerImpl(vehicles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetTypes(){
|
public void testGetVehicles(){
|
||||||
Collection<TypeKey> types = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(2, types.size());
|
assertEquals(2, vehicles.size());
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetVehicle(){
|
|
||||||
TypeKey typeKey = new TypeKey(v1.getType().getTypeId(),v1.getLocationId());
|
|
||||||
Vehicle v = fleetManager.getEmptyVehicle(typeKey);
|
|
||||||
assertEquals(v.getId(), v1.getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLock(){
|
public void testLock(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<TypeKey> types = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(1, types.size());
|
assertEquals(1, vehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLockTwice(){
|
public void testLockTwice(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<TypeKey> types = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(1, types.size());
|
assertEquals(1, vehicles.size());
|
||||||
try{
|
try{
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<TypeKey> types_ = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles_ = fleetManager.getAvailableVehicles();
|
||||||
assertFalse(true);
|
assertFalse(true);
|
||||||
}
|
}
|
||||||
catch(IllegalStateException e){
|
catch(IllegalStateException e){
|
||||||
|
|
@ -80,21 +74,73 @@ public class TestVehicleFleetManager extends TestCase{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetTypesWithout(){
|
public void testGetVehiclesWithout(){
|
||||||
TypeKey typeKey = new TypeKey(v1.getType().getTypeId(),v1.getLocationId());
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles(v1.getType().getTypeId(),v1.getLocationId());
|
||||||
Collection<TypeKey> types = fleetManager.getAvailableVehicleTypes(typeKey);
|
|
||||||
|
|
||||||
assertEquals(new TypeKey(v2.getType().getTypeId(),v2.getLocationId()), types.iterator().next());
|
assertEquals(v2, vehicles.iterator().next());
|
||||||
assertEquals(1, types.size());
|
assertEquals(1, vehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testUnlock(){
|
public void testUnlock(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<TypeKey> types = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(1, types.size());
|
assertEquals(1, vehicles.size());
|
||||||
fleetManager.unlock(v1);
|
fleetManager.unlock(v1);
|
||||||
Collection<TypeKey> types_ = fleetManager.getAvailableVehicleTypes();
|
Collection<Vehicle> vehicles_ = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(2, types_.size());
|
assertEquals(2, vehicles_.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWithPenalty_whenHavingOneRegularVehicleAvailable_noPenaltyVehicleIsReturn(){
|
||||||
|
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setLocationId("loc").
|
||||||
|
setType(VehicleTypeImpl.Builder.newInstance("standard", 0).build()).build();
|
||||||
|
|
||||||
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
|
vehicles.add(v1);
|
||||||
|
vehicles.add(v2);
|
||||||
|
vehicles.add(penalty4standard);
|
||||||
|
VehicleFleetManager fleetManager = new VehicleFleetManagerImpl(vehicles);
|
||||||
|
|
||||||
|
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
|
||||||
|
assertEquals(2, availableVehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testWithPenalty_whenHavingTwoRegularVehicleAvailablePlusOnePenaltyVehicle_andOneIsLocked_returnTheOtherRegularVehicle(){
|
||||||
|
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard", 0).build();
|
||||||
|
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
|
||||||
|
|
||||||
|
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setLocationId("loc").
|
||||||
|
setType(penaltyVehicleType).build();
|
||||||
|
|
||||||
|
Vehicle v3 = VehicleImpl.Builder.newInstance("standard_v3").setLocationId("loc").
|
||||||
|
setType(penaltyType).build();
|
||||||
|
|
||||||
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
|
vehicles.add(v1);
|
||||||
|
vehicles.add(v2);
|
||||||
|
vehicles.add(penalty4standard);
|
||||||
|
vehicles.add(v3);
|
||||||
|
VehicleFleetManager fleetManager = new VehicleFleetManagerImpl(vehicles);
|
||||||
|
fleetManager.lock(v1);
|
||||||
|
fleetManager.lock(v2);
|
||||||
|
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
|
||||||
|
assertEquals(1, availableVehicles.size());
|
||||||
|
assertEquals(v3, availableVehicles.iterator().next());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWithPenalty_whenHavingNoRegularVehicleAvailable_penaltyVehicleIsReturned(){
|
||||||
|
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard", 0).build();
|
||||||
|
|
||||||
|
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setLocationId("loc").
|
||||||
|
setType(penaltyType).build();
|
||||||
|
|
||||||
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
|
vehicles.add(v1);
|
||||||
|
vehicles.add(v2);
|
||||||
|
vehicles.add(penalty4standard);
|
||||||
|
VehicleFleetManager fleetManager = new VehicleFleetManagerImpl(vehicles);
|
||||||
|
fleetManager.lock(v1);
|
||||||
|
fleetManager.lock(v2);
|
||||||
|
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
|
||||||
|
assertEquals(penalty4standard, availableVehicles.iterator().next());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,10 @@ public class VehicleRoutingProblemBuilderTest {
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("t1", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("t1", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("t2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("t2", 200).build();
|
||||||
|
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("yo").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("yo").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("yo").setType(type1).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("yo").setType(type1).build();
|
||||||
Vehicle v3 = VehicleImpl.VehicleBuilder.newInstance("v3").setLocationId("yo").setType(type2).build();
|
Vehicle v3 = VehicleImpl.Builder.newInstance("v3").setLocationId("yo").setType(type2).build();
|
||||||
Vehicle v4 = VehicleImpl.VehicleBuilder.newInstance("v4").setLocationId("yo").setType(type2).build();
|
Vehicle v4 = VehicleImpl.Builder.newInstance("v4").setLocationId("yo").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ public class VrpWriterV2Test {
|
||||||
// builder.assignVehicleType(depot, VehicleType.Builder.newInstance("vehType", 20).build());
|
// builder.assignVehicleType(depot, VehicleType.Builder.newInstance("vehType", 20).build());
|
||||||
// builder.assignVehicleType(depot, VehicleType.Builder.newInstance("vehType2", 200).build());
|
// builder.assignVehicleType(depot, VehicleType.Builder.newInstance("vehType2", 200).build());
|
||||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("myVehicle").setLocationId("loc").setType(type).build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("myVehicle").setLocationId("loc").setType(type).build();
|
||||||
builder.addVehicle(vehicle);
|
builder.addVehicle(vehicle);
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
@ -83,8 +83,8 @@ public class VrpWriterV2Test {
|
||||||
// builder.addDepot(depot2);
|
// builder.addDepot(depot2);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicleType(type1);
|
builder.addVehicleType(type1);
|
||||||
builder.addVehicleType(type2);
|
builder.addVehicleType(type2);
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
@ -103,8 +103,8 @@ public class VrpWriterV2Test {
|
||||||
// builder.addDepot(depot2);
|
// builder.addDepot(depot2);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicleType(type1);
|
builder.addVehicleType(type1);
|
||||||
builder.addVehicleType(type2);
|
builder.addVehicleType(type2);
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
@ -122,8 +122,8 @@ public class VrpWriterV2Test {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicleType(type1);
|
builder.addVehicleType(type1);
|
||||||
builder.addVehicleType(type2);
|
builder.addVehicleType(type2);
|
||||||
|
|
@ -155,8 +155,8 @@ public class VrpWriterV2Test {
|
||||||
builder.setFleetSize(FleetSize.FINITE);
|
builder.setFleetSize(FleetSize.FINITE);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicleType(type1);
|
builder.addVehicleType(type1);
|
||||||
builder.addVehicleType(type2);
|
builder.addVehicleType(type2);
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,8 @@ public class VrpWriterV3Test {
|
||||||
builder.setFleetSize(FleetSize.FINITE);
|
builder.setFleetSize(FleetSize.FINITE);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType", 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2", 200).build();
|
||||||
Vehicle v1 = VehicleImpl.VehicleBuilder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.VehicleBuilder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicleType(type1);
|
builder.addVehicleType(type1);
|
||||||
builder.addVehicleType(type2);
|
builder.addVehicleType(type2);
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
vehicle = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("yo", 0).build()).build();
|
vehicle = VehicleImpl.Builder.newInstance("v").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("yo", 0).build()).build();
|
||||||
driver = DriverImpl.noDriver();
|
driver = DriverImpl.noDriver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,7 +88,7 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingEmptyTour_tourIterIteratesOverAnEmptyList(){
|
public void whenBuildingEmptyTour_tourIterIteratesOverAnEmptyList(){
|
||||||
TourActivities tour = new TourActivities();
|
TourActivities tour = new TourActivities();
|
||||||
Vehicle v = VehicleImpl.VehicleBuilder.newInstance("v").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("yo", 0).build()).build();
|
Vehicle v = VehicleImpl.Builder.newInstance("v").setLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("yo", 0).build()).build();
|
||||||
VehicleRoute route = VehicleRoute.newInstance(tour,DriverImpl.noDriver(),v);
|
VehicleRoute route = VehicleRoute.newInstance(tour,DriverImpl.noDriver(),v);
|
||||||
Iterator<TourActivity> iter = route.getTourActivities().iterator();
|
Iterator<TourActivity> iter = route.getTourActivities().iterator();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ public class MultipleDepotExample {
|
||||||
for(Coordinate depotCoord : Arrays.asList(firstDepotCoord,second,third,fourth)){
|
for(Coordinate depotCoord : Arrays.asList(firstDepotCoord,second,third,fourth)){
|
||||||
for(int i=0;i<nuOfVehicles;i++){
|
for(int i=0;i<nuOfVehicles;i++){
|
||||||
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setCostPerDistance(1.0).build();
|
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setCostPerDistance(1.0).build();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance(depotCounter + "_" + (i+1) + "_vehicle").setLocationCoord(depotCoord).setType(vehicleType).build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance(depotCounter + "_" + (i+1) + "_vehicle").setLocationCoord(depotCoord).setType(vehicleType).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
depotCounter++;
|
depotCounter++;
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public class MultipleDepotExampleWithPenaltyVehicles {
|
||||||
for(int i=0;i<nuOfVehicles;i++){
|
for(int i=0;i<nuOfVehicles;i++){
|
||||||
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setCostPerDistance(1.0).build();
|
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setCostPerDistance(1.0).build();
|
||||||
String vehicleId = depotCounter + "_" + (i+1) + "_vehicle";
|
String vehicleId = depotCounter + "_" + (i+1) + "_vehicle";
|
||||||
VehicleImpl.VehicleBuilder vehicleBuilder = VehicleImpl.VehicleBuilder.newInstance(vehicleId);
|
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance(vehicleId);
|
||||||
vehicleBuilder.setLocationCoord(depotCoord);
|
vehicleBuilder.setLocationCoord(depotCoord);
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
vehicleBuilder.setLatestArrival(maxDuration);
|
vehicleBuilder.setLatestArrival(maxDuration);
|
||||||
|
|
@ -64,7 +64,7 @@ public class MultipleDepotExampleWithPenaltyVehicles {
|
||||||
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setFixedCost(50).setCostPerDistance(3.0).build();
|
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type", capacity).setFixedCost(50).setCostPerDistance(3.0).build();
|
||||||
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
|
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
|
||||||
String vehicleId = depotCounter + "_vehicle#penalty";
|
String vehicleId = depotCounter + "_vehicle#penalty";
|
||||||
VehicleImpl.VehicleBuilder vehicleBuilder = VehicleImpl.VehicleBuilder.newInstance(vehicleId);
|
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance(vehicleId);
|
||||||
vehicleBuilder.setLocationCoord(depotCoord);
|
vehicleBuilder.setLocationCoord(depotCoord);
|
||||||
vehicleBuilder.setType(penaltyVehicleType);
|
vehicleBuilder.setType(penaltyVehicleType);
|
||||||
vehicleBuilder.setLatestArrival(maxDuration);
|
vehicleBuilder.setLatestArrival(maxDuration);
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ public class RefuseCollectionExample {
|
||||||
typeBuilder.setCostPerDistance(1.0);
|
typeBuilder.setCostPerDistance(1.0);
|
||||||
VehicleTypeImpl bigType = typeBuilder.build();
|
VehicleTypeImpl bigType = typeBuilder.build();
|
||||||
|
|
||||||
VehicleImpl.VehicleBuilder vehicleBuilder = VehicleImpl.VehicleBuilder.newInstance("vehicle");
|
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setLocationId("1");
|
vehicleBuilder.setLocationId("1");
|
||||||
vehicleBuilder.setType(bigType);
|
vehicleBuilder.setType(bigType);
|
||||||
Vehicle bigVehicle = vehicleBuilder.build();
|
Vehicle bigVehicle = vehicleBuilder.build();
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ import basics.VehicleRoutingProblemSolution;
|
||||||
import basics.io.VrpXMLWriter;
|
import basics.io.VrpXMLWriter;
|
||||||
import basics.route.Vehicle;
|
import basics.route.Vehicle;
|
||||||
import basics.route.VehicleImpl;
|
import basics.route.VehicleImpl;
|
||||||
import basics.route.VehicleImpl.VehicleBuilder;
|
import basics.route.VehicleImpl.Builder;
|
||||||
import basics.route.VehicleType;
|
import basics.route.VehicleType;
|
||||||
import basics.route.VehicleTypeImpl;
|
import basics.route.VehicleTypeImpl;
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ public class SimpleExample {
|
||||||
/*
|
/*
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
VehicleBuilder vehicleBuilder = VehicleImpl.VehicleBuilder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setLocationCoord(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setLocationCoord(Coordinate.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
Vehicle vehicle = vehicleBuilder.build();
|
Vehicle vehicle = vehicleBuilder.build();
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ public class ChristophidesReader {
|
||||||
Coordinate depotCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
Coordinate depotCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
||||||
VehicleTypeImpl vehicleType = VehicleType.Builder.newInstance("christophidesType", vehicleCapacity).
|
VehicleTypeImpl vehicleType = VehicleType.Builder.newInstance("christophidesType", vehicleCapacity).
|
||||||
setCostPerDistance(1.0).setFixedCost(100).build();
|
setCostPerDistance(1.0).setFixedCost(100).build();
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("christophidesVehicle").setLatestArrival(endTime).setLocationId(id).setLocationCoord(depotCoord).
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("christophidesVehicle").setLatestArrival(endTime).setLocationId(id).setLocationCoord(depotCoord).
|
||||||
setType(vehicleType).build();
|
setType(vehicleType).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ import util.Coordinate;
|
||||||
|
|
||||||
import basics.VehicleRoutingProblem.FleetSize;
|
import basics.VehicleRoutingProblem.FleetSize;
|
||||||
import basics.route.VehicleImpl;
|
import basics.route.VehicleImpl;
|
||||||
import basics.route.VehicleImpl.VehicleBuilder;
|
import basics.route.VehicleImpl.Builder;
|
||||||
import basics.route.VehicleType;
|
import basics.route.VehicleType;
|
||||||
import basics.route.VehicleTypeImpl;
|
import basics.route.VehicleTypeImpl;
|
||||||
import basics.Service;
|
import basics.Service;
|
||||||
|
|
@ -83,7 +83,7 @@ public class CordeauReader {
|
||||||
|
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
String line = null;
|
String line = null;
|
||||||
List<List<VehicleBuilder>> vehiclesAtDepot = new ArrayList<List<VehicleBuilder>>();
|
List<List<Builder>> vehiclesAtDepot = new ArrayList<List<Builder>>();
|
||||||
int depotCounter = 0;
|
int depotCounter = 0;
|
||||||
while((line = readLine(reader)) != null){
|
while((line = readLine(reader)) != null){
|
||||||
line = line.replace("\r", "");
|
line = line.replace("\r", "");
|
||||||
|
|
@ -103,9 +103,9 @@ public class CordeauReader {
|
||||||
int capacity = Integer.parseInt(tokens[1].trim());
|
int capacity = Integer.parseInt(tokens[1].trim());
|
||||||
VehicleTypeImpl vehicleType = VehicleType.Builder.newInstance(counter + "_cordeauType", capacity).
|
VehicleTypeImpl vehicleType = VehicleType.Builder.newInstance(counter + "_cordeauType", capacity).
|
||||||
setCostPerDistance(1.0).setFixedCost(0).build();
|
setCostPerDistance(1.0).setFixedCost(0).build();
|
||||||
List<VehicleBuilder> builders = new ArrayList<VehicleImpl.VehicleBuilder>();
|
List<Builder> builders = new ArrayList<VehicleImpl.Builder>();
|
||||||
for(int vehicleCounter=0;vehicleCounter<nOfVehiclesAtEachDepot;vehicleCounter++){
|
for(int vehicleCounter=0;vehicleCounter<nOfVehiclesAtEachDepot;vehicleCounter++){
|
||||||
VehicleBuilder vBuilder = VehicleImpl.VehicleBuilder.newInstance(depot+"_"+(vehicleCounter+1) + "_cordeauVehicle");
|
Builder vBuilder = VehicleImpl.Builder.newInstance(depot+"_"+(vehicleCounter+1) + "_cordeauVehicle");
|
||||||
vBuilder.setLatestArrival(duration).setType(vehicleType);
|
vBuilder.setLatestArrival(duration).setType(vehicleType);
|
||||||
builders.add(vBuilder);
|
builders.add(vBuilder);
|
||||||
}
|
}
|
||||||
|
|
@ -121,11 +121,11 @@ public class CordeauReader {
|
||||||
}
|
}
|
||||||
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
||||||
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
||||||
List<VehicleBuilder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
List<Builder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
||||||
int cap = 0;
|
int cap = 0;
|
||||||
double latestArrTime = 0.0;
|
double latestArrTime = 0.0;
|
||||||
Coordinate coord = null;
|
Coordinate coord = null;
|
||||||
for(VehicleBuilder vBuilder : vBuilders){
|
for(Builder vBuilder : vBuilders){
|
||||||
vBuilder.setLocationCoord(depotCoord);
|
vBuilder.setLocationCoord(depotCoord);
|
||||||
VehicleImpl vehicle = vBuilder.build();
|
VehicleImpl vehicle = vBuilder.build();
|
||||||
cap = vehicle.getCapacity();
|
cap = vehicle.getCapacity();
|
||||||
|
|
@ -137,7 +137,7 @@ public class CordeauReader {
|
||||||
for(int i=0;i<5;i++){
|
for(int i=0;i<5;i++){
|
||||||
VehicleTypeImpl penaltyType = VehicleType.Builder.newInstance(counter + "_penaltyType", cap).
|
VehicleTypeImpl penaltyType = VehicleType.Builder.newInstance(counter + "_penaltyType", cap).
|
||||||
setCostPerDistance(3.0).setFixedCost(50).build();
|
setCostPerDistance(3.0).setFixedCost(50).build();
|
||||||
VehicleImpl penaltyVehicle = VehicleImpl.VehicleBuilder.newInstance(counter + "_" + (i+1) + "_penaltyVehicle").setLatestArrival(latestArrTime)
|
VehicleImpl penaltyVehicle = VehicleImpl.Builder.newInstance(counter + "_" + (i+1) + "_penaltyVehicle").setLatestArrival(latestArrTime)
|
||||||
.setType(penaltyType).setLocationCoord(coord).build();
|
.setType(penaltyType).setLocationCoord(coord).build();
|
||||||
vrpBuilder.addVehicle(penaltyVehicle);
|
vrpBuilder.addVehicle(penaltyVehicle);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ public class LuiShenReader {
|
||||||
|
|
||||||
VehicleTypeImpl type = typeBuilder.build();
|
VehicleTypeImpl type = typeBuilder.build();
|
||||||
|
|
||||||
Vehicle reprVehicle = VehicleImpl.VehicleBuilder.newInstance(vehicleId).setEarliestStart(start).setLatestArrival(end).
|
Vehicle reprVehicle = VehicleImpl.Builder.newInstance(vehicleId).setEarliestStart(start).setLatestArrival(end).
|
||||||
setLocationId(locationId).setLocationCoord(coord).setType(type).build();
|
setLocationId(locationId).setLocationCoord(coord).setType(type).build();
|
||||||
|
|
||||||
vrpBuilder.addVehicle(reprVehicle);
|
vrpBuilder.addVehicle(reprVehicle);
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ public class SolomonReader {
|
||||||
|
|
||||||
VehicleTypeImpl vehicleType = typeBuilder.build();
|
VehicleTypeImpl vehicleType = typeBuilder.build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.VehicleBuilder.newInstance("solomonVehicle").setEarliestStart(start).setLatestArrival(end)
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("solomonVehicle").setEarliestStart(start).setLatestArrival(end)
|
||||||
.setLocationId(customerId).setLocationCoord(coord).setType(vehicleType).build();
|
.setLocationId(customerId).setLocationCoord(coord).setType(vehicleType).build();
|
||||||
|
|
||||||
// vrpBuilder.addVehicleType(vehicleType);
|
// vrpBuilder.addVehicleType(vehicleType);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue