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

relax api

This commit is contained in:
Stefan Schroeder 2013-10-07 16:21:09 +02:00
parent cba6a759e0
commit a51abf6302
10 changed files with 83 additions and 38 deletions

View file

@ -32,11 +32,11 @@ import java.util.Set;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import util.RandomNumberGeneration; import util.RandomNumberGeneration;
import algorithms.RuinStrategy.RuinListener;
import basics.Job; import basics.Job;
import basics.VehicleRoutingProblem; import basics.VehicleRoutingProblem;
import basics.VehicleRoutingProblemSolution; import basics.VehicleRoutingProblemSolution;
import basics.algo.InsertionListener; import basics.algo.InsertionListener;
import basics.algo.RuinListener;
import basics.algo.SearchStrategyModule; import basics.algo.SearchStrategyModule;
import basics.algo.SearchStrategyModuleListener; import basics.algo.SearchStrategyModuleListener;
import basics.route.TourActivity; import basics.route.TourActivity;

View file

@ -23,10 +23,10 @@ package algorithms;
import java.util.Collection; import java.util.Collection;
import util.RouteUtils; import util.RouteUtils;
import algorithms.RuinStrategy.RuinListener;
import basics.Job; import basics.Job;
import basics.VehicleRoutingProblemSolution; import basics.VehicleRoutingProblemSolution;
import basics.algo.InsertionListener; import basics.algo.InsertionListener;
import basics.algo.RuinListener;
import basics.algo.SearchStrategyModule; import basics.algo.SearchStrategyModule;
import basics.algo.SearchStrategyModuleListener; import basics.algo.SearchStrategyModuleListener;

View file

@ -24,8 +24,8 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import algorithms.RuinStrategy.RuinListener;
import basics.Job; import basics.Job;
import basics.algo.RuinListener;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;
class RuinListeners { class RuinListeners {

View file

@ -29,6 +29,7 @@ import util.RandomNumberGeneration;
import util.StopWatch; import util.StopWatch;
import basics.Job; import basics.Job;
import basics.VehicleRoutingProblem; import basics.VehicleRoutingProblem;
import basics.algo.RuinListener;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;

View file

@ -23,6 +23,7 @@ import org.apache.log4j.Logger;
import util.RandomNumberGeneration; import util.RandomNumberGeneration;
import basics.Job; import basics.Job;
import basics.VehicleRoutingProblem; import basics.VehicleRoutingProblem;
import basics.algo.RuinListener;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;

View file

@ -15,6 +15,7 @@ package algorithms;
import java.util.Collection; import java.util.Collection;
import basics.Job; import basics.Job;
import basics.algo.RuinListener;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;
@ -28,39 +29,6 @@ import basics.route.VehicleRoute;
public interface RuinStrategy { public interface RuinStrategy {
/**
* Listener that listens to the ruin-process. It informs whoever is interested about start, end and about a removal of a job.
*
* @author schroeder
*
*/
public static interface RuinListener {
/**
* informs about ruin-start.
*
* @param routes
*/
public void ruinStarts(Collection<VehicleRoute> routes);
/**
* informs about ruin-end.
*
* @param routes
* @param unassignedJobs
*/
public void ruinEnds(Collection<VehicleRoute> routes, Collection<Job> unassignedJobs);
/**
* informs if a {@link Job} has been removed from a {@link VehicleRoute}.
*
* @param job
* @param fromRoute
*/
public void removed(Job job, VehicleRoute fromRoute);
}
/** /**
* Ruins a current solution, i.e. a collection of vehicle-routes and * Ruins a current solution, i.e. a collection of vehicle-routes and
* returns a collection of removed and thus unassigned jobs. * returns a collection of removed and thus unassigned jobs.

View file

@ -26,12 +26,18 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import basics.Job; import basics.Job;
import basics.VehicleRoutingProblem;
import basics.VehicleRoutingProblemSolution;
import basics.algo.InsertionEndsListener;
import basics.algo.InsertionListener;
import basics.algo.InsertionStartsListener; import basics.algo.InsertionStartsListener;
import basics.algo.IterationStartsListener;
import basics.algo.JobInsertedListener; import basics.algo.JobInsertedListener;
import basics.algo.RuinListener;
import basics.route.TourActivity; import basics.route.TourActivity;
import basics.route.VehicleRoute; import basics.route.VehicleRoute;
class StateManagerImpl implements StateManager, InsertionStartsListener, JobInsertedListener { public class StateManagerImpl implements StateManager, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener {
static class StatesImpl implements States{ static class StatesImpl implements States{
@ -152,4 +158,33 @@ class StateManagerImpl implements StateManager, InsertionStartsListener, JobInse
public void addRouteVisitor(RouteVisitor routeVisitor){ public void addRouteVisitor(RouteVisitor routeVisitor){
routeVisitors.add(routeVisitor); routeVisitors.add(routeVisitor);
} }
@Override
public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection<VehicleRoutingProblemSolution> solutions) {
clear();
}
@Override
public void ruinStarts(Collection<VehicleRoute> routes) {
// TODO Auto-generated method stub
}
@Override
public void ruinEnds(Collection<VehicleRoute> routes, Collection<Job> unassignedJobs) {
// TODO Auto-generated method stub
}
@Override
public void removed(Job job, VehicleRoute fromRoute) {
// TODO Auto-generated method stub
}
@Override
public void informInsertionEnds(Collection<VehicleRoute> vehicleRoutes) {
// TODO Auto-generated method stub
}
} }

View file

@ -29,7 +29,6 @@ import org.apache.log4j.Logger;
import algorithms.BackwardInTimeListeners.BackwardInTimeListener; import algorithms.BackwardInTimeListeners.BackwardInTimeListener;
import algorithms.ForwardInTimeListeners.ForwardInTimeListener; import algorithms.ForwardInTimeListeners.ForwardInTimeListener;
import algorithms.RuinStrategy.RuinListener;
import algorithms.StateManager.StateImpl; import algorithms.StateManager.StateImpl;
import basics.Delivery; import basics.Delivery;
import basics.Job; import basics.Job;
@ -42,6 +41,7 @@ import basics.algo.InsertionStartsListener;
import basics.algo.IterationEndsListener; import basics.algo.IterationEndsListener;
import basics.algo.IterationStartsListener; import basics.algo.IterationStartsListener;
import basics.algo.JobInsertedListener; import basics.algo.JobInsertedListener;
import basics.algo.RuinListener;
import basics.algo.VehicleRoutingAlgorithmListener; import basics.algo.VehicleRoutingAlgorithmListener;
import basics.costs.ForwardTransportCost; import basics.costs.ForwardTransportCost;
import basics.costs.ForwardTransportTime; import basics.costs.ForwardTransportTime;

View file

@ -0,0 +1,39 @@
package basics.algo;
import java.util.Collection;
import basics.Job;
import basics.route.VehicleRoute;
/**
* Listener that listens to the ruin-process. It informs whoever is interested about start, end and about a removal of a job.
*
* @author schroeder
*
*/
public interface RuinListener extends SearchStrategyModuleListener{
/**
* informs about ruin-start.
*
* @param routes
*/
public void ruinStarts(Collection<VehicleRoute> routes);
/**
* informs about ruin-end.
*
* @param routes
* @param unassignedJobs
*/
public void ruinEnds(Collection<VehicleRoute> routes, Collection<Job> unassignedJobs);
/**
* informs if a {@link Job} has been removed from a {@link VehicleRoute}.
*
* @param job
* @param fromRoute
*/
public void removed(Job job, VehicleRoute fromRoute);
}

View file

@ -46,6 +46,7 @@ import basics.Job;
import basics.VehicleRoutingAlgorithm; import basics.VehicleRoutingAlgorithm;
import basics.VehicleRoutingProblem; import basics.VehicleRoutingProblem;
import basics.VehicleRoutingProblemSolution; import basics.VehicleRoutingProblemSolution;
import basics.algo.RuinListener;
import basics.algo.SearchStrategy; import basics.algo.SearchStrategy;
import basics.algo.SearchStrategyModule; import basics.algo.SearchStrategyModule;
import basics.algo.SearchStrategyModuleListener; import basics.algo.SearchStrategyModuleListener;