Class SolverMVA

Direct Known Subclasses:
MVA

public class SolverMVA extends NetworkSolver
SolverMVA implements Mean Value Analysis (MVA) for queueing networks. MVA is an exact analytical method for computing performance measures of closed queueing networks, particularly effective for networks with product-form solutions.
  • Constructor Details

    • SolverMVA

      public SolverMVA(Network model, String method)
      Creates a new SolverMVA instance with a specific method.
      Parameters:
      model - The network model to analyze
      method - The MVA method to use
    • SolverMVA

      public SolverMVA(Network model, SolverOptions options)
      Creates a new SolverMVA instance with specific options.
      Parameters:
      model - The network model to analyze
      options - The solver options to use
    • SolverMVA

      public SolverMVA(Network model, Object... varargin)
      Creates a new SolverMVA instance with variable arguments for options.
      Parameters:
      model - The network model to analyze
      varargin - Variable arguments for solver options
    • SolverMVA

      public SolverMVA(Network model)
      Creates a new SolverMVA instance with default options.
      Parameters:
      model - The network model to analyze
  • Method Details

    • defaultOptions

      public static SolverOptions defaultOptions()
      Returns the default solver options for the MVA solver.
      Returns:
      Default solver options with SolverType.MVA
    • getFeatureSet

      public static FeatureSet getFeatureSet()
      Returns the feature set supported by the MVA solver
      Returns:
      - the feature set supported by the MVA solver
    • methodFeatureSet

      public static FeatureSet methodFeatureSet(String method)
      Per-method feature deltas applied to the base MVA envelope. QNA is a two-moment open-network method, so it drops closed-class support. The queueing-system and bounds methods are already structurally restricted by listValidMethods and inherit the base envelope. The RQNA MAP-family delta (open only) is declared here for when the JAR RQNA method lands. Mirrors the MATLAB/Python SolverMVA.getMethodFeatureSet.
      Parameters:
      method - the concrete method name
      Returns:
      the per-method FeatureSet
    • getMethodFeatureSet

      public FeatureSet getMethodFeatureSet(String method)
      Description copied from class: Solver
      Per-method feature set, or null to signal "this solver does not diverge per method" (the coarse supports(model) is then used, preserving any structural checks it carries). Divergent solvers (e.g. MVA, MAM, NC) override this to return the base envelope with per-method deltas applied.
      Overrides:
      getMethodFeatureSet in class Solver
      Parameters:
      method - the concrete method name
      Returns:
      the per-method FeatureSet, or null
    • getStruct

      public NetworkStruct getStruct()
      Returns the network structure used by this solver. If the structure is not yet initialized, it will be created from the model.
      Returns:
      The network structure
    • setStruct

      public void setStruct(NetworkStruct sn)
      Sets the network structure for this solver.
      Parameters:
      sn - The network structure to use
    • runAnalyzer

      public void runAnalyzer() throws IllegalAccessException
      Runs the MVA analyzer to solve the queueing network. This method executes the Mean Value Analysis algorithm and stores the results in the solver's result object.
      Specified by:
      runAnalyzer in class Solver
      Throws:
      IllegalAccessException - if there are access issues during analysis
    • supports

      public boolean supports(Network model)
      Checks whether the given model is supported by the MVA solver
      Overrides:
      supports in class Solver
      Parameters:
      model - - the network model
      Returns:
      - true if the model is supported, false otherwise
    • finiteCapacityReason

      public static String finiteCapacityReason(Network model, NetworkStruct sn)
      MVA-specific finite-capacity gate: Blocking-After-Service models are exempt because MVA offers the Smith queue-decomposition method "sqd", and Solver_mva_analyzer routes a BAS model to Solver_sqd under the default method too, so the finite buffers ARE honoured on every MVA path. Everything else defers to the shared product-form gate.
      Parameters:
      model - - the network model
      sn - - the network structure
      Returns:
      null if the model has no binding capacity, otherwise the reason
    • getProbNormConstAggr

      public Ret.ProbabilityResult getProbNormConstAggr()
      Returns the logarithm of the normalizing constant for the aggregate state probabilities
      Overrides:
      getProbNormConstAggr in class NetworkSolver
      Returns:
      the log of the normalizing constant
    • getProbAggr

      public Ret.ProbabilityResult getProbAggr(int ist)
      Get marginal state probabilities for a specific station
      Overrides:
      getProbAggr in class NetworkSolver
      Parameters:
      ist - station index (0-based)
      Returns:
      ProbabilityResult with probability and log probability
    • getProbSysAggr

      public Ret.ProbabilityResult getProbSysAggr()
      Get joint system state probabilities
      Overrides:
      getProbSysAggr in class NetworkSolver
      Returns:
      ProbabilityResult with probability and log probability
    • getProbMarg

      public Ret.ProbabilityResult getProbMarg(int ist, int jobclass)
      Get marginalized state probabilities for a specific station and job class
      Overrides:
      getProbMarg in class NetworkSolver
      Parameters:
      ist - station index (0-based)
      jobclass - job class index (0-based)
      Returns:
      ProbabilityResult with marginalized state probabilities
    • getProbMarg

      public Ret.ProbabilityResult getProbMarg(int ist, int jobclass, Matrix state_m)
      Get marginalized state probabilities for a specific station and job class with state filter
      Overrides:
      getProbMarg in class NetworkSolver
      Parameters:
      ist - station index (0-based)
      jobclass - job class index (0-based)
      state_m - marginalized state vector to query (optional, null for all states)
      Returns:
      ProbabilityResult with marginalized state probabilities
    • listValidMethods

      public String[] listValidMethods()
      List all valid solution methods supported by this solver
      Returns:
      array of valid method names