Package es.urjc.etsii.grafo.executors
Class Executor<S extends Solution<S,I>,I extends Instance>
java.lang.Object
es.urjc.etsii.grafo.executors.Executor<S,I>
- Type Parameters:
S- Solution classI- Instance class
- Direct Known Subclasses:
ConcurrentExecutor,SequentialExecutor
Processes work units
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intprotected final InstanceManager<I> protected final ReferenceResultManagerprotected final SolverConfigprotected final Optional<TimeLimitCalculator<S, I>> static final int -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedExecutor(Optional<SolutionValidator<S, I>> validator, Optional<TimeLimitCalculator<S, I>> timeLimitCalculator, IOManager<S, I> io, InstanceManager<I> instanceManager, SolverConfig solverConfig, List<ExceptionHandler<S, I>> exceptionHandlers, ReferenceResultManager referenceResultManager) Fill common values used by all executors -
Method Summary
Modifier and TypeMethodDescriptionprotected WorkUnitResult<S, I> Execute a single iteration for the given (experiment, instance, algorithm, iterationId)endTimeControl(Optional<TimeLimitCalculator<S, I>> timeLimitCalculator, WorkUnit<S, I> workUnit) If time control is enabled, remove it and check ellapsed time to see if too many time has been spentabstract voidexecuteExperiment(Experiment<S, I> experiment, List<String> instanceNames, long startTimestamp) protected voidprotected voidme.tongfei.progressbar.ProgressBargetGlobalSolvingProgressBar(String expName, Map<String, Map<Algorithm<S, I>, List<WorkUnit<S, I>>>> workUnits) getOrderedWorkUnits(Experiment<S, I> experiment, List<String> instancePaths, int repetitions) Create workunits with solve orderstatic me.tongfei.progressbar.ProgressBarBuildergetPBarBuilder(String taskname) protected booleanimproves(WorkUnitResult<S, I> candidate, WorkUnitResult<S, I> best) instanceName(String instancePath) protected voidprocessWorkUnitResult(WorkUnitResult<S, I> r, me.tongfei.progressbar.ProgressBar pb) abstract voidshutdown()Finalize and destroy all resources, we have finished and are shutting down now.abstract voidstartup()Allocate resources and prepare for execution
-
Field Details
-
EXTRA_SECS_BEFORE_WARNING
public static final int EXTRA_SECS_BEFORE_WARNING- See Also:
-
UNDEF_TIME
public static final int UNDEF_TIME- See Also:
-
timeLimitCalculator
-
io
-
instanceManager
-
referenceResultManager
-
solverConfig
-
-
Constructor Details
-
Executor
protected Executor(Optional<SolutionValidator<S, I>> validator, Optional<TimeLimitCalculator<S, I>> timeLimitCalculator, IOManager<S, I> io, InstanceManager<I> instanceManager, SolverConfig solverConfig, List<ExceptionHandler<S, I>> exceptionHandlers, ReferenceResultManager referenceResultManager) Fill common values used by all executors- Parameters:
validator- solution validator if availabletimeLimitCalculator- time limit calculator if existsio- IO managerexceptionHandlers- list of exception handlers availablereferenceResultManager- reference result manager
-
-
Method Details
-
endTimeControl
public static <S extends Solution<S,I>, void endTimeControlI extends Instance> (Optional<TimeLimitCalculator<S, I>> timeLimitCalculator, WorkUnit<S, I> workUnit) If time control is enabled, remove it and check ellapsed time to see if too many time has been spent- Type Parameters:
S- Solution classI- Instance class- Parameters:
timeLimitCalculator- time limit calculator if implementedworkUnit- current work unit
-
executeExperiment
public abstract void executeExperiment(Experiment<S, I> experiment, List<String> instanceNames, long startTimestamp) -
startup
public abstract void startup()Allocate resources and prepare for execution -
shutdown
public abstract void shutdown()Finalize and destroy all resources, we have finished and are shutting down now. -
doWork
Execute a single iteration for the given (experiment, instance, algorithm, iterationId)- Parameters:
workUnit- Minimum unit of work, cannot be divided further.
-
processWorkUnitResult
-
exportAlgorithmInstanceSolution
-
exportInstanceSolution
-
getOrderedWorkUnits
protected Map<String,Map<Algorithm<S, getOrderedWorkUnitsI>, List<WorkUnit<S, I>>>> (Experiment<S, I> experiment, List<String> instancePaths, int repetitions) Create workunits with solve order- Parameters:
experiment- experiment definitioninstancePaths- instance name listrepetitions- how many times should we repeat the (instance, algorithm) pair- Returns:
- Map of workunits per instance
-
improves
-
instanceName
-
getPBarBuilder
-
getGlobalSolvingProgressBar
-