Class SolverDES
-
- All Implemented Interfaces:
public class SolverDES extends NetworkSolver
- Since:
1.0
QORE Lab, Imperial College London
-
-
Field Summary
Fields Modifier and Type Field Description public LayeredNetworklnModelpublic Collectorstreampublic Networkmodelpublic NetworkStructsnpublic SolverAvgHandlesavgHandlespublic SolverTranHandlestranHandlespublic Modelmodelpublic Stringnamepublic SolverOptionsoptionspublic SolverResultresultpublic booleanenableCheckspublic Randomrandom
-
Constructor Summary
Constructors Constructor Description SolverDES(Network model)Constructs a SolverDES with the given model using default options. SolverDES(LayeredNetwork model)Constructs a SolverDES with the given LayeredNetwork model using default options. SolverDES(LayeredNetwork model, Array<Object> args)Constructs a SolverDES with the given LayeredNetwork model and variable arguments. SolverDES(LayeredNetwork model, SolverOptions options)Constructs a SolverDES with the given LayeredNetwork model and options. SolverDES(Network model, Array<Object> args)Constructs a SolverDES with the given model and variable arguments. SolverDES(Network model, String method)Constructs a SolverDES with the given model and method. SolverDES(Network model, SolverOptions options)Constructs a SolverDES with the given model and options.
-
Method Summary
Modifier and Type Method Description LayeredNetworkgetLNModel()Returns the LayeredNetwork model (if solving an LQN). CollectorgetStream()Returns the current streaming collector, or null if not streaming. static FeatureSetgetFeatureSet()Returns the feature set supported by the DES solver. NetworkStructgetStruct()Returns the network structure for this solver. voidgetTranAvg()Performs a transient analysis of the model using discrete event simulation. SolverResultgetAvg()Computes and returns average station metrics at steady-state. List<String>listValidMethods()Returns the list of valid solution methods for DES. List<String>listValidMethods(Network model)Returns the list of valid solution methods for DES. voidrunAnalyzer()Executes the solver algorithm to analyze the model. SolverResultrunMethodSpecificAnalyzer()Run the DES analyzer with current options including init_sol. booleansupports(Network model)Checks if this solver supports the given network model. booleansupports(LayeredNetwork model)Checks if the solver supports the given LayeredNetwork model. static FeatureSetgetLNFeatureSet()Returns the feature set supported by the DES solver for LayeredNetwork models. LayeredNetworkStructgetLNStruct()Returns the LayeredNetworkStruct (if solving an LQN). LayeredNetworkAvgTablegetLNAvgTable()Returns average metrics for a LayeredNetwork model as a table. static SolverOptionsdefaultOptions()Returns the default solver options for the DES solver. Ret.SampleResultsample(StatefulNode node, int numSamples)Generates a sample path (state trajectory) for a specific node using DES transient simulation. Ret.SampleResultsampleAggr(StatefulNode node, int numSamples)Generates an aggregated sample path for a specific node. Ret.SampleResultsampleSys(int numSamples)Generates a system-wide sample path (state trajectory) for all stateful nodes. Ret.SampleResultsampleSysAggr(int numSamples)Generates an aggregated system-wide sample path for all stateful nodes. Ret.SampleResultstream(StatefulNode node, StreamingOptions streamingOptions)Generates a sample path with streaming metrics pushed via OTLP. Ret.SampleResultstream(StatefulNode node, int numSamples, StreamingOptions streamingOptions)Generates a sample path with streaming metrics pushed via OTLP. Ret.SampleResultstreamAggr(StatefulNode node, StreamingOptions streamingOptions)Generates an aggregated sample path with streaming metrics pushed via OTLP. Ret.SampleResultstreamAggr(StatefulNode node, int numSamples, StreamingOptions streamingOptions)Generates an aggregated sample path with streaming metrics pushed via OTLP. -
Methods inherited from class jline.solvers.NetworkSolver
aCT, aCT, aCT, aCT, aCT, aCT, aNCT, aNCT, aNCT, aNCT, aNCT, aNCT, aNT, aNT, aNT, aNT, aNT, aNT, aST, aST, aST, aT, aT, aT, aT, aT, aT, avg, avg, avg, avgArvR, avgArvRChain, avgArvRHandles, avgChain, avgChainT, avgChainT, avgChainT, avgChainT, avgChainT, avgChainT, avgChainTable, avgChainTable, avgChainTable, avgChainTable, avgChainTable, avgChainTable, avgHandles, avgNode, avgNodeArvRChain, avgNodeChain, avgNodeChainT, avgNodeChainT, avgNodeChainT, avgNodeChainT, avgNodeChainT, avgNodeChainT, avgNodeChainTable, avgNodeChainTable, avgNodeChainTable, avgNodeChainTable, avgNodeChainTable, avgNodeChainTable, avgNodeQLenChain, avgNodeResidTChain, avgNodeRespTChain, avgNodeT, avgNodeT, avgNodeT, avgNodeT, avgNodeT, avgNodeT, avgNodeTable, avgNodeTable, avgNodeTable, avgNodeTable, avgNodeTable, avgNodeTable, avgNodeTputChain, avgNodeUtilChain, avgQLen, avgQLenChain, avgQLenHandles, avgResidT, avgResidTChain, avgResidTHandles, avgRespT, avgRespTChain, avgRespTHandles, avgSys, avgSysRespT, avgSysT, avgSysT, avgSysT, avgSysTable, avgSysTable, avgSysTable, avgSysTput, avgT, avgT, avgT, avgT, avgT, avgT, avgTable, avgTable, avgTable, avgTable, avgTable, avgTable, avgTput, avgTputChain, avgTputHandles, avgUtil, avgUtilChain, avgUtilHandles, avgWaitT, cdfPassT, cdfPassT, cdfRespT, cdfRespT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, getAllSolvers, getAvg, getAvg, getAvgArvR, getAvgArvRChain, getAvgArvRHandles, getAvgChain, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgHandles, getAvgNode, getAvgNodeArvRChain, getAvgNodeChain, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeQLenChain, getAvgNodeResidTChain, getAvgNodeRespTChain, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTputChain, getAvgNodeUtilChain, getAvgQLen, getAvgQLenChain, getAvgQLenHandles, getAvgResidT, getAvgResidTChain, getAvgResidTHandles, getAvgRespT, getAvgRespTChain, getAvgRespTHandles, getAvgSys, getAvgSys, getAvgSys, getAvgSysRespT, getAvgSysTable, getAvgSysTable, getAvgSysTable, getAvgSysTput, getAvgT, getAvgT, getAvgT, getAvgT, getAvgT, getAvgT, getAvgTable, getAvgTable, getAvgTable, getAvgTable, getAvgTable, getAvgTable, getAvgTput, getAvgTputChain, getAvgTputHandles, getAvgUtil, getAvgUtilChain, getAvgUtilHandles, getAvgWaitT, getCdfPassT, getCdfPassT, getCdfRespT, getCdfRespT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getDeadlineTable, getModel, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getProb, getProb, getProbAggr, getProbAggr, getProbMarg, getProbMarg, getProbNormConstAggr, getProbSys, getProbSysAggr, getSjrnT, getSjrnT, getStageT, getStageT, getStageTable, getStageTable, getSysAvgT, getSysAvgT, getSysAvgT, getTranCdfPassT, getTranCdfPassT, getTranCdfRespT, getTranCdfRespT, getTranHandles, hasAvgResults, hasDistribResults, hasTranResults, initHandles, model, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, print, prob, prob, probAggr, probAggr, probMarg, probMarg, probNormConstAggr, probSys, probSysAggr, runAnalyzerChecks, sample, sampleAggr, setAvgHandles, setAvgResults, setDistribResults, setLang, setModel, setTranAvgResults, setTranHandles, setTranProb, sjrnT, sjrnT, stageT, stageTable, sysAvgT, sysAvgT, sysAvgT, tranAvg, tranCdfPassT, tranCdfPassT, tranCdfRespT, tranCdfRespT, tranHandles -
Methods inherited from class jline.solvers.Solver
getName, getOptions, getResults, hasResults, isJavaAvailable, isValidOption, listValidOptions, parseOptions, parseOptions, reset, resetRandomGeneratorSeed, setChecks, setOptions -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Constructor Detail
-
SolverDES
SolverDES(Network model)
Constructs a SolverDES with the given model using default options.- Parameters:
model- the queueing network model to solve
-
SolverDES
SolverDES(LayeredNetwork model)
Constructs a SolverDES with the given LayeredNetwork model using default options.- Parameters:
model- the layered queueing network model to solve
-
SolverDES
SolverDES(LayeredNetwork model, Array<Object> args)
Constructs a SolverDES with the given LayeredNetwork model and variable arguments.- Parameters:
model- the layered queueing network model to solveargs- variable arguments for solver options
-
SolverDES
SolverDES(LayeredNetwork model, SolverOptions options)
Constructs a SolverDES with the given LayeredNetwork model and options.- Parameters:
model- the layered queueing network model to solveoptions- solver configuration options
-
SolverDES
SolverDES(Network model, Array<Object> args)
Constructs a SolverDES with the given model and variable arguments.- Parameters:
model- the queueing network model to solveargs- variable arguments for solver options
-
SolverDES
SolverDES(Network model, String method)
Constructs a SolverDES with the given model and method.- Parameters:
model- the queueing network model to solvemethod- the solution method to use
-
SolverDES
SolverDES(Network model, SolverOptions options)
Constructs a SolverDES with the given model and options.- Parameters:
model- the queueing network model to solveoptions- solver configuration options
-
-
Method Detail
-
getLNModel
LayeredNetwork getLNModel()
Returns the LayeredNetwork model (if solving an LQN).
- Returns:
the LayeredNetwork model, or null if solving a regular Network
-
getStream
Collector getStream()
Returns the current streaming collector, or null if not streaming.
- Returns:
the streaming collector
-
getFeatureSet
static FeatureSet getFeatureSet()
Returns the feature set supported by the DES solver. Supports multiclass Jackson queueing networks with FCFS queues.
- Returns:
the feature set supported by the DES solver
-
getStruct
NetworkStruct getStruct()
Returns the network structure for this solver.
- Returns:
the network structure
-
getTranAvg
void getTranAvg()
Performs a transient analysis of the model using discrete event simulation. The simulation is run for the time horizon specified in options.timespan. If options.timespan is not specified, it defaults to [0, 30/min_rate]. The number of replications is determined by options.samples.
-
getAvg
SolverResult getAvg()
Computes and returns average station metrics at steady-state. For LayeredNetwork models, this delegates to the LN-specific analyzer.
- Returns:
solver result containing average metrics
-
listValidMethods
List<String> listValidMethods()
Returns the list of valid solution methods for DES.
- Returns:
list of valid method names
-
listValidMethods
List<String> listValidMethods(Network model)
Returns the list of valid solution methods for DES.
- Parameters:
model- the network model (unused, for interface compatibility)- Returns:
list of valid method names
-
runAnalyzer
void runAnalyzer()
Executes the solver algorithm to analyze the model. This abstract method must be implemented by concrete solver classes.
-
runMethodSpecificAnalyzer
SolverResult runMethodSpecificAnalyzer()
Run the DES analyzer with current options including init_sol. This method is called by SolverEnv for transient analysis with initial conditions.
- Returns:
SolverResult containing transient metrics (QNt, UNt, TNt, t)
-
supports
boolean supports(Network model)
Checks if this solver supports the given network model. Default implementation returns true; subclasses should override to provide specific feature validation.
- Parameters:
model- the network model to check- Returns:
true if the model is supported, false otherwise
-
supports
boolean supports(LayeredNetwork model)
Checks if the solver supports the given LayeredNetwork model.
- Parameters:
model- the LayeredNetwork model to check- Returns:
true if the model is supported
-
getLNFeatureSet
static FeatureSet getLNFeatureSet()
Returns the feature set supported by the DES solver for LayeredNetwork models.
- Returns:
the feature set supported for LQN models
-
getLNStruct
LayeredNetworkStruct getLNStruct()
Returns the LayeredNetworkStruct (if solving an LQN).
- Returns:
the LayeredNetworkStruct, or null if solving a regular Network
-
getLNAvgTable
LayeredNetworkAvgTable getLNAvgTable()
Returns average metrics for a LayeredNetwork model as a table. This method should be called after getAvg() for LayeredNetwork models.
- Returns:
LayeredNetworkAvgTable containing average metrics per LQN element
-
defaultOptions
static SolverOptions defaultOptions()
Returns the default solver options for the DES solver.
- Returns:
Default solver options with SolverType.DES
-
sample
Ret.SampleResult sample(StatefulNode node, int numSamples)
Generates a sample path (state trajectory) for a specific node using DES transient simulation.
- Parameters:
node- The stateful node to samplenumSamples- Number of time points to sample- Returns:
SampleResult containing the state trajectory for the node
-
sampleAggr
Ret.SampleResult sampleAggr(StatefulNode node, int numSamples)
Generates an aggregated sample path for a specific node. For DES, the sample() method already returns per-class queue lengths (nir), so this method simply marks the result as aggregated without additional marginal computation. This differs from SSA which requires toMarginal processing on raw state vectors.
- Parameters:
node- The stateful node to samplenumSamples- Number of time points to sample- Returns:
SampleResult containing the aggregated state trajectory
-
sampleSys
Ret.SampleResult sampleSys(int numSamples)
Generates a system-wide sample path (state trajectory) for all stateful nodes.
- Parameters:
numSamples- Number of time points to sample- Returns:
SampleResult containing the state trajectory for all nodes
-
sampleSysAggr
Ret.SampleResult sampleSysAggr(int numSamples)
Generates an aggregated system-wide sample path for all stateful nodes.
- Parameters:
numSamples- Number of time points to sample- Returns:
SampleResult containing the aggregated state trajectory for all nodes
-
stream
Ret.SampleResult stream(StatefulNode node, StreamingOptions streamingOptions)
Generates a sample path with streaming metrics pushed via OTLP.
- Parameters:
node- The stateful node to samplestreamingOptions- Configuration for streaming (endpoint, mode, frequency)- Returns:
SampleResult containing the state trajectory for the node
-
stream
Ret.SampleResult stream(StatefulNode node, int numSamples, StreamingOptions streamingOptions)
Generates a sample path with streaming metrics pushed via OTLP.
- Parameters:
node- The stateful node to samplenumSamples- Number of time points to samplestreamingOptions- Configuration for streaming (endpoint, mode, frequency)- Returns:
SampleResult containing the state trajectory for the node
-
streamAggr
Ret.SampleResult streamAggr(StatefulNode node, StreamingOptions streamingOptions)
Generates an aggregated sample path with streaming metrics pushed via OTLP.
- Parameters:
node- The stateful node to samplestreamingOptions- Configuration for streaming (endpoint, mode, frequency)- Returns:
SampleResult containing the aggregated state trajectory
-
streamAggr
Ret.SampleResult streamAggr(StatefulNode node, int numSamples, StreamingOptions streamingOptions)
Generates an aggregated sample path with streaming metrics pushed via OTLP.
- Parameters:
node- The stateful node to samplenumSamples- Number of time points to samplestreamingOptions- Configuration for streaming (endpoint, mode, frequency)- Returns:
SampleResult containing the aggregated state trajectory
-
-
-
-