Package jline.solvers

Class NetworkSolver

java.lang.Object
jline.solvers.Solver
jline.solvers.NetworkSolver
Direct Known Subclasses:
SolverAUTO, SolverBA, SolverCTMC, SolverFluid, SolverJMT, SolverLDES, SolverMAM, SolverMVA, SolverNC, SolverQNS, SolverSSA

public abstract class NetworkSolver extends Solver
Abstract base class for solvers applicable to queueing network models.

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:
  • Field Details

    • model

      public Network model
      The queueing network model to be solved
    • sn

      public NetworkStruct sn
      Internal data structure describing the network model
    • avgHandles

      public SolverAvgHandles avgHandles
      Handles for steady-state average performance metrics
    • tranHandles

      public SolverTranHandles tranHandles
      Handles for transient performance metrics
  • Constructor Details

    • NetworkSolver

      protected NetworkSolver(Network model, String name, SolverOptions options)
      Constructs a NetworkSolver with the specified model, name, and options.
      Parameters:
      model - the queueing network model to solve
      name - the name identifier for this solver instance
      options - configuration options for the solver
      Throws:
      RuntimeException - if the model is empty (has no nodes)
    • NetworkSolver

      protected NetworkSolver(Network model, String name)
      Constructs a NetworkSolver with the specified model and name using default options.
      Parameters:
      model - the queueing network model to solve
      name - the name identifier for this solver instance
  • Method Details

    • getAllSolvers

      public static List<NetworkSolver> getAllSolvers(Network model)
      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

      public SolverResult avg()
    • avg

      public SolverResult avg(SolverAvgHandles avgHandles)
    • avg

    • avgArvR

      public Matrix avgArvR()
    • avgArvRChain

      public Matrix avgArvRChain()
    • avgArvRHandles

      public AvgHandle avgArvRHandles()
    • avgChain

      public SolverResult avgChain()
    • avgChainTable

      public NetworkAvgChainTable avgChainTable()
    • avgChainTable

      public NetworkAvgChainTable avgChainTable(SolverAvgHandles avgHandles)
    • avgChainTable

      public NetworkAvgChainTable avgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgChainTable

      public NetworkAvgChainTable avgChainTable(boolean keepDisabled)
    • avgChainTable

      public NetworkAvgChainTable avgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgChainTable

      public NetworkAvgChainTable avgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgChainT

      public NetworkAvgChainTable avgChainT()
    • avgChainT

      public NetworkAvgChainTable avgChainT(SolverAvgHandles avgHandles)
    • avgChainT

    • avgChainT

      public NetworkAvgChainTable avgChainT(boolean keepDisabled)
    • avgChainT

      public NetworkAvgChainTable avgChainT(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgChainT

      public NetworkAvgChainTable avgChainT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgHandles

      public SolverAvgHandles avgHandles()
    • avgNode

      public SolverResult avgNode()
    • avgNodeArvRChain

      public Matrix avgNodeArvRChain()
    • avgNodeChain

      public SolverResult avgNodeChain()
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable()
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable(SolverAvgHandles avgHandles)
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable(boolean keepDisabled)
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgNodeChainTable

      public NetworkAvgNodeChainTable avgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT()
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT(SolverAvgHandles avgHandles)
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT(boolean keepDisabled)
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgNodeChainT

      public NetworkAvgNodeChainTable avgNodeChainT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgNodeQLenChain

      public Matrix avgNodeQLenChain()
    • avgNodeResidTChain

      public Matrix avgNodeResidTChain()
    • avgNodeRespTChain

      public Matrix avgNodeRespTChain()
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable()
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable(SolverAvgHandles avgHandles)
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable(boolean keepDisabled)
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgNodeTable

      public NetworkAvgNodeTable avgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgNodeT

      public NetworkAvgNodeTable avgNodeT()
    • avgNodeT

      public NetworkAvgNodeTable avgNodeT(SolverAvgHandles avgHandles)
    • avgNodeT

    • avgNodeT

      public NetworkAvgNodeTable avgNodeT(boolean keepDisabled)
    • avgNodeT

      public NetworkAvgNodeTable avgNodeT(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgNodeT

      public NetworkAvgNodeTable avgNodeT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgNodeTputChain

      public Matrix avgNodeTputChain()
    • avgNodeUtilChain

      public Matrix avgNodeUtilChain()
    • avgQLen

      public Matrix avgQLen()
    • avgQLenChain

      public Matrix avgQLenChain()
    • avgQLenHandles

      public AvgHandle avgQLenHandles()
    • avgResidT

      public Matrix avgResidT()
    • avgResidTChain

      public Matrix avgResidTChain()
    • avgResidTHandles

      public AvgHandle avgResidTHandles()
    • avgRespT

      public Matrix avgRespT()
    • avgRespTChain

      public Matrix avgRespTChain()
    • avgRespTHandles

      public AvgHandle avgRespTHandles()
    • avgSys

      public void avgSys()
    • avgSysRespT

      public Matrix avgSysRespT()
    • avgSysTable

      public NetworkAvgSysTable avgSysTable()
    • avgSysTable

      public NetworkAvgSysTable avgSysTable(SolverAvgHandles avgHandles)
    • avgSysTable

      public NetworkAvgSysTable avgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgSysT

      public NetworkAvgSysTable avgSysT()
    • avgSysT

      public NetworkAvgSysTable avgSysT(SolverAvgHandles avgHandles)
    • avgSysT

    • avgSysTput

      public Matrix avgSysTput()
    • options

      Returns a fluent configurator for this solver's options, allowing chained calls such as solver.options().method("parallel").samples(20000) .seed(1).build(). The terminal build() returns this solver.
      Returns:
      a NetworkSolver.SolverConfigurator wrapping this solver
    • avgTable

      public NetworkAvgTable avgTable()
    • avgTable

      public NetworkAvgTable avgTable(SolverAvgHandles avgHandles)
    • avgTable

      public NetworkAvgTable avgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
    • avgTable

      public NetworkAvgTable avgTable(boolean keepDisabled)
    • avgTable

      public NetworkAvgTable avgTable(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgTable

      public NetworkAvgTable avgTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgT

      public NetworkAvgTable avgT()
    • avgT

      public NetworkAvgTable avgT(SolverAvgHandles avgHandles)
    • avgT

    • avgT

      public NetworkAvgTable avgT(boolean keepDisabled)
    • avgT

      public NetworkAvgTable avgT(SolverAvgHandles avgHandles, boolean keepDisabled)
    • avgT

      public NetworkAvgTable avgT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • aT

      public NetworkAvgTable aT()
    • aT

      public NetworkAvgTable aT(SolverAvgHandles avgHandles)
    • aT

    • aT

      public NetworkAvgTable aT(boolean keepDisabled)
    • aT

      public NetworkAvgTable aT(SolverAvgHandles avgHandles, boolean keepDisabled)
    • aT

      public NetworkAvgTable aT(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A, boolean keepDisabled)
    • avgTput

      public Matrix avgTput()
    • avgTputChain

      public Matrix avgTputChain()
    • avgTputHandles

      public AvgHandle avgTputHandles()
    • avgUtil

      public Matrix avgUtil()
    • avgUtilChain

      public Matrix avgUtilChain()
    • avgUtilHandles

      public AvgHandle avgUtilHandles()
    • avgWaitT

      public Matrix avgWaitT()
    • cdfPassT

      public Ret.DistributionResult cdfPassT()
    • cdfPassT

      public Ret.DistributionResult cdfPassT(AvgHandle R)
    • cdfRespT

      public Ret.DistributionResult cdfRespT()
    • cdfRespT

      public Ret.DistributionResult cdfRespT(AvgHandle R)
    • getAvg

      public SolverResult getAvg()
    • getAvg

      public SolverResult getAvg(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      solver result containing station-level average metrics
      Throws:
      RuntimeException - if unable to compute results
    • getAvgArvR

      public Matrix 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

      public Matrix getAvgArvRChain()
      Returns average arrival rates aggregated by job chains.
      Returns:
      matrix of arrival rates [stations x chains]
    • getAvgArvRHandles

      public AvgHandle getAvgArvRHandles()
      Returns the average arrival rate metric handles.
      Returns:
      handles for arrival rate metrics
    • getAvgChain

      public SolverResult getAvgChain()
      Returns average station metrics aggregated by job chains.
      Returns:
      solver result with metrics aggregated by chains
    • getAvgChainTable

      public NetworkAvgChainTable getAvgChainTable()
      Returns a table of average station metrics aggregated by job chains.
      Returns:
      table containing station metrics organized by chains
    • getAvgChainTable

      public NetworkAvgChainTable getAvgChainTable(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing station metrics organized by chains
    • getAvgChainTable

      public NetworkAvgChainTable getAvgChainTable(boolean keepDisabled)
      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
    • getAvgChainTable

      public NetworkAvgChainTable getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled)
      Returns a table of average station metrics aggregated by job chains using specified handles and keepDisabled option.
      Parameters:
      avgHandles - custom handles for performance metrics
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • getChainAvgT

      public NetworkAvgChainTable getChainAvgT()
      Alias for getAvgChainTable().
      Returns:
      table containing station metrics organized by chains
    • getChainAvgT

      public NetworkAvgChainTable getChainAvgT(boolean keepDisabled)
      Alias for getAvgChainTable(boolean keepDisabled).
      Parameters:
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • getChainAvgT

      public NetworkAvgChainTable getChainAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing station metrics organized by chains
    • getChainAvgT

      public NetworkAvgChainTable getChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • chainAvgT

      public NetworkAvgChainTable chainAvgT()
      Alias for getAvgChainTable().
      Returns:
      table containing station metrics organized by chains
    • chainAvgT

      public NetworkAvgChainTable chainAvgT(boolean keepDisabled)
      Alias for getAvgChainTable(boolean keepDisabled).
      Parameters:
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • chainAvgT

      public NetworkAvgChainTable chainAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing station metrics organized by chains
    • chainAvgT

      public NetworkAvgChainTable chainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • chainAvgT

      Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • aCT

      public NetworkAvgChainTable aCT()
      Alias for getAvgChainTable().
      Returns:
      table containing station metrics organized by chains
    • aCT

      public NetworkAvgChainTable aCT(boolean keepDisabled)
      Alias for getAvgChainTable(boolean keepDisabled).
      Parameters:
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • aCT

      public NetworkAvgChainTable aCT(SolverAvgHandles avgHandles)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing station metrics organized by chains
    • aCT

      public NetworkAvgChainTable aCT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • aCT

      Alias for getAvgChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station metrics organized by chains
    • getAvgHandles

      public SolverAvgHandles getAvgHandles()
      Returns the steady-state average performance metric handles.
      Returns:
      the average handles object
    • setAvgHandles

      public void setAvgHandles(SolverAvgHandles handles)
      Sets the steady-state average performance metric handles.
      Parameters:
      handles - the average handles to set
    • getAvgNode

      public SolverResult 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

      public Matrix getAvgNodeArvRChain()
      Returns average node arrival rates aggregated by job chains.
      Returns:
      matrix of node arrival rates [nodes x chains]
    • getAvgNodeChain

      public SolverResult getAvgNodeChain()
      Returns average node metrics aggregated by job chains.
      Returns:
      solver result with node metrics aggregated by chains
    • getAvgNodeChainTable

      public NetworkAvgNodeChainTable getAvgNodeChainTable()
      Returns a table of average node metrics aggregated by chains.
      Returns:
      table containing node-level metrics organized by job chains
    • getAvgNodeChainTable

      public NetworkAvgNodeChainTable getAvgNodeChainTable(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing node-level metrics organized by job chains
    • getAvgNodeChainTable

      public NetworkAvgNodeChainTable getAvgNodeChainTable(boolean keepDisabled)
      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
    • 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 metrics
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics organized by job chains
    • getNodeChainAvgT

      public NetworkAvgNodeChainTable getNodeChainAvgT()
      Alias for getAvgNodeChainTable().
      Returns:
      table containing node-level metrics organized by job chains
    • getNodeChainAvgT

      public NetworkAvgNodeChainTable getNodeChainAvgT(boolean keepDisabled)
      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

      public NetworkAvgNodeChainTable getNodeChainAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics organized by job chains
    • getNodeChainAvgT

      public NetworkAvgNodeChainTable getNodeChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics organized by job chains
    • nodeChainAvgT

      public NetworkAvgNodeChainTable nodeChainAvgT()
      Alias for getAvgNodeChainTable().
      Returns:
      table containing node-level metrics organized by job chains
    • nodeChainAvgT

      public NetworkAvgNodeChainTable nodeChainAvgT(boolean keepDisabled)
      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

      public NetworkAvgNodeChainTable nodeChainAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics organized by job chains
    • nodeChainAvgT

      public NetworkAvgNodeChainTable nodeChainAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics organized by job chains
    • aNCT

      public NetworkAvgNodeChainTable aNCT()
      Short alias for getAvgNodeChainTable().
      Returns:
      table containing node-level metrics organized by job chains
    • aNCT

      public NetworkAvgNodeChainTable aNCT(boolean keepDisabled)
      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

      public NetworkAvgNodeChainTable aNCT(SolverAvgHandles avgHandles)
      Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics organized by job chains
    • aNCT

      public NetworkAvgNodeChainTable aNCT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Short alias for getAvgNodeChainTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics organized by job chains
    • aNCT

      Short alias for getAvgNodeChainTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics organized by job chains
    • getAvgNodeQLenChain

      public Matrix getAvgNodeQLenChain()
      Returns average node queue lengths aggregated by job chains.
      Returns:
      matrix of node queue lengths [nodes x chains]
    • getAvgNodeResidTChain

      public Matrix getAvgNodeResidTChain()
      Returns average node residence times aggregated by job chains.
      Returns:
      matrix of node residence times [nodes x chains]
    • getAvgNodeRespTChain

      public Matrix getAvgNodeRespTChain()
      Returns average node response times aggregated by job chains.
      Returns:
      matrix of node response times [nodes x chains]
    • getAvgNodeTable

      public NetworkAvgNodeTable getAvgNodeTable()
      Returns a table of average node metrics organized by job classes.
      Returns:
      table containing node-level metrics for each class
    • getAvgNodeTable

      public NetworkAvgNodeTable getAvgNodeTable(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing node-level metrics for each class
    • getAvgNodeTable

      public NetworkAvgNodeTable getAvgNodeTable(boolean keepDisabled)
      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
    • getAvgCacheTable

      public NetworkAvgCacheTable 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
    • getAvgItemTable

      public NetworkAvgItemTable 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 (exact cache algorithms and the delayed-hit retrieval algorithms). Port of matlab getAvgItemTable.m.
      Returns:
      item-level cache occupancy table
    • getAvgNodeTable

      public NetworkAvgNodeTable getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled)
      Returns a table of average node metrics organized by job classes using specified handles and keepDisabled option.
      Parameters:
      avgHandles - custom handles for performance metrics
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • getNodeAvgT

      public NetworkAvgNodeTable getNodeAvgT()
      Alias for getAvgNodeTable().
      Returns:
      table containing node-level metrics for each class
    • getNodeAvgT

      public NetworkAvgNodeTable getNodeAvgT(boolean keepDisabled)
      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

      public NetworkAvgNodeTable getNodeAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics for each class
    • getNodeAvgT

      public NetworkAvgNodeTable getNodeAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • nodeAvgT

      public NetworkAvgNodeTable nodeAvgT()
      Alias for getAvgNodeTable().
      Returns:
      table containing node-level metrics for each class
    • nodeAvgT

      public NetworkAvgNodeTable nodeAvgT(boolean keepDisabled)
      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

      public NetworkAvgNodeTable nodeAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics for each class
    • nodeAvgT

      public NetworkAvgNodeTable nodeAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • nodeAvgT

      Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • aNT

      public NetworkAvgNodeTable aNT()
      Alias for getAvgNodeTable().
      Returns:
      table containing node-level metrics for each class
    • aNT

      public NetworkAvgNodeTable aNT(boolean keepDisabled)
      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

      public NetworkAvgNodeTable aNT(SolverAvgHandles avgHandles)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing node-level metrics for each class
    • aNT

      public NetworkAvgNodeTable aNT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgNodeTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • aNT

      Alias for getAvgNodeTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing node-level metrics for each class
    • getAvgNodeTputChain

      public Matrix getAvgNodeTputChain()
      Returns average node throughputs aggregated by job chains.
      Returns:
      matrix of node throughputs [nodes x chains]
    • getAvgNodeUtilChain

      public Matrix getAvgNodeUtilChain()
      Returns average node utilizations aggregated by job chains.
      Returns:
      matrix of node utilizations [nodes x chains]
    • getAvgQLen

      public Matrix 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]
    • getAvgQLenChain

      public Matrix getAvgQLenChain()
      Returns average queue lengths aggregated by job chains.
      Returns:
      matrix of queue lengths [stations x chains]
    • getAvgQLenHandles

      public AvgHandle getAvgQLenHandles()
      Returns the average queue length metric handles.
      Returns:
      handles for queue length metrics
    • getAvgResidT

      public Matrix 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

      public Matrix getAvgResidTChain()
      Returns average residence times aggregated by job chains.
      Returns:
      matrix of residence times [stations x chains]
    • getAvgResidTHandles

      public AvgHandle getAvgResidTHandles()
      Returns the average residence time metric handles.
      Returns:
      handles for residence time metrics
    • getAvgRespT

      public Matrix 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

      public Matrix getAvgRespTChain()
      Returns average response times aggregated by job chains.
      Returns:
      matrix of response times [stations x chains]
    • getAvgRespTHandles

      public AvgHandle 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

      public void getAvgSys(SolverAvgHandles avgHandles)
      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

      public void getAvgSys(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
    • getAvgSysRespT

      public Matrix getAvgSysRespT()
      Returns average system response times at steady state.
      Returns:
      matrix of system response times by chain
    • getAvgSysTable

      public NetworkAvgSysTable getAvgSysTable()
      Returns a table of average system-level metrics.
      Returns:
      table containing system response times and throughputs by chain
    • getAvgSysTable

      public NetworkAvgSysTable getAvgSysTable(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing system response times and throughputs by chain
    • getSysAvgT

      public NetworkAvgSysTable getSysAvgT()
      Alias for getAvgSysTable().
      Returns:
      table containing system response times and throughputs by chain
    • getSysAvgT

      public NetworkAvgSysTable getSysAvgT(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing system response times and throughputs by chain
    • sysAvgT

      public NetworkAvgSysTable sysAvgT()
      Alias for getAvgSysTable().
      Returns:
      table containing system response times and throughputs by chain
    • sysAvgT

      public NetworkAvgSysTable sysAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgSysTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing system response times and throughputs by chain
    • sysAvgT

      Alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing system response times and throughputs by chain
    • aST

      public NetworkAvgSysTable aST()
      Short alias for getAvgSysTable().
      Returns:
      table containing system response times and throughputs by chain
    • aST

      public NetworkAvgSysTable aST(SolverAvgHandles avgHandles)
      Short alias for getAvgSysTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing system response times and throughputs by chain
    • aST

      Short alias for getAvgSysTable(AvgHandle Q, AvgHandle U, AvgHandle R, AvgHandle W, AvgHandle T, AvgHandle A).
      Parameters:
      Q - queue length handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing system response times and throughputs by chain
    • getAvgSysTput

      public Matrix getAvgSysTput()
      Returns average system throughputs at steady state.
      Returns:
      matrix of system throughputs by chain
    • getAvgTable

      public NetworkAvgTable getAvgTable()
      Returns a table of average station metrics organized by job classes.
      Returns:
      table containing station-level metrics for each class
    • getAvgTable

      public NetworkAvgTable getAvgTable(SolverAvgHandles avgHandles)
      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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      Returns:
      table containing station-level metrics for each class
    • getAvgTable

      public NetworkAvgTable getAvgTable(boolean keepDisabled)
      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
    • getAvgTable

      public NetworkAvgTable getAvgTable(SolverAvgHandles avgHandles, boolean keepDisabled)
      Returns a table of average station metrics organized by job classes using specified handles and keepDisabled option.
      Parameters:
      avgHandles - custom handles for performance metrics
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station-level metrics for each class
    • getSensitivityTable

      public NetworkSensitivityTable 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, SolverMVA and SolverNC, 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 SolverMVA and SolverNC uses.

      The branch actually taken is reported by NetworkSensitivityTable.getMethod(). The raw pfqn_sens result, which carries the full Jacobian that this table shows only the diagonal of, is on NetworkSensitivityTable.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

      public NetworkSensitivityTable getSensitivityTable(String method, double step, String scheme)
      Performance sensitivities with respect to service rates, with an explicit branch, step and difference scheme. Counterpart of MATLAB's getSensitivityTable(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 quotient
      scheme - "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 that getSensitivityTable() can differentiate analytically. False here, so that a solver reaching this base implementation obtains its sensitivities by finite differences on its own predictions. Overridden by SolverMVA and SolverNC.
      Returns:
      false
    • getMomentTable

      public NetworkMomentTable 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

      public NetworkMomentTable getMomentTable(int order)
      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". Use getMomentTable(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

      public NetworkMomentTable getMomentTable(int[] order)
      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. order is 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. So new int[]{1,2} is the default and is the same as the scalar 2, while new 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-ONLY. RespTVar, RespTSCV and RespTSkew are NaN at any station that is not FCFS, and in open or mixed models. This is a limitation of the theory, not of the implementation: the sojourn-time distribution at a processor-sharing or LCFS center is not known in general (Strelen 1990, Section 4), so there is no correct value to report and a wrong one is worse than a blank. The mean RespT is always reported, since it needs no distributional result.

      Scope by model type: closed single-server uses pfqn_sens_mva; closed multiserver and mixed open/closed use pfqn_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:
    • getMomentStationTable

      public NetworkMomentStationTable 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

      public NetworkMomentStationTable getMomentStationTable(int order)
      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

      public NetworkMomentStationTable getMomentStationTable(int[] order)
      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). order is a SET of moment orders, taken literally: order 1 contributes QLen, order 2 contributes QLenVar and QLenSCV, order 3 contributes QLenM3 and QLenSkew. So new 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 in getMomentTable(int[]) and getMomentChainTable(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 of getMomentTable(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

      public NetworkMomentChainTable 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

      public NetworkMomentChainTable getMomentChainTable(int order)
      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

      public NetworkMomentChainTable getMomentChainTable(int[] order)
      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 gives getMomentStationTable(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

      public NetworkAvgTable getAvgT()
      Alias for getAvgTable().
      Returns:
      table containing station-level metrics for each class
    • getAvgT

      public NetworkAvgTable getAvgT(boolean keepDisabled)
      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

      public NetworkAvgTable getAvgT(SolverAvgHandles avgHandles)
      Alias for getAvgTable(SolverAvgHandles avgHandles).
      Parameters:
      avgHandles - the average handles to use
      Returns:
      table containing station-level metrics for each class
    • getAvgT

      public NetworkAvgTable getAvgT(SolverAvgHandles avgHandles, boolean keepDisabled)
      Alias for getAvgTable(SolverAvgHandles avgHandles, boolean keepDisabled).
      Parameters:
      avgHandles - the average handles to use
      keepDisabled - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - 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 handle
      U - utilization handle
      R - response time handle
      W - residence time handle
      T - throughput handle
      A - arrival rate handle
      keepDisabled - whether to include disabled metrics in the table
      Returns:
      table containing station-level metrics for each class
    • getDeadlineTable

      public NetworkAvgTable 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
    • getAvgTput

      public Matrix getAvgTput()
      Computes and returns average throughputs at steady-state. If results are not available, triggers solver execution.
      Returns:
      matrix of average throughputs [stations x classes]
    • getAvgTputChain

      public Matrix getAvgTputChain()
      Returns average throughputs aggregated by job chains.
      Returns:
      matrix of throughputs [stations x chains]
    • getAvgTputHandles

      public AvgHandle getAvgTputHandles()
      Returns the average throughput metric handles.
      Returns:
      handles for throughput metrics
    • getAvgUtil

      public Matrix 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

      public Matrix getAvgUtilChain()
      Returns average server utilizations aggregated by job chains.
      Returns:
      matrix of utilizations [stations x chains]
    • getAvgUtilHandles

      public AvgHandle getAvgUtilHandles()
      Returns the average utilization metric handles.
      Returns:
      handles for utilization metrics
    • getAvgWaitT

      public Matrix 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

      public Ret.DistributionResult getCdfPassT(AvgHandle R)
      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

      public Ret.DistributionResult getCdfPassT()
      Returns cumulative distribution functions of passage times at steady-state. Uses default response time handles.
      Returns:
      result containing CDFs for passage times
      Throws:
      RuntimeException - if not implemented by the concrete solver
    • getCdfRespT

      public Ret.DistributionResult getCdfRespT(AvgHandle R)
      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

      public Ret.DistributionResult getCdfRespT()
      Returns cumulative distribution functions of response times at steady-state. Uses default response time handles.
      Returns:
      result containing CDFs for response times [stations x classes]
      Throws:
      RuntimeException - if not implemented by the concrete solver
    • getModel

      public Network getModel()
      Returns the queueing network model being solved.
      Returns:
      the network model
    • initFromSolver

      public NetworkSolver initFromSolver(NetworkSolver initSolver)
      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 (see WarmStart.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

      public void setModel(Network model)
      Sets the queueing network model to be solved.
      Parameters:
      model - the network model to set
    • getProb

      public Ret.ProbabilityResult getProb(int node, Matrix state)
      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 probabilities
      state - 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

      public Ret.ProbabilityResult getProb(int node)
      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

      public Ret.ProbabilityResult getProbAggr(int node, Matrix state_a)
      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 probabilities
      state_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

      public Ret.ProbabilityResult getProbAggr(int node)
      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

      public Ret.ProbabilityResult getProbMarg(int node, int jobclass, Matrix state_m)
      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 probabilities
      jobclass - the job class index for marginalization
      state_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

      public Ret.ProbabilityResult getProbMarg(int node, int jobclass)
      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 probabilities
      jobclass - 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

      public Ret.ProbabilityResult 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

      public Ret.ProbabilityResult 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

      public Ret.ProbabilityResult 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
    • getStageTable

      public NetworkAvgTable 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

      public NetworkAvgTable getStageTable(boolean keepDisabled)
      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

      public Ret.DistributionResult getTranCdfPassT(AvgHandle R)
      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

      public Ret.DistributionResult getTranCdfPassT()
      Returns cumulative distribution functions of passage times during transient analysis. Uses default response time handles.
      Returns:
      result containing transient CDFs for passage times
      Throws:
      RuntimeException - if not implemented by the concrete solver
    • getTranCdfRespT

      public Ret.DistributionResult getTranCdfRespT(AvgHandle R)
      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

      public Ret.DistributionResult 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

      public SolverTranHandles getTranHandles()
      Returns the transient performance metric handles.
      Returns:
      the transient handles object
    • setTranHandles

      public void setTranHandles(SolverTranHandles handles)
      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

      public Network 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

      public Ret.ProbabilityResult prob(int node)
    • prob

      public Ret.ProbabilityResult prob(int node, Matrix state_a)
    • probAggr

      public Ret.ProbabilityResult probAggr(int node)
    • probAggr

      public Ret.ProbabilityResult probAggr(int node, Matrix state_a)
    • probMarg

      public Ret.ProbabilityResult probMarg(int node, int jobclass)
    • probMarg

      public Ret.ProbabilityResult probMarg(int node, int jobclass, Matrix state_m)
    • probNormConstAggr

      public Ret.ProbabilityResult probNormConstAggr()
    • probSys

      public Ret.ProbabilityResult probSys()
    • probSysAggr

      public Ret.ProbabilityResult probSysAggr()
    • runAnalyzerChecks

      public void runAnalyzerChecks(SolverOptions options)
      Validates model compatibility and method support before analysis.
      Overrides:
      runAnalyzerChecks in class Solver
      Parameters:
      options - solver options containing method specification
      Throws:
      RuntimeException - if model contains unsupported features or method is invalid
    • sample

      public Ret.SampleResult sample(int node, int numEvents)
      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 from
      numEvents - the number of events to sample
      Returns:
      result containing sampled state trajectories
      Throws:
      RuntimeException - if not implemented by the concrete solver
    • sampleAggr

      public Ret.SampleResult sampleAggr(int node, int numEvents)
      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 from
      numEvents - the number of events to sample
      Returns:
      result containing sampled aggregated state trajectories
      Throws:
      RuntimeException - if not implemented by the concrete solver
    • sampleSys

      public Ret.SampleResult sampleSys(int numEvents)
      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

      public Ret.SampleResult sampleSysAggr(int numEvents)
      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

      public void setAvgResults(Matrix Q, Matrix U, Matrix R, Matrix T, Matrix A, Matrix W, Matrix C, Matrix X, double runtime, String method, int iter)
      Stores computed average metrics at steady-state in the solver result.
      Parameters:
      Q - queue length matrix [stations x classes]
      U - utilization matrix [stations x classes]
      R - response time matrix [stations x classes]
      T - throughput matrix [stations x classes]
      A - arrival rate matrix [stations x classes]
      W - residence time matrix [stations x classes]
      C - system response time vector [chains]
      X - system throughput vector [chains]
      runtime - computation time in seconds
      method - solution algorithm used
      iter - number of iterations performed
    • setDistribResults

      protected final void setDistribResults(Matrix RD, double runtime)
      Stores distribution metrics at steady-state.
      Parameters:
      RD - distribution data [stations x classes] containing CDFs
      runtime - 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

      protected final void setTranProb(Matrix t, Matrix pi_t, Matrix SS, double runtimet)
      Stores transient probability distributions.
      Parameters:
      t - time points vector
      pi_t - transient probability distributions
      SS - steady-state distribution
      runtimet - computation time for transient analysis
    • stageTable

      public Object stageTable()
    • stageT

      public Object stageT()
    • getStageT

      public NetworkAvgTable getStageT()
    • getStageT

      public NetworkAvgTable getStageT(boolean keepDisabled)
    • tranAvg

      public void tranAvg()
    • tranCdfPassT

      public Ret.DistributionResult tranCdfPassT()
    • tranCdfPassT

      public Ret.DistributionResult tranCdfPassT(AvgHandle R)
    • tranCdfRespT

      public Ret.DistributionResult tranCdfRespT()
    • tranCdfRespT

      public Ret.DistributionResult tranCdfRespT(AvgHandle R)
    • tranHandles

      public SolverTranHandles tranHandles()
    • bindingCapacityReason

      public static String bindingCapacityReason(Network model, NetworkStruct sn, String solverName)
      Shared structural gate for finite station capacity (setCapacity) and finite per-class buffers (setClassCap), used by the product-form solvers (MVA, NC). A product-form solver has no representation of a finite buffer, so without this gate it silently returns the UNCONSTRAINED answer (e.g. QLen=4 instead of the M/M/1/2 value 0.8525). There is no registry feature name for plain capacity, hence the structural test; this mirrors the MATLAB NetworkSolver.checkBindingCapacity and the native-Python check in solvers/solver_mva/solver_mva.py.

      The test reads the node-level capacity set by the user, NOT sn.cap / sn.classcap: refreshCapacity derives a FINITE sn.classcap (the chain population) for every closed model, so an sn-level test would reject every closed model.

      Only a capacity that can actually BIND is rejected. A closed model whose station capacity is at least the total population can never block a job, so the declaration is a no-op and the product-form answer stays exact (a common idiom: setCap(N) on an order-independent station of an N-job closed model). njobs is Inf for an open class, so any finite capacity reachable by an open class binds.

      Cache models are exempt: Cache builds retrieval queues that legitimately carry a per-class capacity of 1, and MVA/NC solve those through their dedicated cache/retrieval analyzers rather than as a buffer constraint.

      Parameters:
      model - - the network model
      sn - - the network structure (for njobs)
      solverName - - solver name used in the returned message
      Returns:
      null if no capacity can bind, otherwise the reason naming the offending station