Class SolverAUTO

Direct Known Subclasses:
AUTO, LINE

public class SolverAUTO extends NetworkSolver
Automatic solver selection for queueing network models.

This solver automatically selects the most appropriate solution method based on model characteristics and requested performance metrics.

  • Field Details

  • Constructor Details

    • SolverAUTO

      public SolverAUTO(Network model)
      Constructor with model only
    • SolverAUTO

      public SolverAUTO(Network model, String method)
      Constructor with model and method
    • SolverAUTO

      public SolverAUTO(Network model, SolverOptions options)
      Constructor with model and options
    • SolverAUTO

      public SolverAUTO(Network model, Object... varargin)
      Constructor with model and varargs
  • Method Details

    • getCandidateSolverNames

      public List<String> getCandidateSolverNames()
      Get list of candidate solver names
    • getGenerator

      public SolverCTMC.generatorResult getGenerator()
      Infinitesimal generator, always from SolverCTMC.
      Returns:
      the generator, event filtrations and synchronization info
    • getGenerator

      public SolverCTMC.generatorResult getGenerator(SolverOptions options)
      Infinitesimal generator, always from SolverCTMC.
      Parameters:
      options - solver options for the CTMC solve
      Returns:
      the generator, event filtrations and synchronization info
    • getSymbolicGenerator

      public SolverCTMC.symbolicGeneratorResult getSymbolicGenerator()
      Symbolic infinitesimal generator, always from SolverCTMC.
      Returns:
      the symbolic generator decomposition
    • getSymbolicGenerator

      public SolverCTMC.symbolicGeneratorResult getSymbolicGenerator(boolean invertSymbol)
      Symbolic infinitesimal generator, always from SolverCTMC.
      Parameters:
      invertSymbol - divide each event filtration by its symbol instead of multiplying
      Returns:
      the symbolic generator decomposition
    • getStateSpace

      public SolverCTMC.StateSpace getStateSpace()
      State space, always from SolverCTMC.
      Returns:
      the global and per-node state spaces
    • getStateSpace

      public SolverCTMC.StateSpace getStateSpace(SolverOptions options)
      State space, always from SolverCTMC.
      Parameters:
      options - solver options for the state-space generation
      Returns:
      the global and per-node state spaces
    • getStruct

      public NetworkStruct getStruct()
      Model structure, as every other solver exposes it.
      Returns:
      the NetworkStruct of the model under analysis
    • listAllMethods

      public String[] listAllMethods()
      Every token the CONSTRUCTOR accepts, INDEPENDENT of the model: the selection intents, the method families, and every family method in its QUALIFIED form. The unqualified form is accepted too (resolveMethodToken looks it up) and is left out here to keep the list unambiguous.

      THIS is the list a method-NAME check must gate on. listValidMethods() narrows it to the model in hand, and gating a name check on that would replace a rejection the delegate would have EXPLAINED with a flat "the method is unsupported by this solver" -- the same distinction SolverBA draws between its own listAllMethods and listValidMethods.

      Returns:
      every AUTO token, regardless of the model
    • listValidMethods

      public String[] listValidMethods()
      The method names of listAllMethods() that THIS MODEL can actually run.

      The gate is the one chooseSolverRanked already applies before delegating, asked here of every candidate instead of the first feasible one: a method whose supportsModelMethod refuses the model is not offered, and a family with no method-level gate is judged by its flat feature set through supports(model). The method-level gate is where the rules a feature set cannot express live (product form for "exact", a binding finite buffer, NC "mem" applicability).

      Without it this returned the token universe regardless of the model, naming every SolverNC method on the two-station BAS-blocking model of cqn_bas_blocking although SolverNC refuses that model method by method. A caller enumerating the list was being invited to ask for an analysis no candidate would perform.

      A family whose every method is refused loses its bare method name too: "nc" alone delegates to SolverNC, which is exactly the rejection the per-method gate just returned.

      This used to return the union of the intents and every candidate's UNQUALIFIED method names -- a set the class then ignored, since any method name but an intent fell through to the heuristic. It also cast each candidate's answer to String[], which throws for the half of the solvers that return List<String>, so those contributed nothing and the failure was swallowed.

      Returns:
      the AUTO tokens this model can run
    • metricGroups

      public static String[] metricGroups()
      The measure groups findSolver() reports on, in report order.

      A group is a family of accessors that stand or fall together: a solver that returns getCdfRespT returns getCdfPassT and getPerctRespT as well, because all three read the same passage time, so listing the three separately would say nothing extra.

      Returns:
      the group names
    • metricGroupOf

      public static String metricGroupOf(String name)
      The measure group an accessor belongs to, "" when the name is none.

      A group name maps to itself, so findSolver("cdf") and findSolver("getCdfRespT") ask the same question.

      THIS IS NOT chooseSolverHeur's TABLE, although both are keyed by accessor name. That one maps an accessor to a RANKING, i.e. which candidate should be preferred; this one maps it to a CAPABILITY question, i.e. which candidates can answer it at all. The two differ wherever a family can serve a measure but is never the one AUTO would pick for it.

      Parameters:
      name - an accessor name or a group name
      Returns:
      the group, or "" when the name belongs to none
    • familyMetrics

      public static String[] familyMetrics(String family)
      The measure groups a method family can answer.

      Every family answers "avg", which is what a solver is for; the rest is the capability declaration this class owns.

      SOURCES, so that a claim here can be checked rather than trusted: "tran" is supportsTransientAnalysis, which FLD, CTMC, LDES and JMT override to true and no one else does. "cdf", "prob", "tranprob" and "sample" are the families that carry an implementation of the corresponding accessor rather than inheriting the base refusal. The remaining five groups are computed by NetworkSolver from a solver's own results, so no per-solver method marks them: their lists are chooseSolverHeur's rankings for the same accessors, which is where AUTO already records who can serve them.

      A family that gains or loses a measure must be edited here in the same change, the way a solver that gains a feature is edited into its feature set: an omission here does not fail, it silently hides the family from a caller asking for that measure.

      Parameters:
      family - the method family
      Returns:
      its measure groups
    • methodClass

      public static String methodClass(String family, String method, boolean isStochastic, boolean isProductForm, boolean isQbdShape, boolean hasCache)
      What KIND of answer a method returns: exact, approx, bound or simulation.

      "simulation" is not decided here: isStochastic is the solver's own isStochasticMethod, which already tokenizes qualified and runtime-resolved names and is the only place that knowledge lives.

      "exact" IS CLAIMED ONLY WHERE IT IS TRUE OF THIS MODEL, never of the algorithm in the abstract. Exactness of a normalizing constant or of mean value analysis is a property of the product-form model it is computed on, and of the QBD shape for the matrix analytic methods, so both conditions are passed in and a method that needs one reports "approx" without it. The bias is deliberate: an under-claimed "approx" costs a user a better method they could have had, an over-claimed "exact" costs them a wrong number they trusted.

      A CACHE IS THE THIRD CONDITION, and it was the over-claim the bias above exists to prevent. snHasProductForm answers about the QUEUEING network and knows nothing of a cache: the hit/miss split is a class switch whose probabilities are not routing data but the output of a cache model, so a network holding one reads as product form and "mva.exact" was labelled exact on it. Measured on the tut06 shape with an LRU cache: exact MVA returns QLen 0.2516 at the hit station where the CTMC returns 0.3022 and simulation 0.3023, a 17% error under a label that says there is none. The analytic families are conditioned on it; SolverCTMC is NOT, because its state space carries the cache contents and it is exact there, which is what the two numbers above show.

      Parameters:
      family - the method family
      method - the unqualified method name
      isStochastic - the solver's own isStochasticMethod verdict
      isProductForm - whether the model has a product-form solution
      isQbdShape - whether the model is one queueing station fed by a Source
      hasCache - whether the model holds a Cache node
      Returns:
      one of the SolverCandidate CLASS_ constants
    • findSolver

      public List<SolverCandidate> findSolver()
      Which solvers and solver methods can analyze this model: the runnable pairs, for every measure.
      Returns:
      one row per runnable (family, method) pair
    • findSolver

      public List<SolverCandidate> findSolver(String metric, boolean showAll)
      Which solvers and solver methods can analyze this model, and for the ones that cannot, why not.

      One row per (family, method) pair AUTO can be asked for; see SolverCandidate for the columns.

      THE GATE IS NOT A SECOND ONE. It is the gate chooseSolverRanked applies before delegating, asked of every candidate instead of of the first feasible one, which is exactly what listValidMethods() already did -- that method is now the method column of the runnable rows, so the two cannot disagree. What is new is that the REASON the gate produced is kept rather than discarded, and that the answer carries the two facts a caller needs in order to choose among the survivors: whether the method is exact on this model, and which measures it can report.

      WHY A REASON HAS TO BE RECONSTRUCTED for some rows. The base supportsModelMethod returns a reason that names no feature when the solver does not diverge per method, since it then falls back to supports(model), which answers with a bare boolean. That is enough for a gate, which only has to stop the run, and not enough for a report, whose whole content is the explanation. So a refused row is re-asked against the solver's own feature set, which is where the offending feature names are.

      Parameters:
      metric - a measure group ("cdf") or the accessor that returns it ("getCdfRespT"); "" or "any" keeps every pair
      showAll - keep the refused pairs too, with the reason each was refused
      Returns:
      the rows, in family order
    • findSolverLayered

      public static List<SolverCandidate> findSolverLayered(LayeredNetwork model, String metric, boolean showAll)
      findSolver for a LayeredNetwork, which this class does not otherwise solve: its constructor takes a Network, and buildFamilySolver says so.

      THE FAMILY SET IS THE ONE THAT CAN BE BUILT OVER A LayeredNetwork, and not a shorter hand-picked list. MATLAB's familyAcceptsModelClass admits every family for a layered model and lets the ones that cannot be constructed drop out, which is how "ldes" stays in -- it analyzes an LQN natively -- while mva, nc, ctmc and the rest fall away because their constructors take a Network. Naming only "ln" and "lqns" here would have hidden the LDES row that MATLAB and native python both report.

      Parameters:
      model - the layered model
      metric - a measure group or the accessor that returns it; "" keeps all
      showAll - keep the refused pairs too
      Returns:
      the rows, in family order
    • getFeatureSet

      public static FeatureSet getFeatureSet()
      Union of the feature sets of every solver AUTO can delegate to: a model AUTO can analyze is one that at least one candidate supports.
      Returns:
      the union feature set over all candidate solvers
    • getSelectedSolverName

      public String getSelectedSolverName()
      Get the name of the selected solver
    • isStochastic

      public boolean isStochastic()
      If a delegate solver has been selected, classify by it (once run, it knows the method it resolved at runtime). Before selection, the delegate choice is unknown, so classify conservatively: true if any candidate is stochastic.
      Overrides:
      isStochastic in class Solver
      Returns:
      true if the (prospective) delegate returns stochastic estimates
    • selectionIntents

      public static String[] selectionIntents()
      Tokens that state what the solution is for, rather than naming an algorithm.
    • familyNames

      public static String[] familyNames()
      Method families, in the order in which an unqualified method name is looked up.

      "ag" SITS AFTER "mam", whose RCAT names it took over, and is a family for the METHOD NAME and REPORT tables only: LINE(model, "ag.inap") and model.help() reach SolverAG through it. It is deliberately NOT a candidate of the automatic ranking (initializeCandidates builds that list by hand) and NOT in the feature-set union of getFeatureSet, so a G-network is still refused by "default" and has to be asked for by name; see _kb/06-solver-catalog.md, "SolverAG owns the RCAT methods".

    • methodAliasPrefixes

      public static String[] methodAliasPrefixes(String family)
      The prefixes under which a family advertises a SECOND SPELLING of a method it already declares plainly.

      THIS IS A DECLARATION, not a derivation, and belongs beside familyMetrics and methodClass for the same reason: the knowledge lives in the solver's own dispatch (SolverMVA strips a leading "amva." before selecting an algorithm) and no accessor exposes it, so a family that gains or loses an alias spelling must be edited into all four copies in the SAME change. An omission does not fail; it puts the same algorithm in the report twice.

      Parameters:
      family - the method family
      Returns:
      the alias prefixes, empty when the family advertises none
    • isMethodAlias

      public static boolean isMethodAlias(String family, String name, List<String> declared)
      Is name a second spelling of another method this family declares?

      The remainder has to be declared too, which is what keeps the rule from eating a genuine method that merely starts with the prefix: it is an alias only when the thing it aliases is there beside it.

      Parameters:
      family - the method family
      name - the declared method name under test
      declared - every method name the family declares on this model
      Returns:
      true when the name only respells one of the others
    • familyAlias

      public static String familyAlias(String name)
      Canonical family of a method name, or "" when the method name names none.
      Parameters:
      name - the token to classify
      Returns:
      the family name, or "" when the method name names no family
    • familyDeclaringMethod

      public String familyDeclaringMethod(String token)
      Find the family that declares an unqualified algorithm name, by asking each family for its own method list. Keeping the question there avoids a second copy of the name table here, which would drift.
      Parameters:
      token - the unqualified algorithm name
      Returns:
      the family that declares it, or "" when none does
    • resolveMethodToken

      public SolverAUTO.AutoToken resolveMethodToken(String token)
      Split a method name into a selection intent, or into a family and the submethod handed to it. A qualified method name "family.submethod" KEEPS its submethod: dropping it would silently downgrade a pinned method to the family default.
      Parameters:
      token - the requested method name, may be null
      Returns:
      the resolved token
      Throws:
      RuntimeException - when no family owns the method name
    • buildFamilySolver

      public Object buildFamilySolver(String family, SolverOptions options)
      Instantiate the solver of a method family. options.method already holds the submethod resolved by resolveMethodToken(java.lang.String), so a pinned method reaches the family that runs it.
      Parameters:
      family - the family name
      options - the options, carrying the resolved submethod
      Returns:
      the family's solver
    • runAnalyzer

      public void runAnalyzer()
      Override the main run method to ensure proper delegation
      Specified by:
      runAnalyzer in class Solver
    • supports

      public boolean supports(Network model)
      Description copied from class: Solver
      Checks if this solver supports the given network model. Default implementation returns true; subclasses should override to provide specific feature validation.
      Overrides:
      supports in class Solver
      Parameters:
      model - the network model to check
      Returns:
      true if the model is supported, false otherwise
    • getAvgChainTable

      public NetworkAvgChainTable getAvgChainTable()
      Description copied from class: NetworkSolver
      Returns a table of average station metrics aggregated by job chains.
      Overrides:
      getAvgChainTable in class NetworkSolver
      Returns:
      table containing station metrics organized by chains
    • getAvgSysTable

      public NetworkAvgSysTable getAvgSysTable()
      Description copied from class: NetworkSolver
      Returns a table of average system-level metrics.
      Overrides:
      getAvgSysTable in class NetworkSolver
      Returns:
      table containing system response times and throughputs by chain
    • getAvgNodeTable

      public NetworkAvgNodeTable getAvgNodeTable()
      Description copied from class: NetworkSolver
      Returns a table of average node metrics organized by job classes.
      Overrides:
      getAvgNodeTable in class NetworkSolver
      Returns:
      table containing node-level metrics for each class
    • getAvgTable

      public NetworkAvgTable getAvgTable()
      Description copied from class: NetworkSolver
      Returns a table of average station metrics organized by job classes.
      Overrides:
      getAvgTable in class NetworkSolver
      Returns:
      table containing station-level metrics for each class
    • getAvg

      public SolverResult getAvg()
      Overrides:
      getAvg in class NetworkSolver
    • getAvgChain

      public SolverResult getAvgChain()
      Description copied from class: NetworkSolver
      Returns average station metrics aggregated by job chains.
      Overrides:
      getAvgChain in class NetworkSolver
      Returns:
      solver result with metrics aggregated by chains
    • getAvgSys

      public void getAvgSys()
      Description copied from class: NetworkSolver
      Computes average system-level metrics at steady state. This includes system response times and throughputs aggregated across all chains.
      Overrides:
      getAvgSys in class NetworkSolver
    • getAvgNode

      public SolverResult getAvgNode()
      Description copied from class: NetworkSolver
      Computes average performance metrics at steady-state for all nodes. This method aggregates station-level metrics to node-level metrics.
      Overrides:
      getAvgNode in class NetworkSolver
      Returns:
      solver result containing node-level average metrics
    • getAvgArvRChain

      public Matrix getAvgArvRChain()
      Description copied from class: NetworkSolver
      Returns average arrival rates aggregated by job chains.
      Overrides:
      getAvgArvRChain in class NetworkSolver
      Returns:
      matrix of arrival rates [stations x chains]
    • getAvgQLenChain

      public Matrix getAvgQLenChain()
      Description copied from class: NetworkSolver
      Returns average queue lengths aggregated by job chains.
      Overrides:
      getAvgQLenChain in class NetworkSolver
      Returns:
      matrix of queue lengths [stations x chains]
    • getAvgUtilChain

      public Matrix getAvgUtilChain()
      Description copied from class: NetworkSolver
      Returns average server utilizations aggregated by job chains.
      Overrides:
      getAvgUtilChain in class NetworkSolver
      Returns:
      matrix of utilizations [stations x chains]
    • getAvgRespTChain

      public Matrix getAvgRespTChain()
      Description copied from class: NetworkSolver
      Returns average response times aggregated by job chains.
      Overrides:
      getAvgRespTChain in class NetworkSolver
      Returns:
      matrix of response times [stations x chains]
    • getAvgTputChain

      public Matrix getAvgTputChain()
      Description copied from class: NetworkSolver
      Returns average throughputs aggregated by job chains.
      Overrides:
      getAvgTputChain in class NetworkSolver
      Returns:
      matrix of throughputs [stations x chains]
    • getAvgSysRespT

      public Matrix getAvgSysRespT()
      Description copied from class: NetworkSolver
      Returns average system response times at steady state.
      Overrides:
      getAvgSysRespT in class NetworkSolver
      Returns:
      matrix of system response times by chain
    • getAvgSysTput

      public Matrix getAvgSysTput()
      Description copied from class: NetworkSolver
      Returns average system throughputs at steady state.
      Overrides:
      getAvgSysTput in class NetworkSolver
      Returns:
      matrix of system throughputs by chain
    • getTranAvg

      public void getTranAvg()
      Description copied from class: NetworkSolver
      Computes transient average station metrics over the specified time interval. The timespan is defined in the solver options.
      Overrides:
      getTranAvg in class NetworkSolver
    • getTranCdfPassT

      public Ret.DistributionResult getTranCdfPassT()
      Description copied from class: NetworkSolver
      Returns cumulative distribution functions of passage times during transient analysis. Uses default response time handles.
      Overrides:
      getTranCdfPassT in class NetworkSolver
      Returns:
      result containing transient CDFs for passage times
    • getTranCdfRespT

      public Ret.DistributionResult getTranCdfRespT()
      Description copied from class: NetworkSolver
      Returns cumulative distribution functions of response times during transient analysis. Uses default response time handles.
      Overrides:
      getTranCdfRespT in class NetworkSolver
      Returns:
      result containing transient CDFs for response times
    • getTranProb

      public Matrix[] getTranProb(Node node)
    • getTranProbAggr

      public Matrix[] getTranProbAggr(Node node)
    • getTranProbSys

      public Matrix[] getTranProbSys()
    • getTranProbSysAggr

      public Matrix[] getTranProbSysAggr()
    • sample

      public Ret.SampleResult sample(Node node, int numEvents)
    • sampleAggr

      public Ret.SampleResult sampleAggr(Node node, int numEvents)
    • sampleSys

      public Ret.SampleResult sampleSys(int numEvents)
      Description copied from class: NetworkSolver
      Samples joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.
      Overrides:
      sampleSys in class NetworkSolver
      Parameters:
      numEvents - the number of events to sample
      Returns:
      result containing sampled joint system state trajectories
    • sampleSysAggr

      public Ret.SampleResult sampleSysAggr(int numEvents)
      Description copied from class: NetworkSolver
      Samples aggregated joint system state trajectories. This is an abstract method that must be implemented by concrete solver subclasses.
      Overrides:
      sampleSysAggr in class NetworkSolver
      Parameters:
      numEvents - the number of events to sample
      Returns:
      result containing sampled aggregated joint system state trajectories
    • getCdfRespT

      public Ret.DistributionResult getCdfRespT()
      Description copied from class: NetworkSolver
      Returns cumulative distribution functions of response times at steady-state. Uses default response time handles.
      Overrides:
      getCdfRespT in class NetworkSolver
      Returns:
      result containing CDFs for response times [stations x classes]
    • getCdfSysRespT

      public List<Matrix> getCdfSysRespT()
      System response time CDF per chain, always from SolverCTMC -- like the state-space accessors, it is a property of the CTMC representation, so it resolves on the CTMC candidate rather than the ranked selection, as the reference @SolverAUTO/getCdfSysRespT does.
    • getCdfPT

      public Ret.DistributionResult getCdfPT()
      Backward-compatible passage-time CDF name, resolved on the fluid family.
    • getCdfAoI

      public Matrix[] getCdfAoI()
      Age-of-Information CDFs, a property of the ODE representation, so fluid-only.
    • getCdfAoI

      public Matrix[] getCdfAoI(Matrix tValues)
      Age-of-Information CDFs on caller-supplied time points, fluid-only.
    • getProb

      public double getProb(Node node, Matrix state)
    • getProbAggr

      public double getProbAggr(Node node, Matrix state_a)
    • getProbSys

      public Ret.ProbabilityResult getProbSys()
      Description copied from class: NetworkSolver
      Returns joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.
      Overrides:
      getProbSys in class NetworkSolver
      Returns:
      result containing joint state probabilities
    • getProbSysAggr

      public Ret.ProbabilityResult getProbSysAggr()
      Description copied from class: NetworkSolver
      Returns aggregated joint state probabilities for the entire system. This is an abstract method that must be implemented by concrete solver subclasses.
      Overrides:
      getProbSysAggr in class NetworkSolver
      Returns:
      result containing aggregated joint state probabilities
    • getProbNormConstAggr

      public Ret.ProbabilityResult getProbNormConstAggr()
      Description copied from class: NetworkSolver
      Returns the logarithm of the normalizing constant of state probabilities. This is an abstract method that must be implemented by concrete solver subclasses.
      Overrides:
      getProbNormConstAggr in class NetworkSolver
      Returns:
      result containing the log normalizing constant
    • getAvgQLen

      public Matrix getAvgQLen()
      Get average queue lengths at steady-state
      Overrides:
      getAvgQLen in class NetworkSolver
      Returns:
      matrix of average queue lengths [stations x classes]
    • getAvgUtil

      public Matrix getAvgUtil()
      Get average utilizations at steady-state
      Overrides:
      getAvgUtil in class NetworkSolver
      Returns:
      matrix of average utilizations [stations x classes]
    • getAvgRespT

      public Matrix getAvgRespT()
      Get average response times at steady-state
      Overrides:
      getAvgRespT in class NetworkSolver
      Returns:
      matrix of average response times [stations x classes]
    • getAvgResidT

      public Matrix getAvgResidT()
      Get average residence times at steady-state
      Overrides:
      getAvgResidT in class NetworkSolver
      Returns:
      matrix of average residence times [stations x classes]
    • getAvgWaitT

      public Matrix getAvgWaitT()
      Get average waiting times (queue time excluding service)
      Overrides:
      getAvgWaitT in class NetworkSolver
      Returns:
      matrix of average waiting times [stations x classes]
    • getAvgTput

      public Matrix getAvgTput()
      Get average throughputs at steady-state
      Overrides:
      getAvgTput in class NetworkSolver
    • getAvgArvR

      public Matrix getAvgArvR()
      Get average arrival rates at steady-state
      Overrides:
      getAvgArvR in class NetworkSolver
      Returns:
      matrix of average arrival rates [stations x classes]
    • getAvgQLenTable

      public NetworkAvgTable getAvgQLenTable()
      Get average queue length table
    • getAvgUtilTable

      public NetworkAvgTable getAvgUtilTable()
      Get average utilization table
    • getAvgRespTTable

      public NetworkAvgTable getAvgRespTTable()
      Get average response time table
    • getAvgTputTable

      public NetworkAvgTable getAvgTputTable()
      Get average throughput table
    • getAvgResidTChain

      public Matrix getAvgResidTChain()
      Get average residence time by chain
      Overrides:
      getAvgResidTChain in class NetworkSolver
      Returns:
      matrix of residence times [stations x chains]
    • getAvgNodeQLenChain

      public Matrix getAvgNodeQLenChain()
      Get average node queue length by chain
      Overrides:
      getAvgNodeQLenChain in class NetworkSolver
      Returns:
      matrix of node queue lengths [nodes x chains]
    • getAvgNodeUtilChain

      public Matrix getAvgNodeUtilChain()
      Get average node utilization by chain
      Overrides:
      getAvgNodeUtilChain in class NetworkSolver
      Returns:
      matrix of node utilizations [nodes x chains]
    • getAvgNodeRespTChain

      public Matrix getAvgNodeRespTChain()
      Get average node response time by chain
      Overrides:
      getAvgNodeRespTChain in class NetworkSolver
      Returns:
      matrix of node response times [nodes x chains]
    • getAvgNodeResidTChain

      public Matrix getAvgNodeResidTChain()
      Get average node residence time by chain
      Overrides:
      getAvgNodeResidTChain in class NetworkSolver
      Returns:
      matrix of node residence times [nodes x chains]
    • getAvgNodeTputChain

      public Matrix getAvgNodeTputChain()
      Get average node throughput by chain
      Overrides:
      getAvgNodeTputChain in class NetworkSolver
      Returns:
      matrix of node throughputs [nodes x chains]
    • getAvgNodeArvRChain

      public Matrix getAvgNodeArvRChain()
      Get average node arrival rate by chain
      Overrides:
      getAvgNodeArvRChain in class NetworkSolver
      Returns:
      matrix of node arrival rates [nodes x chains]
    • getCdfPassT

      public Ret.DistributionResult getCdfPassT()
      Get CDF of passage times at steady-state
      Overrides:
      getCdfPassT in class NetworkSolver
      Returns:
      result containing CDFs for passage times
    • getPerctRespT

      public Matrix getPerctRespT(double[] percentiles)
      Get response time percentiles
    • getProbMarg

      public double getProbMarg(Node node, int jobclass, Matrix state_m)
      Get marginalized state probability
    • avgTable

      public NetworkAvgTable avgTable()
      Alias for getAvgTable()
      Overrides:
      avgTable in class NetworkSolver
    • avgSysTable

      public NetworkAvgSysTable avgSysTable()
      Alias for getAvgSysTable()
      Overrides:
      avgSysTable in class NetworkSolver
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable()
      Alias for getAvgNodeTable()
      Overrides:
      avgNodeTable in class NetworkSolver
    • avgChainTable

      public NetworkAvgChainTable avgChainTable()
      Alias for getAvgChainTable()
      Overrides:
      avgChainTable in class NetworkSolver
    • avg

      public SolverResult avg()
      Alias for getAvg()
      Overrides:
      avg in class NetworkSolver
    • avgChain

      public SolverResult avgChain()
      Alias for getAvgChain()
      Overrides:
      avgChain in class NetworkSolver
    • avgNode

      public SolverResult avgNode()
      Alias for getAvgNode()
      Overrides:
      avgNode in class NetworkSolver
    • avgQLen

      public Matrix avgQLen()
      Alias for getAvgQLen()
      Overrides:
      avgQLen in class NetworkSolver
    • avgUtil

      public Matrix avgUtil()
      Alias for getAvgUtil()
      Overrides:
      avgUtil in class NetworkSolver
    • avgRespT

      public Matrix avgRespT()
      Alias for getAvgRespT()
      Overrides:
      avgRespT in class NetworkSolver
    • avgResidT

      public Matrix avgResidT()
      Alias for getAvgResidT()
      Overrides:
      avgResidT in class NetworkSolver
    • avgWaitT

      public Matrix avgWaitT()
      Alias for getAvgWaitT()
      Overrides:
      avgWaitT in class NetworkSolver
    • avgTput

      public Matrix avgTput()
      Alias for getAvgTput()
      Overrides:
      avgTput in class NetworkSolver
    • avgArvR

      public Matrix avgArvR()
      Alias for getAvgArvR()
      Overrides:
      avgArvR in class NetworkSolver
    • avgQLenChain

      public Matrix avgQLenChain()
      Alias for getAvgQLenChain()
      Overrides:
      avgQLenChain in class NetworkSolver
    • avgUtilChain

      public Matrix avgUtilChain()
      Alias for getAvgUtilChain()
      Overrides:
      avgUtilChain in class NetworkSolver
    • avgRespTChain

      public Matrix avgRespTChain()
      Alias for getAvgRespTChain()
      Overrides:
      avgRespTChain in class NetworkSolver
    • avgResidTChain

      public Matrix avgResidTChain()
      Alias for getAvgResidTChain()
      Overrides:
      avgResidTChain in class NetworkSolver
    • avgTputChain

      public Matrix avgTputChain()
      Alias for getAvgTputChain()
      Overrides:
      avgTputChain in class NetworkSolver
    • avgArvRChain

      public Matrix avgArvRChain()
      Alias for getAvgArvRChain()
      Overrides:
      avgArvRChain in class NetworkSolver
    • avgSysRespT

      public Matrix avgSysRespT()
      Alias for getAvgSysRespT()
      Overrides:
      avgSysRespT in class NetworkSolver
    • avgSysTput

      public Matrix avgSysTput()
      Alias for getAvgSysTput()
      Overrides:
      avgSysTput in class NetworkSolver
    • cdfRespT

      public Ret.DistributionResult cdfRespT()
      Alias for getCdfRespT()
      Overrides:
      cdfRespT in class NetworkSolver
    • cdfPassT

      public Ret.DistributionResult cdfPassT()
      Alias for getCdfPassT()
      Overrides:
      cdfPassT in class NetworkSolver
    • perctRespT

      public Matrix perctRespT(double[] percentiles)
      Alias for getPerctRespT()
    • prob

      public double prob(Node node, Matrix state)
      Alias for getProb()
    • probAggr

      public double probAggr(Node node, Matrix state_a)
      Alias for getProbAggr()
    • probSys

      public Ret.ProbabilityResult probSys()
      Alias for getProbSys()
      Overrides:
      probSys in class NetworkSolver
    • probSysAggr

      public Ret.ProbabilityResult probSysAggr()
      Alias for getProbSysAggr()
      Overrides:
      probSysAggr in class NetworkSolver
    • probNormConstAggr

      public Ret.ProbabilityResult probNormConstAggr()
      Alias for getProbNormConstAggr()
      Overrides:
      probNormConstAggr in class NetworkSolver
    • probMarg

      public double probMarg(Node node, int jobclass, Matrix state_m)
      Alias for getProbMarg()
    • sample

      public Ret.SampleResult sample(Node node)
      Alias for sample()
    • sampleSys

      public Ret.SampleResult sampleSys()
      Alias for sampleSys()