Class SolverAUTO
This solver automatically selects the most appropriate solution method based on model characteristics and requested performance metrics.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classA method name split into a selection intent, or a family plus its submethod.Nested classes/interfaces inherited from class jline.solvers.NetworkSolver
NetworkSolver.SolverConfigurator -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intPopulation at or below which an exact solver is preferred over an approximation, when one is available.static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class jline.solvers.NetworkSolver
avgHandles, lastPerctMethod, lastPermEngine, model, sn, tranHandles -
Constructor Summary
ConstructorsConstructorDescriptionSolverAUTO(Network model) Constructor with model onlySolverAUTO(Network model, Object... varargin) Constructor with model and varargsSolverAUTO(Network model, String method) Constructor with model and methodSolverAUTO(Network model, SolverOptions options) Constructor with model and options -
Method Summary
Modifier and TypeMethodDescriptionavg()Alias for getAvg()avgArvR()Alias for getAvgArvR()Alias for getAvgArvRChain()avgChain()Alias for getAvgChain()Alias for getAvgChainTable()avgNode()Alias for getAvgNode()Alias for getAvgNodeTable()avgQLen()Alias for getAvgQLen()Alias for getAvgQLenChain()Alias for getAvgResidT()Alias for getAvgResidTChain()avgRespT()Alias for getAvgRespT()Alias for getAvgRespTChain()Alias for getAvgSysRespT()Alias for getAvgSysTable()Alias for getAvgSysTput()avgTable()Alias for getAvgTable()avgTput()Alias for getAvgTput()Alias for getAvgTputChain()avgUtil()Alias for getAvgUtil()Alias for getAvgUtilChain()avgWaitT()Alias for getAvgWaitT()buildFamilySolver(String family, SolverOptions options) Instantiate the solver of a method family.cdfPassT()Alias for getCdfPassT()cdfRespT()Alias for getCdfRespT()static StringfamilyAlias(String name) Canonical family of a method name, or "" when the method name names none.familyDeclaringMethod(String token) Find the family that declares an unqualified algorithm name, by asking each family for its own method list.static String[]familyMetrics(String family) The measure groups a method family can answer.static String[]Method families, in the order in which an unqualified method name is looked up.Which solvers and solver methods can analyze this model: the runnable pairs, for every measure.findSolver(String metric, boolean showAll) Which solvers and solver methods can analyze this model, and for the ones that cannot, why not.static List<SolverCandidate>findSolverLayered(LayeredNetwork model, String metric, boolean showAll) findSolver for a LayeredNetwork, which this class does not otherwise solve: its constructor takes a Network, and buildFamilySolver says so.getAvg()Get average arrival rates at steady-stateReturns average arrival rates aggregated by job chains.Returns average station metrics aggregated by job chains.Returns a table of average station metrics aggregated by job chains.Computes average performance metrics at steady-state for all nodes.Get average node arrival rate by chainGet average node queue length by chainGet average node residence time by chainGet average node response time by chainReturns a table of average node metrics organized by job classes.Get average node throughput by chainGet average node utilization by chainGet average queue lengths at steady-stateReturns average queue lengths aggregated by job chains.Get average queue length tableGet average residence times at steady-stateGet average residence time by chainGet average response times at steady-stateReturns average response times aggregated by job chains.Get average response time tablevoidComputes average system-level metrics at steady state.Returns average system response times at steady state.Returns a table of average system-level metrics.Returns average system throughputs at steady state.Returns a table of average station metrics organized by job classes.Get average throughputs at steady-stateReturns average throughputs aggregated by job chains.Get average throughput tableGet average utilizations at steady-stateReturns average server utilizations aggregated by job chains.Get average utilization tableGet average waiting times (queue time excluding service)Get list of candidate solver namesMatrix[]Age-of-Information CDFs, a property of the ODE representation, so fluid-only.Matrix[]Age-of-Information CDFs on caller-supplied time points, fluid-only.Get CDF of passage times at steady-stategetCdfPT()Backward-compatible passage-time CDF name, resolved on the fluid family.Returns cumulative distribution functions of response times at steady-state.System response time CDF per chain, always from SolverCTMC -- like the state-space accessors, it is a property of the CTMC representation, so it resolves on the CTMC candidate rather than the ranked selection, as the reference@SolverAUTO/getCdfSysRespTdoes.static FeatureSetUnion of the feature sets of every solver AUTO can delegate to: a model AUTO can analyze is one that at least one candidate supports.Infinitesimal generator, always from SolverCTMC.getGenerator(SolverOptions options) Infinitesimal generator, always from SolverCTMC.getPerctRespT(double[] percentiles) Get response time percentilesdoubledoublegetProbAggr(Node node, Matrix state_a) doublegetProbMarg(Node node, int jobclass, Matrix state_m) Get marginalized state probabilityReturns the logarithm of the normalizing constant of state probabilities.Returns joint state probabilities for the entire system.Returns aggregated joint state probabilities for the entire system.Get the name of the selected solverState space, always from SolverCTMC.getStateSpace(SolverOptions options) State space, always from SolverCTMC.Model structure, as every other solver exposes it.Symbolic infinitesimal generator, always from SolverCTMC.getSymbolicGenerator(boolean invertSymbol) Symbolic infinitesimal generator, always from SolverCTMC.voidComputes transient average station metrics over the specified time interval.Returns cumulative distribution functions of passage times during transient analysis.Returns cumulative distribution functions of response times during transient analysis.Matrix[]getTranProb(Node node) Matrix[]getTranProbAggr(Node node) Matrix[]Matrix[]static booleanisMethodAlias(String family, String name, List<String> declared) Isnamea second spelling of another method this family declares?booleanIf a delegate solver has been selected, classify by it (once run, it knows the method it resolved at runtime).String[]Every token the CONSTRUCTOR accepts, INDEPENDENT of the model: the selection intents, the method families, and every family method in its QUALIFIED form.String[]The method names oflistAllMethods()that THIS MODEL can actually run.static String[]methodAliasPrefixes(String family) The prefixes under which a family advertises a SECOND SPELLING of a method it already declares plainly.static StringmethodClass(String family, String method, boolean isStochastic, boolean isProductForm, boolean isQbdShape, boolean hasCache) What KIND of answer a method returns: exact, approx, bound or simulation.static StringmetricGroupOf(String name) The measure group an accessor belongs to, "" when the name is none.static String[]The measure groupsfindSolver()reports on, in report order.perctRespT(double[] percentiles) Alias for getPerctRespT()doubleAlias for getProb()doubleAlias for getProbAggr()doubleAlias for getProbMarg()Alias for getProbNormConstAggr()probSys()Alias for getProbSys()Alias for getProbSysAggr()resolveMethodToken(String token) Split a method name into a selection intent, or into a family and the submethod handed to it.voidOverride the main run method to ensure proper delegationAlias for sample()sampleAggr(Node node, int numEvents) Alias for sampleSys()sampleSys(int numEvents) Samples joint system state trajectories.sampleSysAggr(int numEvents) Samples aggregated joint system state trajectories.static String[]Tokens that state what the solution is for, rather than naming an algorithm.booleanChecks if this solver supports the given network model.Methods inherited from class jline.solvers.NetworkSolver
aCaT, aCT, aCT, aCT, aCT, aCT, aCT, aIT, aLT, aNCT, aNCT, aNCT, aNCT, aNCT, aNCT, aNT, aNT, aNT, aNT, aNT, aNT, aOT, aRLT, aST, aST, aST, aT, aT, aT, aT, aT, aT, avg, avg, avgArvRHandles, avgChainT, avgChainT, avgChainT, avgChainT, avgChainT, avgChainT, avgChainTable, avgChainTable, avgChainTable, avgChainTable, avgChainTable, avgHandles, 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, avgNodeTputChain, avgNodeUtilChain, avgQLenHandles, avgResidTHandles, avgRespTHandles, avgSys, avgSysT, avgSysT, avgSysT, avgSysTable, avgSysTable, avgT, avgT, avgT, avgT, avgT, avgT, avgTable, avgTable, avgTable, avgTable, avgTable, avgTputHandles, avgUtilHandles, bindingCapacityReason, cacheAvgT, cdfPassT, cdfRespT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, chainAvgT, checkDeclaredMethod, citations, declaredAllMethods, declaredAllMethods, declaredValidMethods, declaredValidMethods, getAllSolvers, getAvg, getAvg, getAvgArvRHandles, getAvgCacheT, getAvgCacheTable, getAvgCacheTableImpl, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTable, getAvgChainTableImpl, getAvgChainTableImpl, getAvgHandles, getAvgItemT, getAvgItemTable, getAvgItemTableImpl, getAvgLossT, getAvgLossTable, getAvgNodeChain, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTable, getAvgNodeChainTableImpl, getAvgNodeChainTableImpl, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTable, getAvgNodeTableImpl, getAvgNodeTableImpl, getAvgOrbit, getAvgOrbitT, getAvgOrbitTable, getAvgOrbitTableImpl, getAvgQLenHandles, getAvgRegionLossT, getAvgRegionLossTable, getAvgResidTHandles, getAvgRespTHandles, getAvgSys, getAvgSys, getAvgSysTable, getAvgSysTable, getAvgSysTableImpl, getAvgT, getAvgT, getAvgT, getAvgT, getAvgT, getAvgT, getAvgTable, getAvgTable, getAvgTable, getAvgTable, getAvgTable, getAvgTableImpl, getAvgTableImpl, getAvgTputHandles, getAvgUtilHandles, getCdfPassT, getCdfRespT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getChainAvgT, getDeadlineTable, getLibrariesUsed, getModel, getMomentChainT, getMomentChainT, getMomentChainT, getMomentChainTable, getMomentChainTable, getMomentChainTable, getMomentStationT, getMomentStationT, getMomentStationT, getMomentStationTable, getMomentStationTable, getMomentStationTable, getMomentT, getMomentT, getMomentT, getMomentTable, getMomentTable, getMomentTable, getMomentTable, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getNodeChainAvgT, getPerctRespT, getProb, getProb, getProbAggr, getProbAggr, getProbMarg, getProbMarg, getProbSysMarg, getProbSysMarg, getSensitivityT, getSensitivityT, getSensitivityTable, getSensitivityTable, getStageT, getStageT, getStageTable, getStageTable, getSysAvgT, getSysAvgT, getSysAvgT, getTranCdfPassT, getTranCdfRespT, getTranHandles, hasAvgResults, hasBoundedBuffer, hasDistribResults, hasReneging, hasTranResults, initFromSolver, initHandles, itemAvgT, libraries, lossAvgT, mapEnvApprox, mCT, mCT, mCT, model, momentChainT, momentChainT, momentChainT, momentStationT, momentStationT, momentStationT, momentT, momentT, momentT, mST, mST, mST, mT, mT, mT, needsMapEnv, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, nodeChainAvgT, options, orbitAvgT, print, prob, prob, probAggr, probAggr, probMarg, probMarg, regionLossAvgT, runAnalyzerChecks, sample, sampleAggr, sensitivityT, sensitivityT, setAvgHandles, setAvgResults, setDistribResults, setLang, setModel, setTranAvgResults, setTranHandles, setTranProb, showLibraryAttribution, sT, sT, stageT, stageTable, supportsExactSensitivity, sysAvgT, sysAvgT, sysAvgT, tranAvg, tranCdfPassT, tranCdfPassT, tranCdfRespT, tranCdfRespT, tranHandles, unsupportedMethodReasonMethods inherited from class jline.solvers.Solver
defaultOptions, getMethodFeatureSet, getName, getOptions, getResults, hasResults, isJavaAvailable, isStochasticMethod, isValidOption, listValidOptions, parseOptions, parseOptions, reset, resetRandomGeneratorSeed, resolveMethod, selectMethod, setChecks, setOptions, supportsModelMethod, supportsTransientAnalysis, timeExceeded
-
Field Details
-
CANDIDATE_CTMC
public static final int CANDIDATE_CTMC- See Also:
-
CANDIDATE_LDES
public static final int CANDIDATE_LDES- See Also:
-
CANDIDATE_FLUID
public static final int CANDIDATE_FLUID- See Also:
-
CANDIDATE_MAM
public static final int CANDIDATE_MAM- See Also:
-
CANDIDATE_MVA
public static final int CANDIDATE_MVA- See Also:
-
CANDIDATE_NC
public static final int CANDIDATE_NC- See Also:
-
CANDIDATE_SSA
public static final int CANDIDATE_SSA- See Also:
-
METHOD_DEFAULT
- See Also:
-
METHOD_HEURISTIC
- See Also:
-
METHOD_SIM
- See Also:
-
METHOD_EXACT
- See Also:
-
METHOD_FAST
- See Also:
-
METHOD_ACCURATE
- See Also:
-
METHOD_BOUND
- See Also:
-
EXACT_POPULATION_MAX
public static final int EXACT_POPULATION_MAXPopulation at or below which an exact solver is preferred over an approximation, when one is available.- See Also:
-
-
Constructor Details
-
SolverAUTO
Constructor with model only -
SolverAUTO
Constructor with model and method -
SolverAUTO
Constructor with model and options -
SolverAUTO
Constructor with model and varargs
-
-
Method Details
-
getCandidateSolverNames
Get list of candidate solver names -
getGenerator
Infinitesimal generator, always from SolverCTMC.- Returns:
- the generator, event filtrations and synchronization info
-
getGenerator
Infinitesimal generator, always from SolverCTMC.- Parameters:
options- solver options for the CTMC solve- Returns:
- the generator, event filtrations and synchronization info
-
getSymbolicGenerator
Symbolic infinitesimal generator, always from SolverCTMC.- Returns:
- the symbolic generator decomposition
-
getSymbolicGenerator
Symbolic infinitesimal generator, always from SolverCTMC.- Parameters:
invertSymbol- divide each event filtration by its symbol instead of multiplying- Returns:
- the symbolic generator decomposition
-
getStateSpace
State space, always from SolverCTMC.- Returns:
- the global and per-node state spaces
-
getStateSpace
State space, always from SolverCTMC.- Parameters:
options- solver options for the state-space generation- Returns:
- the global and per-node state spaces
-
getStruct
Model structure, as every other solver exposes it.- Returns:
- the NetworkStruct of the model under analysis
-
listAllMethods
Every token the CONSTRUCTOR accepts, INDEPENDENT of the model: the selection intents, the method families, and every family method in its QUALIFIED form. The unqualified form is accepted too (resolveMethodToken looks it up) and is left out here to keep the list unambiguous.THIS is the list a method-NAME check must gate on.
listValidMethods()narrows it to the model in hand, and gating a name check on that would replace a rejection the delegate would have EXPLAINED with a flat "the method is unsupported by this solver" -- the same distinction SolverBA draws between its own listAllMethods and listValidMethods.- Returns:
- every AUTO token, regardless of the model
-
listValidMethods
The method names oflistAllMethods()that THIS MODEL can actually run.The gate is the one
chooseSolverRankedalready applies before delegating, asked here of every candidate instead of the first feasible one: a method whosesupportsModelMethodrefuses the model is not offered, and a family with no method-level gate is judged by its flat feature set throughsupports(model). The method-level gate is where the rules a feature set cannot express live (product form for "exact", a binding finite buffer, NC "mem" applicability).Without it this returned the token universe regardless of the model, naming every SolverNC method on the two-station BAS-blocking model of cqn_bas_blocking although SolverNC refuses that model method by method. A caller enumerating the list was being invited to ask for an analysis no candidate would perform.
A family whose every method is refused loses its bare method name too: "nc" alone delegates to SolverNC, which is exactly the rejection the per-method gate just returned.
This used to return the union of the intents and every candidate's UNQUALIFIED method names -- a set the class then ignored, since any method name but an intent fell through to the heuristic. It also cast each candidate's answer to String[], which throws for the half of the solvers that return List<String>, so those contributed nothing and the failure was swallowed.
- Returns:
- the AUTO tokens this model can run
-
metricGroups
The measure groupsfindSolver()reports on, in report order.A group is a family of accessors that stand or fall together: a solver that returns getCdfRespT returns getCdfPassT and getPerctRespT as well, because all three read the same passage time, so listing the three separately would say nothing extra.
- Returns:
- the group names
-
metricGroupOf
The measure group an accessor belongs to, "" when the name is none.A group name maps to itself, so findSolver("cdf") and findSolver("getCdfRespT") ask the same question.
THIS IS NOT chooseSolverHeur's TABLE, although both are keyed by accessor name. That one maps an accessor to a RANKING, i.e. which candidate should be preferred; this one maps it to a CAPABILITY question, i.e. which candidates can answer it at all. The two differ wherever a family can serve a measure but is never the one AUTO would pick for it.
- Parameters:
name- an accessor name or a group name- Returns:
- the group, or "" when the name belongs to none
-
familyMetrics
The measure groups a method family can answer.Every family answers "avg", which is what a solver is for; the rest is the capability declaration this class owns.
SOURCES, so that a claim here can be checked rather than trusted: "tran" is supportsTransientAnalysis, which FLD, CTMC, LDES and JMT override to true and no one else does. "cdf", "prob", "tranprob" and "sample" are the families that carry an implementation of the corresponding accessor rather than inheriting the base refusal. The remaining five groups are computed by NetworkSolver from a solver's own results, so no per-solver method marks them: their lists are chooseSolverHeur's rankings for the same accessors, which is where AUTO already records who can serve them.
A family that gains or loses a measure must be edited here in the same change, the way a solver that gains a feature is edited into its feature set: an omission here does not fail, it silently hides the family from a caller asking for that measure.
- Parameters:
family- the method family- Returns:
- its measure groups
-
methodClass
public static String methodClass(String family, String method, boolean isStochastic, boolean isProductForm, boolean isQbdShape, boolean hasCache) What KIND of answer a method returns: exact, approx, bound or simulation."simulation" is not decided here: isStochastic is the solver's own isStochasticMethod, which already tokenizes qualified and runtime-resolved names and is the only place that knowledge lives.
"exact" IS CLAIMED ONLY WHERE IT IS TRUE OF THIS MODEL, never of the algorithm in the abstract. Exactness of a normalizing constant or of mean value analysis is a property of the product-form model it is computed on, and of the QBD shape for the matrix analytic methods, so both conditions are passed in and a method that needs one reports "approx" without it. The bias is deliberate: an under-claimed "approx" costs a user a better method they could have had, an over-claimed "exact" costs them a wrong number they trusted.
A CACHE IS THE THIRD CONDITION, and it was the over-claim the bias above exists to prevent. snHasProductForm answers about the QUEUEING network and knows nothing of a cache: the hit/miss split is a class switch whose probabilities are not routing data but the output of a cache model, so a network holding one reads as product form and "mva.exact" was labelled exact on it. Measured on the tut06 shape with an LRU cache: exact MVA returns QLen 0.2516 at the hit station where the CTMC returns 0.3022 and simulation 0.3023, a 17% error under a label that says there is none. The analytic families are conditioned on it; SolverCTMC is NOT, because its state space carries the cache contents and it is exact there, which is what the two numbers above show.
- Parameters:
family- the method familymethod- the unqualified method nameisStochastic- the solver's own isStochasticMethod verdictisProductForm- whether the model has a product-form solutionisQbdShape- whether the model is one queueing station fed by a SourcehasCache- whether the model holds a Cache node- Returns:
- one of the SolverCandidate CLASS_ constants
-
findSolver
Which solvers and solver methods can analyze this model: the runnable pairs, for every measure.- Returns:
- one row per runnable (family, method) pair
-
findSolver
Which solvers and solver methods can analyze this model, and for the ones that cannot, why not.One row per (family, method) pair AUTO can be asked for; see
SolverCandidatefor the columns.THE GATE IS NOT A SECOND ONE. It is the gate chooseSolverRanked applies before delegating, asked of every candidate instead of of the first feasible one, which is exactly what
listValidMethods()already did -- that method is now the method column of the runnable rows, so the two cannot disagree. What is new is that the REASON the gate produced is kept rather than discarded, and that the answer carries the two facts a caller needs in order to choose among the survivors: whether the method is exact on this model, and which measures it can report.WHY A REASON HAS TO BE RECONSTRUCTED for some rows. The base supportsModelMethod returns a reason that names no feature when the solver does not diverge per method, since it then falls back to supports(model), which answers with a bare boolean. That is enough for a gate, which only has to stop the run, and not enough for a report, whose whole content is the explanation. So a refused row is re-asked against the solver's own feature set, which is where the offending feature names are.
- Parameters:
metric- a measure group ("cdf") or the accessor that returns it ("getCdfRespT"); "" or "any" keeps every pairshowAll- keep the refused pairs too, with the reason each was refused- Returns:
- the rows, in family order
-
findSolverLayered
public static List<SolverCandidate> findSolverLayered(LayeredNetwork model, String metric, boolean showAll) findSolver for a LayeredNetwork, which this class does not otherwise solve: its constructor takes a Network, and buildFamilySolver says so.THE FAMILY SET IS THE ONE THAT CAN BE BUILT OVER A LayeredNetwork, and not a shorter hand-picked list. MATLAB's familyAcceptsModelClass admits every family for a layered model and lets the ones that cannot be constructed drop out, which is how "ldes" stays in -- it analyzes an LQN natively -- while mva, nc, ctmc and the rest fall away because their constructors take a Network. Naming only "ln" and "lqns" here would have hidden the LDES row that MATLAB and native python both report.
- Parameters:
model- the layered modelmetric- a measure group or the accessor that returns it; "" keeps allshowAll- keep the refused pairs too- Returns:
- the rows, in family order
-
getFeatureSet
Union of the feature sets of every solver AUTO can delegate to: a model AUTO can analyze is one that at least one candidate supports.- Returns:
- the union feature set over all candidate solvers
-
getSelectedSolverName
Get the name of the selected solver -
isStochastic
public boolean isStochastic()If a delegate solver has been selected, classify by it (once run, it knows the method it resolved at runtime). Before selection, the delegate choice is unknown, so classify conservatively: true if any candidate is stochastic.- Overrides:
isStochasticin classSolver- Returns:
- true if the (prospective) delegate returns stochastic estimates
-
selectionIntents
Tokens that state what the solution is for, rather than naming an algorithm. -
familyNames
Method families, in the order in which an unqualified method name is looked up."ag" SITS AFTER "mam", whose RCAT names it took over, and is a family for the METHOD NAME and REPORT tables only: LINE(model, "ag.inap") and model.help() reach SolverAG through it. It is deliberately NOT a candidate of the automatic ranking (initializeCandidates builds that list by hand) and NOT in the feature-set union of getFeatureSet, so a G-network is still refused by "default" and has to be asked for by name; see _kb/06-solver-catalog.md, "SolverAG owns the RCAT methods".
-
methodAliasPrefixes
The prefixes under which a family advertises a SECOND SPELLING of a method it already declares plainly.THIS IS A DECLARATION, not a derivation, and belongs beside familyMetrics and methodClass for the same reason: the knowledge lives in the solver's own dispatch (SolverMVA strips a leading "amva." before selecting an algorithm) and no accessor exposes it, so a family that gains or loses an alias spelling must be edited into all four copies in the SAME change. An omission does not fail; it puts the same algorithm in the report twice.
- Parameters:
family- the method family- Returns:
- the alias prefixes, empty when the family advertises none
-
isMethodAlias
Isnamea second spelling of another method this family declares?The remainder has to be declared too, which is what keeps the rule from eating a genuine method that merely starts with the prefix: it is an alias only when the thing it aliases is there beside it.
- Parameters:
family- the method familyname- the declared method name under testdeclared- every method name the family declares on this model- Returns:
- true when the name only respells one of the others
-
familyAlias
Canonical family of a method name, or "" when the method name names none.- Parameters:
name- the token to classify- Returns:
- the family name, or "" when the method name names no family
-
familyDeclaringMethod
Find the family that declares an unqualified algorithm name, by asking each family for its own method list. Keeping the question there avoids a second copy of the name table here, which would drift.- Parameters:
token- the unqualified algorithm name- Returns:
- the family that declares it, or "" when none does
-
resolveMethodToken
Split a method name into a selection intent, or into a family and the submethod handed to it. A qualified method name "family.submethod" KEEPS its submethod: dropping it would silently downgrade a pinned method to the family default.- Parameters:
token- the requested method name, may be null- Returns:
- the resolved token
- Throws:
RuntimeException- when no family owns the method name
-
buildFamilySolver
Instantiate the solver of a method family.options.methodalready holds the submethod resolved byresolveMethodToken(java.lang.String), so a pinned method reaches the family that runs it.- Parameters:
family- the family nameoptions- the options, carrying the resolved submethod- Returns:
- the family's solver
-
runAnalyzer
public void runAnalyzer()Override the main run method to ensure proper delegation- Specified by:
runAnalyzerin classSolver
-
supports
Description copied from class:SolverChecks if this solver supports the given network model. Default implementation returns true; subclasses should override to provide specific feature validation. -
getAvgChainTable
Description copied from class:NetworkSolverReturns a table of average station metrics aggregated by job chains.- Overrides:
getAvgChainTablein classNetworkSolver- Returns:
- table containing station metrics organized by chains
-
getAvgSysTable
Description copied from class:NetworkSolverReturns a table of average system-level metrics.- Overrides:
getAvgSysTablein classNetworkSolver- Returns:
- table containing system response times and throughputs by chain
-
getAvgNodeTable
Description copied from class:NetworkSolverReturns a table of average node metrics organized by job classes.- Overrides:
getAvgNodeTablein classNetworkSolver- Returns:
- table containing node-level metrics for each class
-
getAvgTable
Description copied from class:NetworkSolverReturns a table of average station metrics organized by job classes.- Overrides:
getAvgTablein classNetworkSolver- Returns:
- table containing station-level metrics for each class
-
getAvg
- Overrides:
getAvgin classNetworkSolver
-
getAvgChain
Description copied from class:NetworkSolverReturns average station metrics aggregated by job chains.- Overrides:
getAvgChainin classNetworkSolver- Returns:
- solver result with metrics aggregated by chains
-
getAvgSys
public void getAvgSys()Description copied from class:NetworkSolverComputes average system-level metrics at steady state. This includes system response times and throughputs aggregated across all chains.- Overrides:
getAvgSysin classNetworkSolver
-
getAvgNode
Description copied from class:NetworkSolverComputes average performance metrics at steady-state for all nodes. This method aggregates station-level metrics to node-level metrics.- Overrides:
getAvgNodein classNetworkSolver- Returns:
- solver result containing node-level average metrics
-
getAvgArvRChain
Description copied from class:NetworkSolverReturns average arrival rates aggregated by job chains.- Overrides:
getAvgArvRChainin classNetworkSolver- Returns:
- matrix of arrival rates [stations x chains]
-
getAvgQLenChain
Description copied from class:NetworkSolverReturns average queue lengths aggregated by job chains.- Overrides:
getAvgQLenChainin classNetworkSolver- Returns:
- matrix of queue lengths [stations x chains]
-
getAvgUtilChain
Description copied from class:NetworkSolverReturns average server utilizations aggregated by job chains.- Overrides:
getAvgUtilChainin classNetworkSolver- Returns:
- matrix of utilizations [stations x chains]
-
getAvgRespTChain
Description copied from class:NetworkSolverReturns average response times aggregated by job chains.- Overrides:
getAvgRespTChainin classNetworkSolver- Returns:
- matrix of response times [stations x chains]
-
getAvgTputChain
Description copied from class:NetworkSolverReturns average throughputs aggregated by job chains.- Overrides:
getAvgTputChainin classNetworkSolver- Returns:
- matrix of throughputs [stations x chains]
-
getAvgSysRespT
Description copied from class:NetworkSolverReturns average system response times at steady state.- Overrides:
getAvgSysRespTin classNetworkSolver- Returns:
- matrix of system response times by chain
-
getAvgSysTput
Description copied from class:NetworkSolverReturns average system throughputs at steady state.- Overrides:
getAvgSysTputin classNetworkSolver- Returns:
- matrix of system throughputs by chain
-
getTranAvg
public void getTranAvg()Description copied from class:NetworkSolverComputes transient average station metrics over the specified time interval. The timespan is defined in the solver options.- Overrides:
getTranAvgin classNetworkSolver
-
getTranCdfPassT
Description copied from class:NetworkSolverReturns cumulative distribution functions of passage times during transient analysis. Uses default response time handles.- Overrides:
getTranCdfPassTin classNetworkSolver- Returns:
- result containing transient CDFs for passage times
-
getTranCdfRespT
Description copied from class:NetworkSolverReturns cumulative distribution functions of response times during transient analysis. Uses default response time handles.- Overrides:
getTranCdfRespTin classNetworkSolver- Returns:
- result containing transient CDFs for response times
-
getTranProb
-
getTranProbAggr
-
getTranProbSys
-
getTranProbSysAggr
-
sample
-
sampleAggr
-
sampleSys
Description copied from class:NetworkSolverSamples joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.- Overrides:
sampleSysin classNetworkSolver- Parameters:
numEvents- the number of events to sample- Returns:
- result containing sampled joint system state trajectories
-
sampleSysAggr
Description copied from class:NetworkSolverSamples aggregated joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.- Overrides:
sampleSysAggrin classNetworkSolver- Parameters:
numEvents- the number of events to sample- Returns:
- result containing sampled aggregated joint system state trajectories
-
getCdfRespT
Description copied from class:NetworkSolverReturns cumulative distribution functions of response times at steady-state. Uses default response time handles.- Overrides:
getCdfRespTin classNetworkSolver- Returns:
- result containing CDFs for response times [stations x classes]
-
getCdfSysRespT
System response time CDF per chain, always from SolverCTMC -- like the state-space accessors, it is a property of the CTMC representation, so it resolves on the CTMC candidate rather than the ranked selection, as the reference@SolverAUTO/getCdfSysRespTdoes. -
getCdfPT
Backward-compatible passage-time CDF name, resolved on the fluid family. -
getCdfAoI
Age-of-Information CDFs, a property of the ODE representation, so fluid-only. -
getCdfAoI
Age-of-Information CDFs on caller-supplied time points, fluid-only. -
getProb
-
getProbAggr
-
getProbSys
Description copied from class:NetworkSolverReturns joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.- Overrides:
getProbSysin classNetworkSolver- Returns:
- result containing joint state probabilities
-
getProbSysAggr
Description copied from class:NetworkSolverReturns aggregated joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.- Overrides:
getProbSysAggrin classNetworkSolver- Returns:
- result containing aggregated joint state probabilities
-
getProbNormConstAggr
Description copied from class:NetworkSolverReturns the logarithm of the normalizing constant of state probabilities. This is an abstract method that must be implemented by concrete solver subclasses.- Overrides:
getProbNormConstAggrin classNetworkSolver- Returns:
- result containing the log normalizing constant
-
getAvgQLen
Get average queue lengths at steady-state- Overrides:
getAvgQLenin classNetworkSolver- Returns:
- matrix of average queue lengths [stations x classes]
-
getAvgUtil
Get average utilizations at steady-state- Overrides:
getAvgUtilin classNetworkSolver- Returns:
- matrix of average utilizations [stations x classes]
-
getAvgRespT
Get average response times at steady-state- Overrides:
getAvgRespTin classNetworkSolver- Returns:
- matrix of average response times [stations x classes]
-
getAvgResidT
Get average residence times at steady-state- Overrides:
getAvgResidTin classNetworkSolver- Returns:
- matrix of average residence times [stations x classes]
-
getAvgWaitT
Get average waiting times (queue time excluding service)- Overrides:
getAvgWaitTin classNetworkSolver- Returns:
- matrix of average waiting times [stations x classes]
-
getAvgTput
Get average throughputs at steady-state- Overrides:
getAvgTputin classNetworkSolver
-
getAvgArvR
Get average arrival rates at steady-state- Overrides:
getAvgArvRin classNetworkSolver- Returns:
- matrix of average arrival rates [stations x classes]
-
getAvgQLenTable
Get average queue length table -
getAvgUtilTable
Get average utilization table -
getAvgRespTTable
Get average response time table -
getAvgTputTable
Get average throughput table -
getAvgResidTChain
Get average residence time by chain- Overrides:
getAvgResidTChainin classNetworkSolver- Returns:
- matrix of residence times [stations x chains]
-
getAvgNodeQLenChain
Get average node queue length by chain- Overrides:
getAvgNodeQLenChainin classNetworkSolver- Returns:
- matrix of node queue lengths [nodes x chains]
-
getAvgNodeUtilChain
Get average node utilization by chain- Overrides:
getAvgNodeUtilChainin classNetworkSolver- Returns:
- matrix of node utilizations [nodes x chains]
-
getAvgNodeRespTChain
Get average node response time by chain- Overrides:
getAvgNodeRespTChainin classNetworkSolver- Returns:
- matrix of node response times [nodes x chains]
-
getAvgNodeResidTChain
Get average node residence time by chain- Overrides:
getAvgNodeResidTChainin classNetworkSolver- Returns:
- matrix of node residence times [nodes x chains]
-
getAvgNodeTputChain
Get average node throughput by chain- Overrides:
getAvgNodeTputChainin classNetworkSolver- Returns:
- matrix of node throughputs [nodes x chains]
-
getAvgNodeArvRChain
Get average node arrival rate by chain- Overrides:
getAvgNodeArvRChainin classNetworkSolver- Returns:
- matrix of node arrival rates [nodes x chains]
-
getCdfPassT
Get CDF of passage times at steady-state- Overrides:
getCdfPassTin classNetworkSolver- Returns:
- result containing CDFs for passage times
-
getPerctRespT
Get response time percentiles -
getProbMarg
Get marginalized state probability -
avgTable
Alias for getAvgTable()- Overrides:
avgTablein classNetworkSolver
-
avgSysTable
Alias for getAvgSysTable()- Overrides:
avgSysTablein classNetworkSolver
-
avgNodeTable
Alias for getAvgNodeTable()- Overrides:
avgNodeTablein classNetworkSolver
-
avgChainTable
Alias for getAvgChainTable()- Overrides:
avgChainTablein classNetworkSolver
-
avg
Alias for getAvg()- Overrides:
avgin classNetworkSolver
-
avgChain
Alias for getAvgChain()- Overrides:
avgChainin classNetworkSolver
-
avgNode
Alias for getAvgNode()- Overrides:
avgNodein classNetworkSolver
-
avgQLen
Alias for getAvgQLen()- Overrides:
avgQLenin classNetworkSolver
-
avgUtil
Alias for getAvgUtil()- Overrides:
avgUtilin classNetworkSolver
-
avgRespT
Alias for getAvgRespT()- Overrides:
avgRespTin classNetworkSolver
-
avgResidT
Alias for getAvgResidT()- Overrides:
avgResidTin classNetworkSolver
-
avgWaitT
Alias for getAvgWaitT()- Overrides:
avgWaitTin classNetworkSolver
-
avgTput
Alias for getAvgTput()- Overrides:
avgTputin classNetworkSolver
-
avgArvR
Alias for getAvgArvR()- Overrides:
avgArvRin classNetworkSolver
-
avgQLenChain
Alias for getAvgQLenChain()- Overrides:
avgQLenChainin classNetworkSolver
-
avgUtilChain
Alias for getAvgUtilChain()- Overrides:
avgUtilChainin classNetworkSolver
-
avgRespTChain
Alias for getAvgRespTChain()- Overrides:
avgRespTChainin classNetworkSolver
-
avgResidTChain
Alias for getAvgResidTChain()- Overrides:
avgResidTChainin classNetworkSolver
-
avgTputChain
Alias for getAvgTputChain()- Overrides:
avgTputChainin classNetworkSolver
-
avgArvRChain
Alias for getAvgArvRChain()- Overrides:
avgArvRChainin classNetworkSolver
-
avgSysRespT
Alias for getAvgSysRespT()- Overrides:
avgSysRespTin classNetworkSolver
-
avgSysTput
Alias for getAvgSysTput()- Overrides:
avgSysTputin classNetworkSolver
-
cdfRespT
Alias for getCdfRespT()- Overrides:
cdfRespTin classNetworkSolver
-
cdfPassT
Alias for getCdfPassT()- Overrides:
cdfPassTin classNetworkSolver
-
perctRespT
Alias for getPerctRespT() -
prob
Alias for getProb() -
probAggr
Alias for getProbAggr() -
probSys
Alias for getProbSys()- Overrides:
probSysin classNetworkSolver
-
probSysAggr
Alias for getProbSysAggr()- Overrides:
probSysAggrin classNetworkSolver
-
probNormConstAggr
Alias for getProbNormConstAggr()- Overrides:
probNormConstAggrin classNetworkSolver
-
probMarg
Alias for getProbMarg() -
sample
Alias for sample() -
sampleSys
Alias for sampleSys()
-