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 int
protected final InstanceManager
<I> protected final ReferenceResultManager
protected final SolverConfig
protected final Optional
<TimeLimitCalculator<S, I>> static final int
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
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 -
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 void
executeExperiment
(Experiment<S, I> experiment, List<String> instanceNames, long startTimestamp) protected void
protected void
me.tongfei.progressbar.ProgressBar
getGlobalSolvingProgressBar
(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.ProgressBarBuilder
getPBarBuilder
(String taskname) protected boolean
improves
(WorkUnitResult<S, I> candidate, WorkUnitResult<S, I> best) instanceName
(String instancePath) protected void
processWorkUnitResult
(WorkUnitResult<S, I> r, me.tongfei.progressbar.ProgressBar pb) abstract void
shutdown()
Finalize and destroy all resources, we have finished and are shutting down now.abstract void
startup()
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
-