solvers
- class Solver
Bases:
handleAbstract base class for all LINE model solution algorithms
Provides common interface and infrastructure for queueing network analysis.
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Property Summary
- VERBOSE_DEBUG
- VERBOSE_SILENT
- VERBOSE_STD
- model
Model to be solved
- name
Solver name
- obj
- options
Data structure with solver options
- result
last result
- Method Summary
- static defaultOptions()
OPTIONS = DEFAULTOPTIONS() Return default options
- getModel()
- getName()
OUT = GETNAME() Get solver name
- getOptions()
OPTIONS = GETOPTIONS() Return options data structure
- getResults()
RESULTS = GETRESULTS() Return results data structure
- hasResults()
BOOL = HASRESULTS() Check if the model has been solved
- static isJavaAvailable()
BOOL = ISJAVAAVAILABLE() Check if a Java runtime is reachable, either on the PATH or through JAVA_HOME/LINE_JAVA or the JRE bundled with MATLAB.
- isStochastic()
BOOL = ISSTOCHASTIC() True if the solver, with its currently configured method, returns stochastic estimates (i.e., results depend on the random seed, as in simulation or Monte Carlo integration). A solver run with method ‘default’ may resolve the actual method only at runtime; once results are available, the classification therefore uses the method recorded in result.Avg.method (e.g. ‘default/imci’ when the NC default path resolved to Monte Carlo integration).
- isStochasticMethod(method)
#ok<INUSD> BOOL = ISSTOCHASTICMETHOD(METHOD) Classify a (possibly runtime-resolved) method name of this solver as stochastic. Deterministic by default; subclasses with simulation-based or sampling-based methods override this.
- static isValidOption(optName)
BOOL = ISVALIDOPTION(OPTNAME) Check if the given option exists for the solver
- static listValidOptions()
OPTLIST = LISTVALIDOPTIONS() List valid fields for options data structure
- static mergeOptions(userOptions, defaultOptions)
OPTIONS = MERGEOPTIONS(USEROPTIONS, DEFAULTOPTIONS) Overlay a caller-supplied options struct on the solver defaults so that a struct built by hand inherits every field it omits. Caller-supplied fields always win; struct-valued fields present in both (config, odesolvers) are merged by the same rule one level down, so a partial config does not discard the rest of it.
- static parseConfInt(confint)
[ENABLED, LEVEL] = PARSECONFINT(CONFINT) Parse confidence interval option value Returns enabled (true/false) and confidence level (0.0-1.0)
- static parseOptions(varargin, defaultOptions)
OPTIONS = PARSEOPTIONS(VARARGIN, DEFAULTOPTIONS) Parse option parameters into options data structure
- reset()
RESET() Dispose previously stored results
- static resetRandomGeneratorSeed(seed)
RESETRANDOMGENERATORSEED(SEED) Assign a new seed to the random number generator
- setChecks(bool)
- setOptions(options)
SELF = SETOPTIONS(OPTIONS) Set a new options data structure
- SolverOptions(solverName)
SOLVEROPTIONS Create solver configuration options structure
@brief Creates a configuration structure with solver-specific default options @param solverName Optional solver name for specific configurations (default: ‘Solver’) @return options Struct containing solver configuration parameters
SolverOptions generates a standardized options structure for configuring LINE solvers. It provides default values for common parameters like convergence tolerances, iteration limits, ODE solvers, and solver-specific settings. The function customizes defaults based on the solver type.
Common options include: - Convergence parameters (tol, iter_tol, iter_max) - Analysis parameters (samples, seed, cutoff) - Language selection (MATLAB vs Java) - ODE solver configuration for fluid methods - Verbosity and caching controls - Solver-specific configuration overrides
Solver-specific customizations are available for: - CTMC: State space generation and transient analysis - Fluid: ODE solver selection and timespan - JMT: Simulation parameters and confidence intervals - MVA: Method selection and approximation settings - SSA: Sampling and parallel execution options
Example: @code opts = SolverOptions(‘MVA’); % MVA-specific defaults opts.method = ‘exact’; % Override method opts.iter_tol = 1e-6; % Tighter tolerance solver = SolverMVA(model, opts); % Use custom options @endcode
- class SolverFeatureSet
Bases:
handleAn auxiliary class to specify the features supported by a solver.
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- SolverFeatureSet()
SELF = SOLVERFEATURESET()
- Property Summary
- fields
Canonical feature-name registry; must stay identical to jar FeatureSet.java and python base.py SolverFeatureSet.FIELDS. It also lists the distributions that no solver supports as a service or arrival process (DiscreteSampler, DiscreteUniform, Empirical, GMM, MMDP, MMDP2, MMPP, MultivariateNormal, NegBinomial, Prior, Zipf): their names can still be emitted by getUsedLangFeatures, and an unregistered name is invisible to SUPPORTS, which iterates this list, so the model would pass the support gate as if the distribution were absent. No solver declares them, hence a clean rejection instead.
- list
list of features
- Method Summary
- static generalizationOf(feature)
GENERAL = GENERALIZATIONOF(FEATURE)
The registry name a specialization falls back to when it is not declared, or ‘’ when the feature stands on its own.
A few entries name a SPECIAL CASE of another entry rather than a capability of their own: ‘Cox2’ is a Coxian restricted to two phases and ‘Trace’ is a Replayer under another class name. Marking a model with only the general name left the specific entry unreachable, which is dead registry surface; marking it with the specific name alone would instead REJECT the model at every solver declaring only the general one, i.e. at every solver that accepts it today. So getUsedLangFeatures marks the most specific name and SUPPORTS falls back here. The fallback runs one way only: a solver supporting just the special case declares ‘Cox2’ alone and keeps refusing a five-phase Coxian.
- setFalse(feature)
SELF = SETFALSE(FEATURE)
- setTrue(feature)
SELF = SETTRUE(FEATURE)
- static supports(featSupportedList, featUsedList)
[BOOL, REASON, UNSUPPORTED] = SUPPORTS(FEATSUPPORTEDLIST, FEATUSEDLIST)
BOOL is true when every feature used by the model is supported. REASON is a human-readable list of the offending feature names (empty when BOOL is true), for use in method-aware error messages. UNSUPPORTED is the same list as a cell array of feature names, for dispatch decisions that depend on which features are missing.
- class LINE
Bases:
SolverAutoMain entry point for the LINE solver. Provides a unified interface to access various solvers (CTMC, MVA, SSA, JMT, Fluid, NC, MAM). Can also be used to load models from files. Alias for SolverAuto
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- LINE(model, varargin)
Constructor for the LINE solver wrapper.
- Parameters:
model – The network model (Network or LayeredNetwork).
varargin – Optional arguments passed to SolverAuto.
- Returns:
self – Instance of the LINE solver.
SELF = LINE(MODEL, VARARGIN)
- Method Summary
- static load(varargin)
Factory method to load models or instantiate solvers. Usage 1: Load a model from file. model = LINE.load(filename) model = LINE.load(filename, verbose) Supported formats: .jsim, .jsimg, .jsimw (JMT), .jmva (JMVA), .xml/lqn/lqnx (LQN), .mat (MATLAB).
Usage 2: Instantiate a solver with a specific method. solver = LINE.load(method, model, options…)
- Parameters:
varargin – Arguments for loading a model or creating a solver.
- Returns:
result – Loaded model object or Solver instance.
RESULT = LOAD(…) Flexible loading method that handles both solver and model loading
- Usage 1: Load a model from file
model = LINE.load(filename) model = LINE.load(filename, verbose)
- Usage 2: Load a solver with chosen method (legacy)
solver = LINE.load(method, model, options…)
- class LDES(MODEL, VARARGIN)
Bases:
SolverLDESLDES - Alias for SolverLDES
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- LDES(MODEL, VARARGIN)
- class SolverUQ
Bases:
UQSolverUQ - Alias for UQ (uncertainty quantification solver wrapper)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- SolverUQ(model, solverFactory, varargin)
SOLVERUQ(MODEL, SOLVERFACTORY, VARARGIN)
- class SolverFluid(MODEL, VARARGIN)
Bases:
SolverFLDSolverFLD - Alias for SolverFLD (Fluid/Mean-Field Approximation solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- SolverFluid(MODEL, VARARGIN)
- class SolverEnv(MODEL, VARARGIN)
Bases:
SolverENVSolverEnv - Deprecated alias for SolverENV (Ensemble environment solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- SolverEnv(MODEL, VARARGIN)
- class SolverAuto(MODEL, VARARGIN)
Bases:
SolverAUTOSolverAuto - Backward compatibility alias for SolverAUTO
This class provides backward compatibility with the old lowercase name. New code should use SolverAUTO instead.
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- SolverAuto(MODEL, VARARGIN)
Backward compatibility constructor
- class QNS(MODEL, VARARGIN)
Bases:
SolverQNSQNS - Alias for SolverQNS (Queueing Network Solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- QNS(MODEL, VARARGIN)
- class LQNS(MODEL, VARARGIN)
Bases:
SolverLQNSLQNS - Alias for SolverLQNS (Layered Queueing Network Solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- LQNS(MODEL, VARARGIN)
- class JMT(MODEL, VARARGIN)
Bases:
SolverJMTJMT - Alias for SolverJMT (Java Modelling Tools solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- JMT(MODEL, VARARGIN)
- class Fluid
Bases:
SolverFluidFluid - Alias for SolverFluid (Fluid/Mean-Field Approximation solver)
Copyright (c) 2012-2026, Imperial College London All rights reserved.
- Constructor Summary
- Fluid(model, varargin)
FLUID(MODEL, VARARGIN)