Class NetworkSolver
- Direct Known Subclasses:
SolverAG,SolverAUTO,SolverBA,SolverCTMC,SolverFluid,SolverJMT,SolverLDES,SolverMAM,SolverMVA,SolverNC,SolverQNS,SolverSSA
This class provides the core functionality for analyzing queueing networks using various solution algorithms. It manages performance metrics computation including queue lengths, utilizations, response times, throughputs, and arrival rates at both steady-state and transient conditions.
The solver operates on Network models and produces results through various
table formats for different levels of aggregation (station-level, node-level, chain-level).
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionHandles for steady-state average performance metricsprotected StringPercentile extraction method of the last getPerctRespT call, for citations().protected StringPermanent engine of the last getProbSysMarg call ("exact", "bethe", ...), so that citations() reports the estimator that produced the number rather than only the identity behind the metric.The queueing network model to be solvedInternal data structure describing the network modelHandles for transient performance metrics -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedNetworkSolver(Network model, String name) Constructs a NetworkSolver with the specified model and name using default options.protectedNetworkSolver(Network model, String name, SolverOptions options) Constructs a NetworkSolver with the specified model, name, and options. -
Method Summary
Modifier and TypeMethodDescriptionaCaT()aCT()Alias for getAvgChainTable().aCT(boolean keepDisabled) Alias for getAvgChainTable(boolean keepDisabled).Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).aCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).aCT(SolverAvgHandles avgHandles) Alias for getAvgChainTable(SolverAvgHandles avgHandles).aCT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).aIT()aLT()aNCT()Short alias for getAvgNodeChainTable().aNCT(boolean keepDisabled) Short alias for getAvgNodeChainTable(boolean keepDisabled).Short alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).aNCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Short alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).aNCT(SolverAvgHandles avgHandles) Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).aNCT(SolverAvgHandles avgHandles, boolean keepDisabled) Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).aNT()Alias for getAvgNodeTable().aNT(boolean keepDisabled) Alias for getAvgNodeTable(boolean keepDisabled).Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).aNT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).aNT(SolverAvgHandles avgHandles) Alias for getAvgNodeTable(SolverAvgHandles avgHandles).aNT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).aOT()aRLT()aST()Short alias for getAvgSysTable().Short alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).aST(SolverAvgHandles avgHandles) Short alias for getAvgSysTable(SolverAvgHandles avgHandles).aT()aT(boolean keepDisabled) aT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) aT(SolverAvgHandles avgHandles) aT(SolverAvgHandles avgHandles, boolean keepDisabled) avg()avg(SolverAvgHandles avgHandles) avgArvR()avgChain()avgChainT(boolean keepDisabled) avgChainT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgChainT(SolverAvgHandles avgHandles) avgChainT(SolverAvgHandles avgHandles, boolean keepDisabled) avgChainTable(boolean keepDisabled) avgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgChainTable(SolverAvgHandles avgHandles) avgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) avgNode()avgNodeChainT(boolean keepDisabled) avgNodeChainT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgNodeChainT(SolverAvgHandles avgHandles) avgNodeChainT(SolverAvgHandles avgHandles, boolean keepDisabled) avgNodeChainTable(boolean keepDisabled) avgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgNodeChainTable(SolverAvgHandles avgHandles) avgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) avgNodeT()avgNodeT(boolean keepDisabled) avgNodeT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgNodeT(SolverAvgHandles avgHandles) avgNodeT(SolverAvgHandles avgHandles, boolean keepDisabled) avgNodeTable(boolean keepDisabled) avgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgNodeTable(SolverAvgHandles avgHandles) avgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled) avgQLen()avgRespT()voidavgSys()avgSysT()avgSysT(SolverAvgHandles avgHandles) avgSysTable(SolverAvgHandles avgHandles) avgT()avgT(boolean keepDisabled) avgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgT(SolverAvgHandles avgHandles) avgT(SolverAvgHandles avgHandles, boolean keepDisabled) avgTable()avgTable(boolean keepDisabled) avgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) avgTable(SolverAvgHandles avgHandles) avgTable(SolverAvgHandles avgHandles, boolean keepDisabled) avgTput()avgUtil()avgWaitT()static StringbindingCapacityReason(Network model, NetworkStruct sn, String solverName) THE TEST ITSELF ISNetwork.findBindingCapacity, one predicate with two callers: this gate, which words the refusal, andNetwork.getUsedLangFeatures, which marks the registry nameFiniteCapacityon the same answer, so a solver method that does not declare the name is refused by the feature set on exactly the models this gate refuses.cdfPassT()cdfRespT()Alias for getAvgChainTable().chainAvgT(boolean keepDisabled) Alias for getAvgChainTable(boolean keepDisabled).Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).chainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).chainAvgT(SolverAvgHandles avgHandles) Alias for getAvgChainTable(SolverAvgHandles avgHandles).chainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).protected voidcheckDeclaredMethod(SolverOptions options) THE PER-SOLVER METHOD GATE: a method outside this solver's ownlistValidMethodsis refused before any analyzer sees it.Bibliographic references for the algorithms this solver used.Every method this solver IMPLEMENTS, from its ownlistAllMethods(), or null when it publishes no such list.declaredAllMethods(Object solver) ThelistAllMethods()lookup for any solver instance, the model-INDEPENDENT counterpart ofdeclaredValidMethods(Object), so that SolverAUTO can build its method name universe without repeating theString[]versusList<String>normalisation.This solver's ownlistValidMethods(), as a list, or null when it declares none.declaredValidMethods(Object solver) The same lookup for any solver instance, so that SolverAUTO can build the union over its candidates without repeating theString[]versusList<String>normalisation (it used to cast every candidate's answer toString[], which throws for the List-returning half).static List<NetworkSolver>getAllSolvers(Network model) Returns a list containing instances of all available network solvers for the given model.getAvg()Computes and returns average station metrics at steady-state using individual handles.getAvg(SolverAvgHandles avgHandles) Computes and returns average station metrics at steady-state using specified handles.Computes and returns average arrival rates at steady-state.Returns average arrival rates aggregated by job chains.Returns the average arrival rate metric handles.Returns a table of detailed per-class cache performance metrics for every Cache node: a total row (List=0) per cache+read class plus, where the solver reports per-list hit probabilities and the cache has more than one list, one row per cache list.protected NetworkAvgCacheTableBody ofgetAvgCacheTable(), split out soLineResultRecordersees what the getter RETURNED.Returns average station metrics aggregated by job chains.Returns a table of average station metrics aggregated by job chains.getAvgChainTable(boolean keepDisabled) Returns a table of average station metrics aggregated by job chains with keepDisabled option.Returns a table of average station metrics aggregated by job chains using individual handles.getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average station metrics aggregated by job chains using individual handles and keepDisabled option.getAvgChainTable(SolverAvgHandles avgHandles) Returns a table of average station metrics aggregated by job chains using specified handles.getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) Returns a table of average station metrics aggregated by job chains using specified handles and keepDisabled option.protected NetworkAvgChainTableBody ofgetAvgChainTable(), split out soLineResultRecordersees what the getter RETURNED.protected NetworkAvgChainTablegetAvgChainTableImpl(boolean keepDisabled) Body ofgetAvgChainTable(boolean), split out soLineResultRecordersees what the getter RETURNED.Returns the steady-state average performance metric handles.Returns a table of item-level cache occupancy: one row per Cache node, item and cache list (level), with the steady-state probability the item resides in that list.protected NetworkAvgItemTableBody ofgetAvgItemTable(), split out soLineResultRecordersees what the getter RETURNED.Returns a table of loss (drop) metrics for every station-class pair that receives offered traffic: offered arrival rate, carried throughput, loss rate (ArvR - Tput) and loss ratio (LossRate / ArvR).Computes average performance metrics at steady-state for all nodes.Returns average node arrival rates aggregated by job chains.Returns average node metrics aggregated by job chains.Returns a table of average node metrics aggregated by chains.getAvgNodeChainTable(boolean keepDisabled) Returns a table of average node metrics aggregated by chains with keepDisabled option.Returns a table of average node metrics aggregated by chains using individual handles.getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average node metrics aggregated by chains using individual handles and keepDisabled option.getAvgNodeChainTable(SolverAvgHandles avgHandles) Returns a table of average node metrics aggregated by chains using specified handles.getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) Returns a table of average node metrics aggregated by chains using specified handles and keepDisabled option.protected NetworkAvgNodeChainTableBody ofgetAvgNodeChainTable(), split out soLineResultRecordersees what the getter RETURNED.protected NetworkAvgNodeChainTablegetAvgNodeChainTableImpl(boolean keepDisabled) Body ofgetAvgNodeChainTable(boolean), split out soLineResultRecordersees what the getter RETURNED.Returns average node queue lengths aggregated by job chains.Returns average node residence times aggregated by job chains.Returns average node response times aggregated by job chains.Returns a table of average node metrics organized by job classes.getAvgNodeTable(boolean keepDisabled) Returns a table of average node metrics organized by job classes with keepDisabled option.Returns a table of average node metrics organized by job classes using individual handles.getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average node metrics organized by job classes using individual handles and keepDisabled option.getAvgNodeTable(SolverAvgHandles avgHandles) Returns a table of average node metrics organized by job classes using specified handles.getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled) Returns a table of average node metrics organized by job classes using specified handles and keepDisabled option.protected NetworkAvgNodeTableBody ofgetAvgNodeTable(), split out soLineResultRecordersees what the getter RETURNED.protected NetworkAvgNodeTablegetAvgNodeTableImpl(boolean keepDisabled) Body ofgetAvgNodeTable(boolean), split out soLineResultRecordersees what the getter RETURNED.Returns average node throughputs aggregated by job chains.Returns average node utilizations aggregated by job chains.Mean number of jobs waiting in the ORBIT of each retrial station, as an (nstations x nclasses) matrix.Table of the mean orbit length of every retrial station-class pair, with the station population and the in-service population it decomposes into.protected NetworkAvgOrbitTableBody ofgetAvgOrbitTable(), split out soLineResultRecordersees what the getter RETURNED.Computes and returns average queue lengths at steady-state.Returns average queue lengths aggregated by job chains.Returns the average queue length metric handles.Returns a table of loss (drop) metrics per finite-capacity region and class, for regions that drop jobs (DROP rule).Computes and returns average residence times in queue (including service).Returns average residence times aggregated by job chains.Returns the average residence time metric handles.Computes and returns average response times at steady-state.Returns average response times aggregated by job chains.Returns the average response time metric handles.voidComputes average system-level metrics at steady state.voidComputes average system-level metrics at steady state using individual handles.voidgetAvgSys(SolverAvgHandles avgHandles) Computes average system-level metrics at steady state using specified handles.Returns average system response times at steady state.Returns a table of average system-level metrics.Returns a table of average system-level metrics using individual handles.getAvgSysTable(SolverAvgHandles avgHandles) Returns a table of average system-level metrics using specified handles.protected NetworkAvgSysTableBody ofgetAvgSysTable(), split out soLineResultRecordersees what the getter RETURNED.Returns average system throughputs at steady state.getAvgT()Alias for getAvgTable().getAvgT(boolean keepDisabled) Alias for getAvgTable(boolean keepDisabled).Alias for getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).getAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).getAvgT(SolverAvgHandles avgHandles) Alias for getAvgTable(SolverAvgHandles avgHandles).getAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgTable(SolverAvgHandles avgHandles, boolean keepDisabled).Returns a table of average station metrics organized by job classes.getAvgTable(boolean keepDisabled) Returns a table of average station metrics organized by job classes with keepDisabled option.Returns a table of average station metrics organized by job classes using individual handles.getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average station metrics organized by job classes using individual handles and keepDisabled option.getAvgTable(SolverAvgHandles avgHandles) Returns a table of average station metrics organized by job classes using specified handles.getAvgTable(SolverAvgHandles avgHandles, boolean keepDisabled) Returns a table of average station metrics organized by job classes using specified handles and keepDisabled option.protected NetworkAvgTableBody ofgetAvgTable(), split out soLineResultRecordersees what the getter RETURNED.protected NetworkAvgTablegetAvgTableImpl(boolean keepDisabled) Body ofgetAvgTable(boolean), split out soLineResultRecordersees what the getter RETURNED.Returns average throughputs aggregated by job chains.Returns the average throughput metric handles.Computes and returns average server utilizations at steady-state.Returns average server utilizations aggregated by job chains.Returns the average utilization metric handles.Computes and returns average waiting times in queue excluding service time.Returns cumulative distribution functions of passage times at steady-state.Returns cumulative distribution functions of passage times at steady-state.Returns cumulative distribution functions of response times at steady-state.Returns cumulative distribution functions of response times at steady-state.Alias for getAvgChainTable().getChainAvgT(boolean keepDisabled) Alias for getAvgChainTable(boolean keepDisabled).Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).getChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).getChainAvgT(SolverAvgHandles avgHandles) Alias for getAvgChainTable(SolverAvgHandles avgHandles).getChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).Returns a table of deadline-related metrics (response time and tardiness) organized by station and job class.getLibrariesUsed(NetworkStruct sn, SolverOptions options) Third-party libraries this solver will use on the given model, named once per session byshowLibraryAttribution(jline.lang.NetworkStruct, jline.solvers.SolverOptions).getModel()Returns the queueing network model being solved.getMomentChainT(int order) getMomentChainT(int[] order) Higher moments of the per-chain queue length, up to the second moment.getMomentChainTable(int order) Higher moments of the per-chain queue length, up to the given moment order.getMomentChainTable(int[] order) Higher moments of the per-chain queue length.getMomentStationT(int order) getMomentStationT(int[] order) Higher moments of the total queue length, up to the second moment.getMomentStationTable(int order) Higher moments of the total queue length, up to the given moment order.getMomentStationTable(int[] order) Higher moments of the total queue length.getMomentT(int order) getMomentT(int[] order) Exact higher moments of the per-class performance measures, up to the second moment.getMomentTable(int order) Exact higher moments of the per-class performance measures, up to the given moment order.getMomentTable(int[] order) Exact higher moments of the per-class performance measures.getMomentTable(int[] order, String method) Higher moments of the per-class performance measures, selecting how the queue-length moments are obtained on a closed single-server model.Alias for getAvgNodeTable().getNodeAvgT(boolean keepDisabled) Alias for getAvgNodeTable(boolean keepDisabled).Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).getNodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).getNodeAvgT(SolverAvgHandles avgHandles) Alias for getAvgNodeTable(SolverAvgHandles avgHandles).getNodeAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).Alias for getAvgNodeChainTable().getNodeChainAvgT(boolean keepDisabled) Alias for getAvgNodeChainTable(boolean keepDisabled).Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).getNodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).getNodeChainAvgT(SolverAvgHandles avgHandles) Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).getNodeChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).getPerctRespT(double[] percentiles, String method) getProb(int node) Returns marginal state probabilities for a specific node (all states).Returns marginal state probabilities for a specific node and state.getProbAggr(int node) Probability of a SPECIFIC per-class job distribution at a station (current state).getProbAggr(int node, Matrix state_a) Probability of a SPECIFIC per-class job distribution at a station.getProbMarg(int node, int jobclass) Probability distribution for queue length of a SINGLE class at a station (all states).getProbMarg(int node, int jobclass, Matrix state_m) Probability distribution for queue length of a SINGLE class at a station.Returns 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.getProbSysMarg(Matrix nvec) Returns the joint probability of the per-station TOTAL queue lengths, all classes summed out.getProbSysMarg(Matrix nvec, String engine) Returns the joint probability of the per-station total queue lengths, evaluated with a chosen permanent engine.getSensitivityT(String method, double step, String scheme) Performance sensitivities with respect to service rates.getSensitivityTable(String method, double step, String scheme) Performance sensitivities with respect to service rates, with an explicit branch, step and difference scheme.getStageT(boolean keepDisabled) Returns a table of average stage metrics organized by job classes.getStageTable(boolean keepDisabled) Returns a table of average stage metrics organized by job classes with keepDisabled option.Alias for getAvgSysTable().Alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).getSysAvgT(SolverAvgHandles avgHandles) Alias for getAvgSysTable(SolverAvgHandles avgHandles).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 passage times during transient analysis.Returns cumulative distribution functions of response times during transient analysis.Returns cumulative distribution functions of response times during transient analysis.Returns the transient performance metric handles.protected booleanChecks if the solver has computed steady-state average metrics.static booleanhasBoundedBuffer(NetworkStruct sn, int i) booleanChecks if the solver has computed steady-state distribution metrics.static booleanhasReneging(NetworkStruct sn, int i) Whether any class at stationideclares reneging, i.e.booleanChecks if the solver has computed transient average metrics.initFromSolver(NetworkSolver initSolver) Warm-start the solver from the steady-state solution of an auxiliary solver.protected voidInitializes performance metric handles from the model.itemAvgT()Third-party libraries this solver will use on its own model, without printing anything.lossAvgT()voidmapEnvApprox(SolverOptions options) Solver-agnostic random-environment approximation of a network with MAP/MMPP/MMAP arrival or service processes, for solvers that cannot consume a non-renewal process natively.mCT()mCT(int order) mCT(int[] order) model()momentChainT(int order) momentChainT(int[] order) momentStationT(int order) momentStationT(int[] order) momentT()momentT(int order) momentT(int[] order) mST()mST(int order) mST(int[] order) mT()mT(int order) mT(int[] order) booleanneedsMapEnv(SolverOptions options) Should this model be solved through the random-environment image of its MAP/MMPP processes instead of natively?nodeAvgT()Alias for getAvgNodeTable().nodeAvgT(boolean keepDisabled) Alias for getAvgNodeTable(boolean keepDisabled).Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).nodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).nodeAvgT(SolverAvgHandles avgHandles) Alias for getAvgNodeTable(SolverAvgHandles avgHandles).nodeAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).Alias for getAvgNodeChainTable().nodeChainAvgT(boolean keepDisabled) Alias for getAvgNodeChainTable(boolean keepDisabled).Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).nodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).nodeChainAvgT(SolverAvgHandles avgHandles) Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).nodeChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled) Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).options()Returns a fluent configurator for this solver's options, allowing chained calls such assolver.options().method("parallel").samples(20000) .seed(1).build().voidprint()Detailed print function that displays all contents of the NetworkSolver.prob(int node) probAggr(int node) probMarg(int node, int jobclass) probSys()voidrunAnalyzerChecks(SolverOptions options) Validates model compatibility and method support before analysis.sample(int node, int numEvents) Samples state trajectories for a specific node.sampleAggr(int node, int numEvents) Samples aggregated state trajectories for a specific node.sampleSys(int numEvents) Samples joint system state trajectories.sampleSysAggr(int numEvents) Samples aggregated joint system state trajectories.sensitivityT(String method, double step, String scheme) voidsetAvgHandles(SolverAvgHandles handles) Sets the steady-state average performance metric handles.voidsetAvgResults(Matrix Q, Matrix U, Matrix R, Matrix T, Matrix A, Matrix W, Matrix C, Matrix X, double runtime, String method, int iter) protected final voidsetDistribResults(Matrix RD, double runtime) Stores distribution metrics at steady-state.protected voidsetLang()Sets the language for solver execution.voidSets the queueing network model to be solved.voidsetTranAvgResults(Matrix[][] Qt, Matrix[][] Ut, Matrix[][] Rt, Matrix[][] Tt, Matrix[][] Ct, Matrix[][] Xt, double runtimet) Stores computed transient average metrics.voidsetTranHandles(SolverTranHandles handles) Sets the transient performance metric handles.protected final voidsetTranProb(Matrix t, Matrix pi_t, Matrix SS, double runtimet) Stores transient probability distributions.voidshowLibraryAttribution(NetworkStruct sn, SolverOptions options) Prints the library attribution once per session, honouring the verbosity.sT()stageT()booleanTrue when the solver evaluates a product-form recursion thatgetSensitivityTable()can differentiate analytically.sysAvgT()Alias for getAvgSysTable().Alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).sysAvgT(SolverAvgHandles avgHandles) Alias for getAvgSysTable(SolverAvgHandles avgHandles).voidtranAvg()protected StringunsupportedMethodReason(String method) A BY-NAME explanation for a method this solver does not implement, or an empty string when it has none.Methods inherited from class jline.solvers.Solver
defaultOptions, getMethodFeatureSet, getName, getOptions, getResults, hasResults, isJavaAvailable, isStochastic, isStochasticMethod, isValidOption, listValidOptions, parseOptions, parseOptions, reset, resetRandomGeneratorSeed, resolveMethod, runAnalyzer, selectMethod, setChecks, setOptions, supports, supportsModelMethod, supportsTransientAnalysis, timeExceeded
-
Field Details
-
model
The queueing network model to be solved -
sn
Internal data structure describing the network model -
avgHandles
Handles for steady-state average performance metrics -
tranHandles
Handles for transient performance metrics -
lastPerctMethod
Percentile extraction method of the last getPerctRespT call, for citations(). -
lastPermEngine
Permanent engine of the last getProbSysMarg call ("exact", "bethe", ...), so that citations() reports the estimator that produced the number rather than only the identity behind the metric.
-
-
Constructor Details
-
NetworkSolver
Constructs a NetworkSolver with the specified model, name, and options.- Parameters:
model- the queueing network model to solvename- the name identifier for this solver instanceoptions- configuration options for the solver- Throws:
RuntimeException- if the model is empty (has no nodes)
-
NetworkSolver
Constructs a NetworkSolver with the specified model and name using default options.- Parameters:
model- the queueing network model to solvename- the name identifier for this solver instance
-
-
Method Details
-
getAllSolvers
Returns a list containing instances of all available network solvers for the given model.- Parameters:
model- the queueing network model- Returns:
- list of all available solver implementations
-
avg
-
avg
-
avg
-
avgArvR
-
avgArvRChain
-
avgArvRHandles
-
avgChain
-
avgChainTable
-
avgChainTable
-
avgChainTable
-
avgChainTable
-
avgChainTable
-
avgChainTable
-
avgChainT
-
avgChainT
-
avgChainT
-
avgChainT
-
avgChainT
-
avgChainT
-
avgHandles
-
avgNode
-
avgNodeArvRChain
-
avgNodeChain
-
avgNodeChainTable
-
avgNodeChainTable
-
avgNodeChainTable
-
avgNodeChainTable
-
avgNodeChainTable
public NetworkAvgNodeChainTable avgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) -
avgNodeChainTable
-
avgNodeChainT
-
avgNodeChainT
-
avgNodeChainT
-
avgNodeChainT
-
avgNodeChainT
-
avgNodeChainT
-
avgNodeQLenChain
-
avgNodeResidTChain
-
avgNodeRespTChain
-
avgNodeTable
-
avgNodeTable
-
avgNodeTable
-
avgNodeTable
-
avgNodeTable
-
avgNodeTable
-
avgNodeT
-
avgNodeT
-
avgNodeT
-
avgNodeT
-
avgNodeT
-
avgNodeT
-
avgNodeTputChain
-
avgNodeUtilChain
-
avgQLen
-
avgQLenChain
-
avgQLenHandles
-
avgResidT
-
avgResidTChain
-
avgResidTHandles
-
avgRespT
-
avgRespTChain
-
avgRespTHandles
-
avgSys
public void avgSys() -
avgSysRespT
-
avgSysTable
-
avgSysTable
-
avgSysTable
-
avgSysT
-
avgSysT
-
avgSysT
-
avgSysTput
-
options
Returns a fluent configurator for this solver's options, allowing chained calls such assolver.options().method("parallel").samples(20000) .seed(1).build(). The terminalbuild()returns this solver.- Returns:
- a
NetworkSolver.SolverConfiguratorwrapping this solver
-
avgTable
-
avgTable
-
avgTable
-
avgTable
-
avgTable
-
avgTable
-
avgT
-
avgT
-
avgT
-
avgT
-
avgT
-
avgT
-
aT
-
aT
-
aT
-
aT
-
aT
-
aT
-
avgTput
-
avgTputChain
-
avgTputHandles
-
avgUtil
-
avgUtilChain
-
avgUtilHandles
-
avgWaitT
-
cdfPassT
-
cdfPassT
-
cdfRespT
-
cdfRespT
-
needsMapEnv
Should this model be solved through the random-environment image of its MAP/MMPP processes instead of natively?True when the ONLY features the resolved method cannot consume are non-renewal processes, i.e. the model becomes supported once each modulated process is frozen into an exponential stage (see
mapEnvApprox(SolverOptions)and jline.io.MAPQN2RENV). A model that also uses some other unsupported feature keeps its original rejection, since the environment image would not make it solvable.Mirrors matlab @NetworkSolver/NetworkSolver.m needsMapEnv.
- Parameters:
options- the solver options in force- Returns:
- true when the fallback should run in place of runAnalyzer
-
mapEnvApprox
Solver-agnostic random-environment approximation of a network with MAP/MMPP/MMAP arrival or service processes, for solvers that cannot consume a non-renewal process natively.MAPQN2RENV.map2renv turns each modulated process into a set of environment stages in which that process is exponential with the phase-conditional intensity, and SolverENV recombines the stages with the calling solver as the stage solver. Three recombinations exist and which ones are reachable is decided by the solver's transient capability: 'meanfield' carries the queue state across a phase switch but needs getTranAvg on the stage solver, while 'dec' (quasi-stationary limit) and 'avg' (rate-averaged limit) use steady state alone. options.config.map_env_method selects one; 'auto' takes 'meanfield' whenever the solver supports transient analysis and otherwise compares the mean stage holding time with the model relaxation time.
Mirrors matlab @NetworkSolver/mapEnvApprox.m.
- Parameters:
options- the solver options in force
-
getAvg
-
getAvg
Computes and returns average station metrics at steady-state using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- solver result containing station-level average metrics
- Throws:
RuntimeException- if unable to compute results
-
getAvg
public SolverResult getAvg(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Computes and returns average station metrics at steady-state using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- solver result containing station-level average metrics
- Throws:
RuntimeException- if unable to compute results
-
getAvgArvR
Computes and returns average arrival rates at steady-state. If results are not available, triggers solver execution.- Returns:
- matrix of average arrival rates [stations x classes]
-
getAvgArvRChain
Returns average arrival rates aggregated by job chains.- Returns:
- matrix of arrival rates [stations x chains]
-
getAvgArvRHandles
Returns the average arrival rate metric handles.- Returns:
- handles for arrival rate metrics
-
getAvgChain
Returns average station metrics aggregated by job chains.- Returns:
- solver result with metrics aggregated by chains
-
getAvgChainTable
Returns a table of average station metrics aggregated by job chains.- Returns:
- table containing station metrics organized by chains
-
getAvgChainTableImpl
Body ofgetAvgChainTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgChainTable
Returns a table of average station metrics aggregated by job chains using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- table containing station metrics organized by chains
-
getAvgChainTable
public NetworkAvgChainTable getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Returns a table of average station metrics aggregated by job chains using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station metrics organized by chains
-
getAvgChainTable
Returns a table of average station metrics aggregated by job chains with keepDisabled option.- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getAvgChainTableImpl
Body ofgetAvgChainTable(boolean), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgChainTable
Returns a table of average station metrics aggregated by job chains using specified handles and keepDisabled option.- Parameters:
avgHandles- custom handles for performance metricskeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getAvgChainTable
public NetworkAvgChainTable getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average station metrics aggregated by job chains using individual handles and keepDisabled option.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
Alias for getAvgChainTable().- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
Alias for getAvgChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
Alias for getAvgChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
public NetworkAvgChainTable getChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station metrics organized by chains
-
getChainAvgT
public NetworkAvgChainTable getChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
chainAvgT
Alias for getAvgChainTable().- Returns:
- table containing station metrics organized by chains
-
chainAvgT
Alias for getAvgChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
chainAvgT
Alias for getAvgChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing station metrics organized by chains
-
chainAvgT
Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
chainAvgT
public NetworkAvgChainTable chainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station metrics organized by chains
-
chainAvgT
public NetworkAvgChainTable chainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
aCT
Alias for getAvgChainTable().- Returns:
- table containing station metrics organized by chains
-
aCT
Alias for getAvgChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
aCT
Alias for getAvgChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing station metrics organized by chains
-
aCT
Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
aCT
public NetworkAvgChainTable aCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station metrics organized by chains
-
aCT
public NetworkAvgChainTable aCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station metrics organized by chains
-
getAvgHandles
Returns the steady-state average performance metric handles.- Returns:
- the average handles object
-
setAvgHandles
Sets the steady-state average performance metric handles.- Parameters:
handles- the average handles to set
-
getAvgNode
Computes average performance metrics at steady-state for all nodes. This method aggregates station-level metrics to node-level metrics.- Returns:
- solver result containing node-level average metrics
-
getAvgNodeArvRChain
Returns average node arrival rates aggregated by job chains.- Returns:
- matrix of node arrival rates [nodes x chains]
-
getAvgNodeChain
Returns average node metrics aggregated by job chains.- Returns:
- solver result with node metrics aggregated by chains
-
getAvgNodeChainTable
Returns a table of average node metrics aggregated by chains.- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeChainTableImpl
Body ofgetAvgNodeChainTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgNodeChainTable
Returns a table of average node metrics aggregated by chains using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeChainTable
public NetworkAvgNodeChainTable getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Returns a table of average node metrics aggregated by chains using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeChainTable
Returns a table of average node metrics aggregated by chains with keepDisabled option.- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeChainTableImpl
Body ofgetAvgNodeChainTable(boolean), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgNodeChainTable
public NetworkAvgNodeChainTable getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled) Returns a table of average node metrics aggregated by chains using specified handles and keepDisabled option.- Parameters:
avgHandles- custom handles for performance metricskeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeChainTable
public NetworkAvgNodeChainTable getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average node metrics aggregated by chains using individual handles and keepDisabled option.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
Alias for getAvgNodeChainTable().- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
Alias for getAvgNodeChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
public NetworkAvgNodeChainTable getNodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics organized by job chains
-
getNodeChainAvgT
public NetworkAvgNodeChainTable getNodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
Alias for getAvgNodeChainTable().- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
Alias for getAvgNodeChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
public NetworkAvgNodeChainTable nodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics organized by job chains
-
nodeChainAvgT
public NetworkAvgNodeChainTable nodeChainAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
Short alias for getAvgNodeChainTable().- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
Short alias for getAvgNodeChainTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
public NetworkAvgNodeChainTable aNCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Short alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics organized by job chains
-
aNCT
public NetworkAvgNodeChainTable aNCT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Short alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics organized by job chains
-
getAvgNodeQLenChain
Returns average node queue lengths aggregated by job chains.- Returns:
- matrix of node queue lengths [nodes x chains]
-
getAvgNodeResidTChain
Returns average node residence times aggregated by job chains.- Returns:
- matrix of node residence times [nodes x chains]
-
getAvgNodeRespTChain
Returns average node response times aggregated by job chains.- Returns:
- matrix of node response times [nodes x chains]
-
getAvgNodeTable
Returns a table of average node metrics organized by job classes.- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTableImpl
Body ofgetAvgNodeTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgNodeTable
Returns a table of average node metrics organized by job classes using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTable
public NetworkAvgNodeTable getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Returns a table of average node metrics organized by job classes using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTable
Returns a table of average node metrics organized by job classes with keepDisabled option.- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTableImpl
Body ofgetAvgNodeTable(boolean), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgCacheTable
Returns a table of detailed per-class cache performance metrics for every Cache node: a total row (List=0) per cache+read class plus, where the solver reports per-list hit probabilities and the cache has more than one list, one row per cache list. Port of matlab getAvgCacheTable.m.- Returns:
- cache performance table
-
getAvgCacheTableImpl
Body ofgetAvgCacheTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgItemTable
Returns a table of item-level cache occupancy: one row per Cache node, item and cache list (level), with the steady-state probability the item resides in that list. Populated only where the solver computes a per-item distribution (the NC/MVA cache algorithms, isolated and integrated alike, the delayed-hit retrieval algorithms, and SolverCTMC); the simulators leave it empty. SolverCTMC reports the TIME-WEIGHTED (time-stationary) law, a state reward of the exact stationary distribution, where the NC/MVA algorithms report the EMBEDDED (per-request) law of the cache-content chain seen at request instants; the two coincide only under PASTA, so they differ once service times distinguish hits from misses. DelayedHitQLen is the mean number of secondary requests waiting on the in-flight fetch of the item (exact under SolverCTMC, NaN where not computed) and DelayedHitQLenFull additionally counts the triggering request. Port of matlab getAvgItemTable.m.- Returns:
- item-level cache occupancy table
-
getAvgItemTableImpl
Body ofgetAvgItemTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgNodeTable
Returns a table of average node metrics organized by job classes using specified handles and keepDisabled option.- Parameters:
avgHandles- custom handles for performance metricskeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTable
public NetworkAvgNodeTable getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average node metrics organized by job classes using individual handles and keepDisabled option.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
Alias for getAvgNodeTable().- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
Alias for getAvgNodeTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
public NetworkAvgNodeTable getNodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics for each class
-
getNodeAvgT
public NetworkAvgNodeTable getNodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
Alias for getAvgNodeTable().- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
Alias for getAvgNodeTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
public NetworkAvgNodeTable nodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics for each class
-
nodeAvgT
public NetworkAvgNodeTable nodeAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
aNT
Alias for getAvgNodeTable().- Returns:
- table containing node-level metrics for each class
-
aNT
Alias for getAvgNodeTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
aNT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing node-level metrics for each class
-
aNT
Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
aNT
public NetworkAvgNodeTable aNT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing node-level metrics for each class
-
aNT
public NetworkAvgNodeTable aNT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing node-level metrics for each class
-
getAvgNodeTputChain
Returns average node throughputs aggregated by job chains.- Returns:
- matrix of node throughputs [nodes x chains]
-
getAvgNodeUtilChain
Returns average node utilizations aggregated by job chains.- Returns:
- matrix of node utilizations [nodes x chains]
-
getAvgQLen
Computes and returns average queue lengths at steady-state. If results are not available, triggers solver execution.- Returns:
- matrix of average queue lengths [stations x classes]
-
getAvgOrbit
Mean number of jobs waiting in the ORBIT of each retrial station, as an (nstations x nclasses) matrix. Stations that are not retrial queues report 0.A retrial station has no waiting room: a job that finds every server busy joins the orbit instead of queueing, so its station population splits into the jobs currently in service and the jobs orbiting. getAvgQLen reports the whole station population, which is why the orbit had to be recovered by hand as QLen - Util. This method reports it directly.
The in-service population is obtained from the station throughput by Little's law applied to the servers alone, E[in service] = X * E[S], which holds for any service distribution and any number of servers, so the orbit length is exact whenever QLen and Tput are.
- Returns:
- the mean orbit length per station and class
-
getAvgOrbitTable
Table of the mean orbit length of every retrial station-class pair, with the station population and the in-service population it decomposes into.Reported as a separate table rather than as an extra column of getAvgTable so that the average table keeps its shape for models without retrials.
- Returns:
- the orbit table
-
getAvgOrbitTableImpl
Body ofgetAvgOrbitTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgLossTable
Returns a table of loss (drop) metrics for every station-class pair that receives offered traffic: offered arrival rate, carried throughput, loss rate (ArvR - Tput) and loss ratio (LossRate / ArvR). Only pairs with ArvR > 0 are listed, which excludes the Source. Port of MATLAB getAvgLossTable.m.- Returns:
- the loss table
-
getAvgRegionLossTable
Returns a table of loss (drop) metrics per finite-capacity region and class, for regions that drop jobs (DROP rule). Each row reports the offered arrival rate (carried Tput plus drop rate), the carried throughput, the loss rate (region drop rate) and the loss ratio (LossRate / ArvR). Only regions with offered traffic are listed; empty for solvers that do not track region drops (only the LDES simulation populates the FCR drop rate).- Returns:
- the region loss table
-
getAvgQLenChain
Returns average queue lengths aggregated by job chains.- Returns:
- matrix of queue lengths [stations x chains]
-
getAvgQLenHandles
Returns the average queue length metric handles.- Returns:
- handles for queue length metrics
-
getAvgResidT
Computes and returns average residence times in queue (including service). If results are not available, triggers solver execution.- Returns:
- matrix of average residence times [stations x classes]
-
getAvgResidTChain
Returns average residence times aggregated by job chains.- Returns:
- matrix of residence times [stations x chains]
-
getAvgResidTHandles
Returns the average residence time metric handles.- Returns:
- handles for residence time metrics
-
getAvgRespT
Computes and returns average response times at steady-state. If results are not available, triggers solver execution.- Returns:
- matrix of average response times [stations x classes]
-
getAvgRespTChain
Returns average response times aggregated by job chains.- Returns:
- matrix of response times [stations x chains]
-
getAvgRespTHandles
Returns the average response time metric handles.- Returns:
- handles for response time metrics
-
getAvgSys
public void getAvgSys()Computes average system-level metrics at steady state. This includes system response times and throughputs aggregated across all chains. -
getAvgSys
Computes average system-level metrics at steady state using specified handles. This includes system response times and throughputs aggregated across all chains.- Parameters:
avgHandles- custom handles for performance metrics
-
getAvgSys
Computes average system-level metrics at steady state using individual handles. This includes system response times and throughputs aggregated across all chains.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle
-
getAvgSysRespT
Returns average system response times at steady state.- Returns:
- matrix of system response times by chain
-
getAvgSysTable
Returns a table of average system-level metrics.- Returns:
- table containing system response times and throughputs by chain
-
getAvgSysTableImpl
Body ofgetAvgSysTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgSysTable
Returns a table of average system-level metrics using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- table containing system response times and throughputs by chain
-
getAvgSysTable
public NetworkAvgSysTable getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Returns a table of average system-level metrics using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing system response times and throughputs by chain
-
getSysAvgT
Alias for getAvgSysTable().- Returns:
- table containing system response times and throughputs by chain
-
getSysAvgT
Alias for getAvgSysTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing system response times and throughputs by chain
-
getSysAvgT
public NetworkAvgSysTable getSysAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing system response times and throughputs by chain
-
sysAvgT
Alias for getAvgSysTable().- Returns:
- table containing system response times and throughputs by chain
-
sysAvgT
Alias for getAvgSysTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing system response times and throughputs by chain
-
sysAvgT
public NetworkAvgSysTable sysAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing system response times and throughputs by chain
-
aST
Short alias for getAvgSysTable().- Returns:
- table containing system response times and throughputs by chain
-
aST
Short alias for getAvgSysTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing system response times and throughputs by chain
-
aST
public NetworkAvgSysTable aST(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Short alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing system response times and throughputs by chain
-
getAvgSysTput
Returns average system throughputs at steady state.- Returns:
- matrix of system throughputs by chain
-
getAvgTable
Returns a table of average station metrics organized by job classes.- Returns:
- table containing station-level metrics for each class
-
getAvgTableImpl
Body ofgetAvgTable(), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgTable
Returns a table of average station metrics organized by job classes using specified handles.- Parameters:
avgHandles- custom handles for performance metrics- Returns:
- table containing station-level metrics for each class
-
getAvgTable
public NetworkAvgTable getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Returns a table of average station metrics organized by job classes using individual handles.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station-level metrics for each class
-
getAvgTable
Returns a table of average station metrics organized by job classes with keepDisabled option.- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
getAvgTableImpl
Body ofgetAvgTable(boolean), split out soLineResultRecordersees what the getter RETURNED. The JAVA cross-codebase parity row is measured from that rather than from what an example printed. -
getAvgTable
Returns a table of average station metrics organized by job classes using specified handles and keepDisabled option.- Parameters:
avgHandles- custom handles for performance metricskeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
getAvgTable
public NetworkAvgTable getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Returns a table of average station metrics organized by job classes using individual handles and keepDisabled option.- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
getSensitivityTable
Performance sensitivities with respect to service rates.Returns a table with one row per (Station, JobClass) giving the derivative of that row's mean performance measures with respect to that station-class service RATE: dTput_dRate, dRespT_dRate, dQLen_dRate and dUtil_dRate. Every derivative is with respect to the row's OWN rate, i.e. the diagonal of the full parameter Jacobian.
Two branches produce the derivatives, selected automatically:
"exact": analytic differentiation of a product-form recursion, exact to machine precision and cheaper than a single extra solve. Closed networks use
pfqn_sens(differentiated MVA), open networks the closed-form BCMP sensitivities, their stations being decoupled. Rate derivatives follow the chain rule d(.)/d(rate) = -(L/rate) d(.)/dL, since L(i,r) = visits(i,r)/rate(i,r). Available only on the solvers that evaluate that recursion,SolverMVAandSolverNC, and only for single-server queues plus an optional delay, with mixed (open+closed) models excluded."fd": forward or central finite differences on the CALLING solver's own predictions: the service process at (station,class) is rate-scaled by (1+h), the same solver with the same options is re-run, and the difference quotient is formed. This costs 1+M*R solves (forward) or 2*M*R (central), and it is the only branch that applies to non-product-form models, so it is what every solver other than
SolverMVAandSolverNCuses.The branch actually taken is reported by
NetworkSensitivityTable.getMethod(). The rawpfqn_sensresult, which carries the full Jacobian that this table shows only the diagonal of, is onNetworkSensitivityTable.getSens(); it is the second output that the MATLAB reference returns alongside the table, and is null on the open exact branch and on the finite-difference branch.- Returns:
- table of per-class rate sensitivities
- See Also:
-
getSensitivityTable
Performance sensitivities with respect to service rates, with an explicit branch, step and difference scheme. Counterpart of MATLAB'sgetSensitivityTable(self, 'method', M, 'step', H, 'scheme', S).- Parameters:
method- one of "auto" (exact where available and in scope, finite differences otherwise), "exact", "fd"step- relative step of the rate perturbation; NaN selects the default, 1e-4 for the deterministic solvers and 1e-2 for the simulators, whose Monte Carlo error would otherwise dominate the difference quotientscheme- "forward" or "central"- Returns:
- table of per-class rate sensitivities
- Throws:
RuntimeException- if the arguments are invalid, or if "exact" is asked of a solver or a model that is out of the analytic scope- See Also:
-
supportsExactSensitivity
public boolean supportsExactSensitivity()True when the solver evaluates a product-form recursion thatgetSensitivityTable()can differentiate analytically. False here, so that a solver reaching this base implementation obtains its sensitivities by finite differences on its own predictions. Overridden bySolverMVAandSolverNC.- Returns:
- false
-
getMomentTable
Exact higher moments of the per-class performance measures, up to the second moment.- Returns:
- table of per-class queue-length and response-time moments
- See Also:
-
getMomentTable
Exact higher moments of the per-class performance measures, up to the given moment order.A scalar order k is read as the set 1..k, "everything up to order k", so that
getMomentTable(2)means "up to the second moment" and not "the second moment alone". UsegetMomentTable(int[])to select an explicit set of orders.- Parameters:
order- the highest moment order to report, an integer in 1..3- Returns:
- table of per-class queue-length and response-time moments
- See Also:
-
getMomentTable
Exact higher moments of the per-class performance measures.Returns a table with one row per (Station, JobClass) giving, in addition to the means that
getAvgTable()reports, the higher moments of that row's queue length and response time.orderis a SET of moment orders, taken literally: order 1 contributes QLen and RespT, order 2 contributes QLenVar, QLenSCV, RespTVar and RespTSCV, order 3 contributes QLenSkew and RespTSkew. Sonew int[]{1,2}is the default and is the same as the scalar 2, whilenew int[]{2,3}selects the second moments and the skewness without the means.Order 3 also adds QLenSkew, the skewness of the per-class queue length. That quantity is reachable because the generating parameter need not scale a whole demand column: scaling L(i,r) alone is Theorem 1 of Akyildiz and Strelen with the class subset T = {r}, and it generates the moments of n(i,r) itself. QLenSkew is available only for closed single-server models, which is the scope of
Pfqn_sens_mom; it is NaN otherwise.All of it is exact, not simulated and not approximated. The queue-length moments come from the product-form identity Cov[n(i,r),n(j,s)] = L(j,s) dQ(i,r)/dL(j,s), evaluated by the
Pfqn_sens_*family.RESPONSE-TIME MOMENTS ARE FCFS OR PROCESSOR-SHARING. RespTVar, RespTSCV and RespTSkew are NaN at any station that is neither, and at an LCFS center in particular, because the sojourn-time distribution there is not known in general (Strelen 1990, Section 4) and a wrong value is worse than a blank. The mean RespT is always reported, since it needs no distributional result.
The FCFS moments come from
Pfqn_sens_resptand are closed-model only. The processor-sharing moments come from Mitra and Morrison (1983) and cover two configurations, both requiring exponential single-server service: purely open, whereQsys_mm1_psis exact at any PS station whose arrivals are Poisson, that is, that lies on no routing cycle; and purely closed, wherePfqn_respt_ps_momentscovers the terminal-driven system the paper analyses, one PS station visited once per think cycle with delay stations holding the think time. A PS station outside those configurations keeps RespTVar = NaN.Scope by model type: closed single-server uses
pfqn_sens_mva; closed multiserver and mixed open/closed usepfqn_sens_mvaldmx; purely open single-server uses the exact BCMP closed form; purely open multiserver is not supported.The raw results, including the full covariance matrices that this table shows only the diagonal of, are on
NetworkMomentTable.getMoments().- Parameters:
order- the set of moment orders to report; each must be an integer in 1..3. Null or empty selects the default, up to the second moment.- Returns:
- table of per-class queue-length and response-time moments
- See Also:
-
getMomentTable
Higher moments of the per-class performance measures, selecting how the queue-length moments are obtained on a closed single-server model.methodis "" (or null) for the default, "exact" to force thePfqn_sens_*recursion however large the population lattice, and "momlin" to forcePfqn_momlin: the same covariance identity, but with the demand derivatives taken by linearizing the Schweitzer-Bard fixed point instead of the exact recursion. The default is exact unless the lattice prod(N+1) exceeds 1e6 points, in which case momlin is used and a warning is raised. The cost of the exact recursion is exponential in the number of CLASSES, not in the population, which is what the gate guards against. On the momlin branch BOTH moments carry the AMVA error, andNetworkMomentResult.qlenMomlinis non-null.methodis ignored on multiserver, mixed and purely open models, which have no momlin path.- Parameters:
order- the set of moment orders to report; each an integer in 1..3method- "", "exact" or "momlin"- Returns:
- table of per-class queue-length and response-time moments
-
getMomentStationTable
Higher moments of the total queue length, up to the second moment.- Returns:
- table of per-station total queue-length moments
- See Also:
-
getMomentStationTable
Higher moments of the total queue length, up to the given moment order.- Parameters:
order- the highest moment order to report, an integer in 1..3- Returns:
- table of per-station total queue-length moments
- See Also:
-
getMomentStationTable
Higher moments of the total queue length.Returns a table with one row per Station giving the moments of the TOTAL queue length at that station, Q_i = sum_r n(i,r).
orderis a SET of moment orders, taken literally: order 1 contributes QLen, order 2 contributes QLenVar and QLenSCV, order 3 contributes QLenM3 and QLenSkew. Sonew int[]{1,3}gives the mean and the third moment without the variance.Why this is a separate table from
getMomentTable(int[]). The generating parameter here is x_i, the reciprocal of the capacity of station i, which scales the service times of ALL classes at that station at once, so the moments it produces are those of the station total. The per-class and per-chain groupings of the same recursion are ingetMomentTable(int[])andgetMomentChainTable(int[])respectively; all three are Theorem 1 of Akyildiz and Strelen under different class subsets T, of which Strelen's whole-column x_i is the case T = all classes. The three are consistent: Var[Q_i] here equals the sum of the per-class covariances ofgetMomentTable(int[])at station i over all class pairs.The ALGORITHM is chosen by the solver's method, set at construction, not by an argument here: a method is a property of the solver object, so passing one per call would let a single solver answer with two different algorithms.
new SolverMVA(model)->pfqn_sens_mom, exact, but it walks the whole population lattice at a cost of prod(N+1), so it is unusable once the populations are large.new SolverMVA(model,"method","lin")->pfqn_sens_linearizer, approximate and polynomial-time. The reference reports relative errors below 2.1% on E[Q], 4.1% on E[Q^2] and 6.2% on E[Q^3].
Any Linearizer-family method (
"lin","amva.lin","egflin","gflin") takes the approximate path; every other method takes the exact one.Restricted to closed single-server models. Mixed and open second moments are available per class from
getMomentTable(int[]); the higher moments of the reference are stated for closed load-independent networks only.Reference: J. C. Strelen, "Moment Analysis for Closed Queuing Networks and its Linearizer", Performance Evaluation 11:127-142, 1990, Theorem 3.1 and equation (3.2).
- Parameters:
order- the set of moment orders to report; each must be an integer in 1..3. Null or empty selects the default, up to the second moment.- Returns:
- table of per-station total queue-length moments
- See Also:
-
getMomentChainTable
Higher moments of the per-chain queue length, up to the second moment.- Returns:
- table of per-(Station, Chain) queue-length moments
- See Also:
-
getMomentChainTable
Higher moments of the per-chain queue length, up to the given moment order.- Parameters:
order- the highest moment order to report, an integer in 1..3- Returns:
- table of per-(Station, Chain) queue-length moments
- See Also:
-
getMomentChainTable
Higher moments of the per-chain queue length.Returns a table with one row per (Station, Chain) giving the moments of the queue length of that chain at that station, Q_(i,c) = sum_(r in chain c) n(i,r). This is the chain-level analogue of
getAvgChainTable(), and it sits between the two other moment tables:getMomentTable(int[])is per class,getMomentStationTable(int[])is per station total, and this one is per chain, i.e. per group of classes that circulate together.Unlike the per-class table, order 3 is fully available here. All three tables are the same recursion under different groupings of the classes: the generating parameter scales the service times of a class subset T at a station, and the moments it produces are those of sum_(r in T) n(i,r). T = {r} gives
getMomentTable(int[]), T = chain gives this table, T = all classes givesgetMomentStationTable(int[]). That is Theorem 1 of Akyildiz and Strelen; Strelen's own x_i is the last case.The ALGORITHM is chosen by the solver's method, set at construction, not by an argument here; see
getMomentStationTable(int[]). A Linearizer-family method approximates the per-station totals only, so it cannot express a per-chain grouping and is rejected here unless every class already sits in one chain, in which case the chain IS the station total.Restricted to closed, single-server models, which is the scope of
Pfqn_sens_mom.Reference: I. F. Akyildiz and J. C. Strelen, "Moment Analysis for Load-Dependent Mixed Product Form Queueing Networks", IEEE Trans. Communications 39(6):828-832, 1991, Theorem 1; J. C. Strelen, "Moment Analysis for Closed Queuing Networks and its Linearizer", Performance Evaluation 11:127-142, 1990, equation (3.2).
- Parameters:
order- the set of moment orders to report; each must be an integer in 1..3. Null or empty selects the default, up to the second moment.- Returns:
- table of per-(Station, Chain) queue-length moments
- See Also:
-
getAvgT
Alias for getAvgTable().- Returns:
- table containing station-level metrics for each class
-
getAvgT
Alias for getAvgTable(boolean keepDisabled).- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
getAvgT
Alias for getAvgTable(SolverAvgHandles avgHandles).- Parameters:
avgHandles- the average handles to use- Returns:
- table containing station-level metrics for each class
-
getAvgT
Alias for getAvgTable(SolverAvgHandles avgHandles, boolean keepDisabled).- Parameters:
avgHandles- the average handles to usekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
getAvgT
public NetworkAvgTable getAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A) Alias for getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handle- Returns:
- table containing station-level metrics for each class
-
getAvgT
public NetworkAvgTable getAvgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled) Alias for getAvgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled).- Parameters:
Q- queue length handleU- utilization handleR- response time handleW- residence time handleT- throughput handleA- arrival rate handlekeepDisabled- whether to include disabled metrics in the table- Returns:
- table containing station-level metrics for each class
-
momentT
-
momentT
-
momentT
-
mT
-
mT
-
mT
-
getMomentT
-
getMomentT
-
getMomentT
-
momentChainT
-
momentChainT
-
momentChainT
-
mCT
-
mCT
-
mCT
-
getMomentChainT
-
getMomentChainT
-
getMomentChainT
-
momentStationT
-
momentStationT
-
momentStationT
-
mST
-
mST
-
mST
-
getMomentStationT
-
getMomentStationT
-
getMomentStationT
-
sensitivityT
-
sensitivityT
-
sT
-
sT
-
getSensitivityT
-
getSensitivityT
-
cacheAvgT
-
aCaT
-
getAvgCacheT
-
itemAvgT
-
aIT
-
getAvgItemT
-
orbitAvgT
-
aOT
-
getAvgOrbitT
-
lossAvgT
-
aLT
-
getAvgLossT
-
regionLossAvgT
-
aRLT
-
getAvgRegionLossT
-
getDeadlineTable
Returns a table of deadline-related metrics (response time and tardiness) organized by station and job class.- Returns:
- table containing response time and tardiness metrics, or null if tardiness data is not available
-
getLibrariesUsed
Third-party libraries this solver will use on the given model, named once per session byshowLibraryAttribution(jline.lang.NetworkStruct, jline.solvers.SolverOptions).LINE bundles ports of BUTools, Q-MAM, MAMSolver, rmf_tool and others under
jline/lib, and credits them so a user knows whose algorithms produced the numbers. This is distinct fromInputOutput.line_ack, which credits an external TOOL a wrapper solver shells out to (JMT, LQNS, qnsolver). Solvers that use no bundled library inherit the empty list.- Parameters:
sn- the model structure, may be nulloptions- the solver options, may be null- Returns:
- the library names, possibly empty
-
citations
Bibliographic references for the algorithms this solver used.The references follow what the run actually did: the method the analyzer resolved to (not merely the one requested), the fork-join transformation if the model has forks, and the percentile method of the last getPerctRespT call. Mirrors MATLAB @NetworkSolver/citations.m and python NetworkSolver.citations.
The bibliography key on each entry is internal shorthand for doc/latex/biblio.bib and is not meant to be displayed.
- Returns:
- one entry per distinct paper
-
libraries
Third-party libraries this solver will use on its own model, without printing anything.Attribution in LINE is pull-based, in the spirit of Sage's
sage.misc.citation.get_systems: nothing is written to the console during a solve, and the user asks for the list when citing. The wrapper acknowledgement (InputOutput.line_ack) follows the same rule: it prints only atVerboseLevel.DEBUG.- Returns:
- the library names, possibly empty
-
showLibraryAttribution
Prints the library attribution once per session, honouring the verbosity. Not called automatically: seelibraries().- Parameters:
sn- the model structure, may be nulloptions- the solver options, may be null
-
getPerctRespT
-
getAvgTput
-
getAvgTputChain
Returns average throughputs aggregated by job chains.- Returns:
- matrix of throughputs [stations x chains]
-
getAvgTputHandles
Returns the average throughput metric handles.- Returns:
- handles for throughput metrics
-
getAvgUtil
Computes and returns average server utilizations at steady-state. If results are not available, triggers solver execution.- Returns:
- matrix of average utilizations [stations x classes]
-
getAvgUtilChain
Returns average server utilizations aggregated by job chains.- Returns:
- matrix of utilizations [stations x chains]
-
getAvgUtilHandles
Returns the average utilization metric handles.- Returns:
- handles for utilization metrics
-
getAvgWaitT
Computes and returns average waiting times in queue excluding service time. Waiting time = Response time - Service time (1/rate)- Returns:
- matrix of average waiting times [stations x classes]
-
getCdfPassT
Returns cumulative distribution functions of passage times at steady-state. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
R- response time handles (optional)- Returns:
- result containing CDFs for passage times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getCdfPassT
Returns cumulative distribution functions of passage times at steady-state. Uses default response time handles.- Returns:
- result containing CDFs for passage times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getCdfRespT
Returns cumulative distribution functions of response times at steady-state. Uses an exponential approximation based on average response times.- Parameters:
R- response time handles (optional)- Returns:
- result containing CDFs for response times [stations x classes]
-
getCdfRespT
Returns cumulative distribution functions of response times at steady-state. Uses default response time handles.- Returns:
- result containing CDFs for response times [stations x classes]
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getModel
Returns the queueing network model being solved.- Returns:
- the network model
-
initFromSolver
Warm-start the solver from the steady-state solution of an auxiliary solver. The auxiliary solver's steady-state distribution decides an integer job placement (seeWarmStart.warmStartPlacement(jline.solvers.NetworkSolver, jline.lang.NetworkStruct)): with SolverCTMC the mode of the exact aggregate stationary distribution, with any other solver the rounded mean queue lengths conserving each closed-class population. The placement is applied as the model initial state via initFromMarginal, which the state-driven solvers honor: SolverFluid starts the ODE integration from it, SolverSSA starts the simulated trajectory from it, and SolverJMT preloads the stations with it. Note that this modifies the initial state of the model object shared with any other solver instance.- Parameters:
initSolver- auxiliary solver used to compute the steady-state distribution- Returns:
- this solver, for chaining
-
setModel
Sets the queueing network model to be solved.- Parameters:
model- the network model to set
-
getProb
Returns marginal state probabilities for a specific node and state. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
node- the node index for which to compute probabilitiesstate- the state vector to query (optional, null for all states)- Returns:
- result containing marginal state probabilities
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProb
Returns marginal state probabilities for a specific node (all states). This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
node- the node index for which to compute probabilities- Returns:
- result containing marginal state probabilities
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbAggr
Probability of a SPECIFIC per-class job distribution at a station. Returns P(n1 jobs of class 1, n2 jobs of class 2, ...) for given state.Compare with
getProbMarg(int, int, jline.util.matrix.Matrix): returns queue-length distribution for a single class, i.e., P(n jobs of class r) for n=0,1,...,N(r).- Parameters:
node- the node index for which to compute probabilitiesstate_a- per-class job counts, e.g., [2,1] = 2 class-1, 1 class-2- Returns:
- scalar probability in [0,1]
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbAggr
Probability of a SPECIFIC per-class job distribution at a station (current state). Returns P(n1 jobs of class 1, n2 jobs of class 2, ...).Compare with
getProbMarg(int, int, jline.util.matrix.Matrix): returns queue-length distribution for a single class, i.e., P(n jobs of class r) for n=0,1,...,N(r).- Parameters:
node- the node index for which to compute probabilities- Returns:
- scalar probability in [0,1]
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbMarg
Probability distribution for queue length of a SINGLE class at a station. Returns P(n jobs of class r) for n=0,1,...,N(r).Compare with
getProbAggr(int, jline.util.matrix.Matrix): returns probability of a specific per-class distribution, e.g., P(2 class-1, 1 class-2) as a scalar.- Parameters:
node- the node index for which to compute probabilitiesjobclass- the job class index for marginalizationstate_m- specific states to query, or null for all- Returns:
- vector where element n+1 = P(n jobs of this class)
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbMarg
Probability distribution for queue length of a SINGLE class at a station (all states). Returns P(n jobs of class r) for n=0,1,...,N(r).Compare with
getProbAggr(int, jline.util.matrix.Matrix): returns probability of a specific per-class distribution, e.g., P(2 class-1, 1 class-2) as a scalar.- Parameters:
node- the node index for which to compute probabilitiesjobclass- the job class index for marginalization- Returns:
- vector where element n+1 = P(n jobs of this class)
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbNormConstAggr
Returns the logarithm of the normalizing constant of state probabilities. This is an abstract method that must be implemented by concrete solver subclasses.- Returns:
- result containing the log normalizing constant
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbSys
Returns joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.- Returns:
- result containing joint state probabilities
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbSysAggr
Returns aggregated joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.- Returns:
- result containing aggregated joint state probabilities
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbSysMarg
Returns the joint probability of the per-station TOTAL queue lengths, all classes summed out. Unlike getProbSysAggr this is not a product form: it sums the per-class joint over every table with these row sums, which SolverNC does through a permanent.- Parameters:
nvec- per-station total job counts- Returns:
- result containing the joint probability
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getProbSysMarg
Returns the joint probability of the per-station total queue lengths, evaluated with a chosen permanent engine.- Parameters:
nvec- per-station total job countsengine- permanent engine- Returns:
- result containing the joint probability
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getStageTable
Returns a table of average stage metrics organized by job classes. For non-environment models, this returns the same as getAvgTable() since there is only one implicit stage.- Returns:
- table containing stage-level metrics for each class
-
getStageTable
Returns a table of average stage metrics organized by job classes with keepDisabled option. For non-environment models, this returns the same as getAvgTable(keepDisabled) since there is only one implicit stage.- Parameters:
keepDisabled- whether to include disabled metrics in the table- Returns:
- table containing stage-level metrics for each class
-
getTranAvg
public void getTranAvg()Computes transient average station metrics over the specified time interval. The timespan is defined in the solver options. -
getTranCdfPassT
Returns cumulative distribution functions of passage times during transient analysis. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
R- response time handles (optional)- Returns:
- result containing transient CDFs for passage times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getTranCdfPassT
Returns cumulative distribution functions of passage times during transient analysis. Uses default response time handles.- Returns:
- result containing transient CDFs for passage times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getTranCdfRespT
Returns cumulative distribution functions of response times during transient analysis. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
R- response time handles (optional)- Returns:
- result containing transient CDFs for response times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getTranCdfRespT
Returns cumulative distribution functions of response times during transient analysis. Uses default response time handles.- Returns:
- result containing transient CDFs for response times
- Throws:
RuntimeException- if not implemented by the concrete solver
-
getTranHandles
Returns the transient performance metric handles.- Returns:
- the transient handles object
-
setTranHandles
Sets the transient performance metric handles.- Parameters:
handles- the transient handles to set
-
hasAvgResults
protected boolean hasAvgResults()Checks if the solver has computed steady-state average metrics.- Returns:
- true if steady-state results are available, false otherwise
-
hasDistribResults
public boolean hasDistribResults()Checks if the solver has computed steady-state distribution metrics.- Returns:
- true if distribution results are available
-
hasTranResults
public boolean hasTranResults()Checks if the solver has computed transient average metrics.- Returns:
- true if transient results are available, false otherwise
-
initHandles
protected void initHandles()Initializes performance metric handles from the model. This method retrieves and sets both average and transient handles. -
model
-
print
public void print()Detailed print function that displays all contents of the NetworkSolver. This function prints actual values, not reference addresses, and includes ALL fields from both NetworkSolver and its parent Solver class for comprehensive comparison. -
prob
-
prob
-
probAggr
-
probAggr
-
probMarg
-
probMarg
-
probNormConstAggr
-
probSys
-
probSysAggr
-
runAnalyzerChecks
Validates model compatibility and method support before analysis.- Overrides:
runAnalyzerChecksin classSolver- Parameters:
options- solver options containing method specification- Throws:
RuntimeException- if model contains unsupported features or method is invalid
-
checkDeclaredMethod
THE PER-SOLVER METHOD GATE: a method outside this solver's ownlistValidMethodsis refused before any analyzer sees it.It went missing in the JAR, and that is what let the lists drift.
Solver.runAnalyzerChecksgates against the flat cross-solver blob oflistValidOptions().allMethods, which names every method of every solver,NetworkSolver.runAnalyzerChecksreplaced it with nothing, and only SolverNC and SolverFluid called that method at all -- so in the JAR alone a name could be advertised by listValidMethods and never dispatched (SolverSSA 'ssa', SolverFluid 'softmin'), or dispatched and never advertised (SolverMAM 'dec.source.mmap'), with nothing to catch either. MATLAB gates on the solver's OWN list in@NetworkSolver/NetworkSolver.m:218and python insolvers/base.pyrunAnalyzerChecks; this is called from getAvg and getTranAvg, the two entry points every accessor reaches, so no solver has to remember to.enableChecksexempts it, which is how a SolverLN layer backend keeps passing its layer method through.IT ASKS WHAT THE SOLVER IMPLEMENTS, NOT WHAT THIS MODEL CAN RUN. Where a solver publishes
listAllMethods()that is the list, becauselistValidMethods()narrows to the model in hand and gating on it replaces a rejection the analyzer would have EXPLAINED with a flat "the method is unsupported by this solver". SolverBA already made that distinction for its own dispatcher (see thelistAllMethods, NOT listValidMethodscomment there); this gate sits above the dispatcher and has to make it too, or `qrf.mmi` on a model with a delay station reports "unsupported by this solver" instead of naming the infinite-server station that actually rules it out.- Parameters:
options- the options carrying the requested method
-
unsupportedMethodReason
A BY-NAME explanation for a method this solver does not implement, or an empty string when it has none.It answers about the NAME and not about the model, which is what makes it safe to call from
checkDeclaredMethod(jline.solvers.SolverOptions): that gate runs before the struct is necessarily usable, so an override must not reach forgetStruct()or for anything else that depends on the model. A reason that depends on the model belongs inSolver.supportsModelMethod(String), which runs later and is allowed to.The case this exists for is a method that MOVED. Dropping the name from
listValidMethodsis what makes the solver refuse it, and it is also what loses the forwarding address, so the two have to be declared together. C++ has always ordered the two this way --check_methodcallsrcat_moved_to_agBEFORE its unlisted-method throw -- and this is the JAR counterpart of that helper.- Parameters:
method- the requested method name- Returns:
- the explanation, or "" when the solver has none
-
declaredAllMethods
Every method this solver IMPLEMENTS, from its ownlistAllMethods(), or null when it publishes no such list.Static on the solvers that have it, so the lookup is by name and not through an instance method; the
String[]/List<String>normalisation is the same asdeclaredValidMethods(Object). -
declaredValidMethods
This solver's ownlistValidMethods(), as a list, or null when it declares none.The signature is not uniform across the solvers -- some return
String[]and someList<String>-- and there is no common declaration to override, so the lookup is reflective and normalises both shapes. A solver with no such method, or one that throws while building its list (e.g. because the struct is not ready), contributes null and is not gated: no claim, no gate.- Returns:
- the declared method names, or null when the solver declares none
-
declaredValidMethods
The same lookup for any solver instance, so that SolverAUTO can build the union over its candidates without repeating theString[]versusList<String>normalisation (it used to cast every candidate's answer toString[], which throws for the List-returning half).- Parameters:
solver- the solver to interrogate- Returns:
- the declared method names, or null when the solver declares none
-
declaredAllMethods
ThelistAllMethods()lookup for any solver instance, the model-INDEPENDENT counterpart ofdeclaredValidMethods(Object), so that SolverAUTO can build its method name universe without repeating theString[]versusList<String>normalisation.- Parameters:
solver- the solver to interrogate- Returns:
- every method the solver implements, or null when it publishes no such list
-
sample
Samples state trajectories for a specific node. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
node- the node index to sample fromnumEvents- the number of events to sample- Returns:
- result containing sampled state trajectories
- Throws:
RuntimeException- if not implemented by the concrete solver
-
sampleAggr
Samples aggregated state trajectories for a specific node. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
node- the node index to sample fromnumEvents- the number of events to sample- Returns:
- result containing sampled aggregated state trajectories
- Throws:
RuntimeException- if not implemented by the concrete solver
-
sampleSys
Samples joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
numEvents- the number of events to sample- Returns:
- result containing sampled joint system state trajectories
- Throws:
RuntimeException- if not implemented by the concrete solver
-
sampleSysAggr
Samples aggregated joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.- Parameters:
numEvents- the number of events to sample- Returns:
- result containing sampled aggregated joint system state trajectories
- Throws:
RuntimeException- if not implemented by the concrete solver
-
setAvgResults
-
setDistribResults
Stores distribution metrics at steady-state.- Parameters:
RD- distribution data [stations x classes] containing CDFsruntime- computation time for distribution analysis
-
setLang
protected void setLang()Sets the language for solver execution. This method configures the solver to use either MATLAB or Java backend. -
setTranAvgResults
public void setTranAvgResults(Matrix[][] Qt, Matrix[][] Ut, Matrix[][] Rt, Matrix[][] Tt, Matrix[][] Ct, Matrix[][] Xt, double runtimet) Stores computed transient average metrics.- Parameters:
Qt- transient queue length matrices [time][stations x classes]Ut- transient utilization matrices [time][stations x classes]Rt- transient response time matrices [time][stations x classes]Tt- transient throughput matrices [time][stations x classes]Ct- transient system response time matrices [time][chains]Xt- transient system throughput matrices [time][chains]runtimet- computation time for transient analysis
-
setTranProb
Stores transient probability distributions.- Parameters:
t- time points vectorpi_t- transient probability distributionsSS- steady-state distributionruntimet- computation time for transient analysis
-
stageTable
-
stageT
-
getStageT
-
getStageT
-
tranAvg
public void tranAvg() -
tranCdfPassT
-
tranCdfPassT
-
tranCdfRespT
-
tranCdfRespT
-
tranHandles
-
hasReneging
Whether any class at stationideclares reneging, i.e. a waiting job may abandon. Such a station has a bounded queue at every offered load, so the saturation test in getAvg does not apply to it.- Parameters:
sn- the network structi- station index- Returns:
- true if some class at the station reneges
-
hasBoundedBuffer
-
bindingCapacityReason
THE TEST ITSELF ISNetwork.findBindingCapacity, one predicate with two callers: this gate, which words the refusal, andNetwork.getUsedLangFeatures, which marks the registry nameFiniteCapacityon the same answer, so a solver method that does not declare the name is refused by the feature set on exactly the models this gate refuses. The rules (node-level caps, not sn.cap/sn.classcap; only a capacity that can BIND; open classes always bind; Cache models exempt) are documented on the helper, which reads the class populations from the class objects rather than fromsn.- Parameters:
sn- - unused; kept so that the call sites, which all pass the model's own struct, need not change
-