Class SolverMAM
-
- All Implemented Interfaces:
public class SolverMAM extends NetworkSolver
Solver for Matrix Analytic Methods (MAM) applied to queueing networks.
SolverMAM implements matrix-analytic techniques for analyzing queueing networks with Markovian arrival processes (MAP), phase-type service distributions, and other non-exponential characteristics that go beyond product-form assumptions.
Key MAM solver capabilities:
- Markovian Arrival Process (MAP) modeling
- Phase-type (PH) service distribution analysis
- Matrix-geometric solution methods
- Quasi-Birth-Death (QBD) process analysis
- Non-product-form queueing network solutions
- Passage time distribution computation
This solver is particularly useful for networks with correlated arrivals, general service times, and complex dependency structures that cannot be analyzed using traditional product-form methods.
- Since:
1.0
-
-
Field Summary
Fields Modifier and Type Field Description public Networkmodelpublic NetworkStructsnpublic SolverAvgHandlesavgHandlespublic SolverTranHandlestranHandlespublic Modelmodelpublic Stringnamepublic SolverOptionsoptionspublic SolverResultresultpublic booleanenableCheckspublic Randomrandom
-
Method Summary
Modifier and Type Method Description static SolverOptionsdefaultOptions()static FeatureSetgetFeatureSet()Returns the feature set supported by the MAM solver NetworkStructgetStruct()List<String>listValidMethods(Network model)List<String>listValidMethods()voidrunAnalyzer()Executes the solver algorithm to analyze the model. booleansupports(Network model)Checks if this solver supports the given network model. Ret.DistributionResultgetCdfRespT(AvgHandle R)Returns cumulative distribution functions of response times at steady-state. Ret.DistributionResultgetCdfRespT()Returns cumulative distribution functions of response times at steady-state. Ret.DistributionResultgetCdfPassT(AvgHandle R)Returns cumulative distribution functions of passage times at steady-state. Ret.DistributionResultgetCdfPassT()Returns cumulative distribution functions of passage times at steady-state. Ret.DistributionResultgetTranCdfPassT(AvgHandle R)Returns cumulative distribution functions of passage times during transient analysis. Ret.DistributionResultgetTranCdfPassT()Returns cumulative distribution functions of passage times during transient analysis. Ret.ProbabilityResultgetProbMarg(int node, int jobclass, Matrix state_m)Get marginal queue-length probability distribution for a job class. Ret.ProbabilityResultgetProbMarg(int node, int jobclass)Get marginal queue-length probability distribution for a job class (all states). List<FJPercentileResult>getPerctRespT(Array<double> percentiles)Get response time percentiles from Fork-Join analysis This method retrieves percentile values computed by the FJ_codes algorithm for Fork-Join queueing systems. List<FJPercentileResult>getPerctRespT()Get response time percentiles using default values [50, 90, 95, 99] -
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, 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, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getDeadlineTable, getModel, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getProb, getProb, getProbAggr, getProbAggr, getProbNormConstAggr, getProbSys, getProbSysAggr, getSjrnT, getSjrnT, getStageT, getStageT, getStageTable, getStageTable, getSysAvgT, getSysAvgT, getSysAvgT, getTranAvg, 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, sampleSys, sampleSysAggr, 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
-
-
Method Detail
-
defaultOptions
static SolverOptions defaultOptions()
-
getFeatureSet
static FeatureSet getFeatureSet()
Returns the feature set supported by the MAM solver
- Returns:
- the feature set supported by the MAM solver
-
getStruct
NetworkStruct getStruct()
-
listValidMethods
List<String> listValidMethods(Network model)
-
listValidMethods
List<String> listValidMethods()
-
runAnalyzer
void runAnalyzer()
Executes the solver algorithm to analyze the model. This abstract method must be implemented by concrete solver classes.
-
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
-
getCdfRespT
Ret.DistributionResult getCdfRespT(AvgHandle R)
Returns cumulative distribution functions of response times at steady-state. This method computes response time distributions using matrix-analytic methods.
- Parameters:
R- response time handles (optional)- Returns:
result containing CDFs for response times
-
getCdfRespT
Ret.DistributionResult getCdfRespT()
Returns cumulative distribution functions of response times at steady-state. Uses default response time handles.
- Returns:
result containing CDFs for response times
-
getCdfPassT
Ret.DistributionResult getCdfPassT(AvgHandle R)
Returns cumulative distribution functions of passage times at steady-state.
- Parameters:
R- response time handles (optional)- Returns:
result containing CDFs for passage times
-
getCdfPassT
Ret.DistributionResult getCdfPassT()
Returns cumulative distribution functions of passage times at steady-state. Uses default response time handles.
- Returns:
result containing CDFs for passage times
-
getTranCdfPassT
Ret.DistributionResult getTranCdfPassT(AvgHandle R)
Returns cumulative distribution functions of passage times during transient analysis.
- Parameters:
R- response time handles (optional)- Returns:
result containing transient CDFs for passage times
-
getTranCdfPassT
Ret.DistributionResult getTranCdfPassT()
Returns cumulative distribution functions of passage times during transient analysis. Uses default response time handles.
- Returns:
result containing transient CDFs for passage times
-
getProbMarg
Ret.ProbabilityResult getProbMarg(int node, int jobclass, Matrix state_m)
Get marginal queue-length probability distribution for a job class.
Computes the probability distribution P(n jobs of class r) for n=0,1,...,N(r) using MMAPPH1FCFS from BUTools.
Current limitations:
- Only supported for single queue models
- Requires Queue station with FCFS scheduling
- Parameters:
node- Station/node index (0-based)jobclass- Job class index (0-based)state_m- Optional state levels to query (null for all states, 0-based indexing)- Returns:
Probability result containing marginal probabilities
-
getProbMarg
Ret.ProbabilityResult getProbMarg(int node, int jobclass)
Get marginal queue-length probability distribution for a job class (all states).
NOT YET IMPLEMENTED - This method is a stub.
- Parameters:
node- Station/node index (0-based)jobclass- Job class index (0-based)- Returns:
Probability result - currently throws UnsupportedOperationException
-
getPerctRespT
List<FJPercentileResult> getPerctRespT(Array<double> percentiles)
Get response time percentiles from Fork-Join analysis
This method retrieves percentile values computed by the FJ_codes algorithm for Fork-Join queueing systems. It automatically detects FJ topology and computes percentiles using the algorithm from "Beyond the Mean in Fork-Join Queues" (IFIP Performance 2015).
Requirements:
- Model must have valid Fork-Join topology: Source → Fork → K Queues → Join → Sink
- Solver must have been run first (runAnalyzer() called)
- Homogeneous service distributions across parallel queues
- Parameters:
percentiles- Array of percentile levels (0-100 scale, e.g.- Returns:
List of FJPercentileResult, one per job class, containing: - jobClass: class index - percentiles: requested percentile levels - values: computed percentile values - K: number of parallel queues - method: algorithm used (e.g., "FJ_NARE")
-
getPerctRespT
List<FJPercentileResult> getPerctRespT()
Get response time percentiles using default values [50, 90, 95, 99]
- Returns:
List of FJPercentileResult for default percentiles
-
-
-
-