Class DynamicShopExperiment
- java.lang.Object
-
- jasima.core.experiment.Experiment
-
- jasima.core.simulation.SimulationExperiment
-
- jasima.shopSim.core.ShopExperiment
-
- jasima.shopSim.models.dynamicShop.DynamicShopExperiment
-
- All Implemented Interfaces:
SimOperations,Notifier<Experiment,Experiment.ExperimentEvent>,ValueStore,Serializable,Cloneable
public class DynamicShopExperiment extends ShopExperiment
Simulates dynamic job shops and flow shops, based on some parameters. See Rajendran, C.; Holthaus O.: "A Comparative Study of Dispatching Rules in Dynamic Flowshops and Jobshops", European Journal of Operational Research 116 (1999) 1, S. 156-170 for details.An experiment of this type by default contains a
BasicJobStatCollector.- Author:
- Torsten Hildebrandt
- See Also:
BasicJobStatCollector, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDynamicShopExperiment.Scenario-
Nested classes/interfaces inherited from class jasima.core.experiment.Experiment
Experiment.ExperimentEvent, Experiment.ExperimentState, Experiment.UniqueNamesCheckingHashMap
-
Nested classes/interfaces inherited from interface jasima.core.simulation.util.SimOperations
SimOperations.SimEventType
-
-
Field Summary
Fields Modifier and Type Field Description protected JobSourcesrc-
Fields inherited from class jasima.shopSim.core.ShopExperiment
shop
-
Fields inherited from class jasima.core.simulation.SimulationExperiment
sim
-
Fields inherited from class jasima.core.experiment.Experiment
aborted, DEFAULT_SEED, error, EXCEPTION, EXCEPTION_MESSAGE, EXP_ABORTED, resultMap, RUNTIME
-
-
Constructor Summary
Constructors Constructor Description DynamicShopExperiment()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidconfigureShop()protected JobSourcecreateJobSource()protected voidcreateShop()protected voiddone()This method can be overridden to perform any required clean-up.DblSequencegetDueDateFactor()intgetNumMachines()intgetNumOpsMax()Returns the maximum number of operations of a job.intgetNumOpsMin()Returns the minimum number of operations of a job.DblSequencegetProcTimes()DynamicShopExperiment.ScenariogetScenario()intgetStopArrivalsAfterNumJobs()doublegetUtilLevel()DblSequencegetWeights()voidinit()This method is called to perform any initializations required before the experiment is run.voidsetDueDateFactor(DblSequence dueDateFactor)Sets the due date tightness of jobs by specifying a due date factor.voidsetNumMachines(int numMachines)Sets the number of machines on the shop floor.voidsetNumOps(int min, int max)voidsetNumOpsMax(int max)Sets the maximum number of operations of a job.voidsetNumOpsMin(int min)Sets the minimum number of operations of a job.voidsetProcTimes(DblSequence procTimes)Determines the processing times for each operation.voidsetScenario(DynamicShopExperiment.Scenario scenario)Sets the scenario to use.voidsetStopArrivalsAfterNumJobs(int stopAfterNumJobs)The job source is stopped after a certain number of jobs were completed.voidsetUtilLevel(double utilLevel)Sets the desired utilization level for all machines.voidsetWeights(DblSequence weights)Sets the weights to be used for each job.-
Methods inherited from class jasima.shopSim.core.ShopExperiment
addMachineListener, addMachineListener, addShopListener, beforeRun, clone, createSimComponents, doCreateShop, finish, getBatchForming, getBatchForming, getBatchFormingRules, getBatchSequencingRule, getBatchSequencingRule, getBatchSequencingRules, getMachineListener, getMachineListenerSpecific, getMaxJobsInSystem, getSequencingRule, getSequencingRule, getSequencingRules, getShopListener, getStopAfterNumJobs, isEnableLookAhead, setBatchForming, setBatchFormingRules, setBatchSequencingRule, setBatchSequencingRules, setEnableLookAhead, setMachineListener, setMaxJobsInSystem, setSequencingRule, setSequencingRules, setShopListener, setStopAfterNumJobs
-
Methods inherited from class jasima.core.simulation.SimulationExperiment
addInitAction, afterRun, createSim, getInitialSimTime, getMainProcess, getModelRoot, getSim, getSimTimeStartInstant, getSimTimeToMillisFactor, getSimulationLength, getStatsResetTime, initSim, performRun, print, produceResults, setInitialSimTime, setMainProcess, setModelRoot, setSimTimeStartInstant, setSimTimeToMillisFactor, setSimTimeToMillisFactor, setSimulationLength, setStatsResetTime, toSimTime
-
Methods inherited from class jasima.core.experiment.Experiment
abort, addErrorResults, addStandardResults, cancel, checkCancelledOrInterrupted, executeSubExperiment, finalActions, getError, getInitialSeed, getLogLevel, getName, getPropsWithValues, getResults, getState, handleExecutionError, isCancelled, main, nestingLevel, nestingLevel, notifierImpl, print, print, print, print, printResults, readResolve, requireState, runExperiment, runExperimentAsync, runExperimentAsync, runExperimentInternal, runTimeReal, setInitialSeed, setLogLevel, setName, starting, state, toString, valueStoreImpl
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jasima.core.util.observer.Notifier
addListener, addListener, addListener, fire, fire, getListener, numListener, removeCurrentListener, removeListener
-
Methods inherited from interface jasima.core.simulation.util.SimOperations
activateEntity, addComponent, addResult, currentPrio, end, getRootComponent, initRndGen, initRndGen, isEndRequested, isTraceEnabled, schedule, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleAt, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, scheduleIn, schedulePeriodically, schedulePeriodically, scheduleProcess, scheduleProcess, simTime, simTimeAbs, simTimeToInstant, toSimTime, toSimTime, trace
-
Methods inherited from interface jasima.core.util.ValueStore
valueStoreContains, valueStoreGet, valueStoreGet, valueStoreGetAllKeys, valueStoreGetNumKeys, valueStorePut, valueStoreRemove, valueStoreUpdate
-
-
-
-
Field Detail
-
src
protected JobSource src
-
-
Method Detail
-
init
public void init()
Description copied from class:ExperimentThis method is called to perform any initializations required before the experiment is run.- Overrides:
initin classSimulationExperiment
-
createShop
protected void createShop()
- Overrides:
createShopin classShopExperiment
-
configureShop
protected void configureShop()
- Overrides:
configureShopin classShopExperiment
-
createJobSource
protected JobSource createJobSource()
-
done
protected void done()
Description copied from class:ExperimentThis method can be overridden to perform any required clean-up. It is executed immediately afterExperiment.afterRun(), but beforeExperiment.produceResults()andExperiment.finish().- Overrides:
donein classShopExperiment
-
getUtilLevel
public double getUtilLevel()
-
setUtilLevel
public void setUtilLevel(double utilLevel)
Sets the desired utilization level for all machines. Machine utilization approaches this value in the long term; short term results might differ due to random influences in the arrival process.
-
getDueDateFactor
public DblSequence getDueDateFactor()
-
setDueDateFactor
public void setDueDateFactor(DblSequence dueDateFactor)
Sets the due date tightness of jobs by specifying a due date factor. TheDblSequenceis used to calculate a job's due date as a multiple of a job's processing time. If for instance a due date factor of 2 is returned for a certain job then the due date is set to the job's release date plus twice the raw processing time of all operations of this job.
-
getNumMachines
public int getNumMachines()
-
setNumMachines
public void setNumMachines(int numMachines)
Sets the number of machines on the shop floor.
-
getNumOpsMin
public int getNumOpsMin()
Returns the minimum number of operations of a job.
-
setNumOpsMin
public void setNumOpsMin(int min)
Sets the minimum number of operations of a job. Setting this to a value<=0uses the number of machines, i.e., each job has to visit each machine exactly once.
-
getNumOpsMax
public int getNumOpsMax()
Returns the maximum number of operations of a job. Setting this to a value<=0uses the number of machines, i.e., a job with the maximum number of operations has to visit each machine exactly once.
-
setNumOpsMax
public void setNumOpsMax(int max)
Sets the maximum number of operations of a job.
-
setNumOps
public void setNumOps(int min, int max)
-
setScenario
public void setScenario(DynamicShopExperiment.Scenario scenario)
Sets the scenario to use. This can be eitherJOB_SHOPorFLOW_SHOP.
-
getScenario
public DynamicShopExperiment.Scenario getScenario()
-
getStopArrivalsAfterNumJobs
public int getStopArrivalsAfterNumJobs()
-
setStopArrivalsAfterNumJobs
public void setStopArrivalsAfterNumJobs(int stopAfterNumJobs)
The job source is stopped after a certain number of jobs were completed. Jobs are counted in the order they entered the system. If, e.g.,stopAfterNumJobsis 2500 the job source is stopped after all of the first 2500 jobs were completed (note: this is is not necessarily the same as the first 2500 jobs completed).- Parameters:
stopAfterNumJobs- The number of jobs after which to stop, default: 2500.
-
getWeights
public DblSequence getWeights()
-
setWeights
public void setWeights(DblSequence weights)
Sets the weights to be used for each job. The default setting is to assign a weight of 1 for each job when this attribute isnull.- Parameters:
weights- ADblSequenceto determine job weight. Default: each job gets a weight of 1.
-
getProcTimes
public DblSequence getProcTimes()
-
setProcTimes
public void setProcTimes(DblSequence procTimes)
Determines the processing times for each operation. This is a mandatory setting.
-
-