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

add javadoc to Vehicle and VehicleImpl

This commit is contained in:
oblonski 2013-12-30 21:45:51 +01:00
parent b6d97d6688
commit 36a3eab299
3 changed files with 133 additions and 45 deletions

View file

@ -18,24 +18,73 @@ package jsprit.core.problem.vehicle;
import jsprit.core.util.Coordinate; import jsprit.core.util.Coordinate;
/**
* Basic interface for vehicle-data.
*
* @author schroeder
*
*/
public interface Vehicle { public interface Vehicle {
/**
* Returns the earliest departure of vehicle which should be the lower bound of this vehicle's departure times.
*
* @return earliest departure time
*/
public abstract double getEarliestDeparture(); public abstract double getEarliestDeparture();
/**
* Returns the latest arrival time at this vehicle's end-location which should be the upper bound of this vehicle's arrival times at end-location.
*
* @return latest arrival time of this vehicle
*
*/
public abstract double getLatestArrival(); public abstract double getLatestArrival();
/**
* Returns the location-id of the this vehicle which should be the start-location of this vehicle.
*
* <p> Consequently, it should be the end-location of this vehicle, if returnToDepot is true.
*
* @return location-id of this vehicle
*/
public abstract String getLocationId(); public abstract String getLocationId();
/**
* Returns the coordinate of this vehicle which should be the coordinate of the start-location of this vehicle.
*
* <p> Consequently, it should be the coordinate of the end-location, if returnToDepot is true.
*
* @return coordinate of this vehicle
*/
public abstract Coordinate getCoord(); public abstract Coordinate getCoord();
/**
* Returns the {@link VehicleType} of this vehicle.
*
* @return {@link VehicleType} of this vehicle
*/
public abstract VehicleType getType(); public abstract VehicleType getType();
/**
* Returns the id of this vehicle.
*
* @return id
*/
public abstract String getId(); public abstract String getId();
/**
* Returns the capacity of this vehicle.
*
* @return capacity
*/
public abstract int getCapacity(); public abstract int getCapacity();
/**
* Returns true if vehicle returns to depot, false otherwise.
*
* @return true if isReturnToDepot
*/
public abstract boolean isReturnToDepot(); public abstract boolean isReturnToDepot();
} }

View file

@ -22,6 +22,7 @@ import org.apache.log4j.Logger;
/** /**
* Implementation of {@link Vehicle}.
* *
* @author stefan schroeder * @author stefan schroeder
* *
@ -29,10 +30,23 @@ import org.apache.log4j.Logger;
public class VehicleImpl implements Vehicle { public class VehicleImpl implements Vehicle {
/**
* @deprecated use createNoVehicle() instead.
*
* @return
*/
@Deprecated
public static NoVehicle noVehicle(){ public static NoVehicle noVehicle(){
return createNoVehicle(); return createNoVehicle();
} }
/**
* Extension of {@link VehicleImpl} representing an unspecified vehicle with the id 'noVehicle'
* (to avoid null).
*
* @author schroeder
*
*/
public static class NoVehicle extends VehicleImpl { public static class NoVehicle extends VehicleImpl {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -47,9 +61,11 @@ public class VehicleImpl implements Vehicle {
} }
/** /**
* builds the vehicle. * Builder that builds the vehicle.
* *
* <p>by default, it returns to the depot. * <p>By default, earliestDepartureTime is 0.0, latestDepartureTime is Double.MAX_VALUE,
* it returns to the depot and its {@link VehicleType} is the DefaultType with typeId equal to 'default'
* and a capacity of 0.
* *
* @author stefan * @author stefan
* *
@ -67,41 +83,92 @@ public class VehicleImpl implements Vehicle {
private VehicleType type = VehicleTypeImpl.Builder.newInstance("default", 0).build(); private VehicleType type = VehicleTypeImpl.Builder.newInstance("default", 0).build();
/**
* Constructs the builder with the vehicleId.
*
* @param id
*/
private Builder(String id) { private Builder(String id) {
super(); super();
this.id = id; this.id = id;
} }
/**
* Sets the {@link VehicleType}.
*
* @param type
* @return this builder
*/
public Builder setType(VehicleType type){ public Builder setType(VehicleType type){
this.type = type; this.type = type;
return this; return this;
} }
/**
* Sets the flag whether the vehicle must return to depot or not.
*
* @param returnToDepot
* @return this builder
*/
public Builder setReturnToDepot(boolean returnToDepot){ public Builder setReturnToDepot(boolean returnToDepot){
this.returnToDepot = returnToDepot; this.returnToDepot = returnToDepot;
return this; return this;
} }
/**
* Sets location-id of the vehicle which should be its start-location.
*
* <p>If returnToDepot is true, it is also its end-location.
*
* @param id
* @return this builder
*/
public Builder setLocationId(String id){ public Builder setLocationId(String id){
this.locationId = id; this.locationId = id;
return this; return this;
} }
/**
* Sets coordinate of the vehicle which should be the coordinate of start-location.
*
* <p>If returnToDepot is true, it is also the coordinate of the end-location.
*
* @param coord
* @return this builder
*/
public Builder setLocationCoord(Coordinate coord){ public Builder setLocationCoord(Coordinate coord){
this.locationCoord = coord; this.locationCoord = coord;
return this; return this;
} }
/**
* Sets earliest-start of vehicle which should be the lower bound of the vehicle's departure times.
*
* @param start
* @return this builder
*/
public Builder setEarliestStart(double start){ public Builder setEarliestStart(double start){
this.earliestStart = start; this.earliestStart = start;
return this; return this;
} }
/**
* Sets the latest arrival at vehicle's end-location which is the upper bound of the vehicle's arrival times.
*
* @param arr
* @return this builder
*/
public Builder setLatestArrival(double arr){ public Builder setLatestArrival(double arr){
this.latestArrival = arr; this.latestArrival = arr;
return this; return this;
} }
/**
* Builds and returns the vehicle.
*
* @return vehicle
* @throw IllegalStateException if both locationId and locationCoord is not set
*/
public VehicleImpl build(){ public VehicleImpl build(){
if(locationId == null && locationCoord != null) locationId = locationCoord.toString(); if(locationId == null && locationCoord != null) locationId = locationCoord.toString();
if(locationId == null && locationCoord == null) throw new IllegalStateException("locationId and locationCoord is missing."); if(locationId == null && locationCoord == null) throw new IllegalStateException("locationId and locationCoord is missing.");
@ -109,11 +176,21 @@ public class VehicleImpl implements Vehicle {
return new VehicleImpl(this); return new VehicleImpl(this);
} }
/**
* Returns new instance of vehicle builder.
*
* @param vehicleId
* @return vehicle builder
*/
public static Builder newInstance(String vehicleId){ return new Builder(vehicleId); } public static Builder newInstance(String vehicleId){ return new Builder(vehicleId); }
} }
/**
* Returns empty/noVehicle which is a vehicle having no capacity, no type and no reasonable id.
*
* @return emptyVehicle
*/
public static NoVehicle createNoVehicle(){ public static NoVehicle createNoVehicle(){
return new NoVehicle(); return new NoVehicle();
} }
@ -130,7 +207,7 @@ public class VehicleImpl implements Vehicle {
private final double latestArrival; private final double latestArrival;
private boolean returnToDepot; private final boolean returnToDepot;
private VehicleImpl(Builder builder){ private VehicleImpl(Builder builder){
id = builder.id; id = builder.id;
@ -142,8 +219,6 @@ public class VehicleImpl implements Vehicle {
returnToDepot = builder.returnToDepot; returnToDepot = builder.returnToDepot;
} }
@Override @Override
public String toString() { public String toString() {
return "[id="+id+"][type="+type+"][locationId="+locationId+"][coord=" + coord + "]"; return "[id="+id+"][type="+type+"][locationId="+locationId+"][coord=" + coord + "]";
@ -153,75 +228,38 @@ public class VehicleImpl implements Vehicle {
return coord; return coord;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getEarliestDeparture()
*/
@Override @Override
public double getEarliestDeparture() { public double getEarliestDeparture() {
return earliestDeparture; return earliestDeparture;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getLatestArrival()
*/
@Override @Override
public double getLatestArrival() { public double getLatestArrival() {
return latestArrival; return latestArrival;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getLocationId()
*/
@Override @Override
public String getLocationId() { public String getLocationId() {
return locationId; return locationId;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getType()
*/
@Override @Override
public VehicleType getType() { public VehicleType getType() {
return type; return type;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getId()
*/
@Override @Override
public String getId() { public String getId() {
return id; return id;
} }
/*
* (non-Javadoc)
*
* @see org.matsim.contrib.freight.vrp.basics.Vehicle#getCapacity()
*/
@Override @Override
public int getCapacity() { public int getCapacity() {
return type.getCapacity(); return type.getCapacity();
} }
/**
* @return the returnToDepot
*/
public boolean isReturnToDepot() { public boolean isReturnToDepot() {
return returnToDepot; return returnToDepot;
} }
} }

View file

@ -42,6 +42,7 @@ public class TestVehicleFleetManager extends TestCase{
v1 = VehicleImpl.Builder.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.Builder.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();
// v1.
vehicles.add(v1); vehicles.add(v1);
vehicles.add(v2); vehicles.add(v2);
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager(); fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();