solvers

lineMethodRegistry(solver, what, method)

LINEMETHODREGISTRY The method names of each solver, in listing order.

NAMES = lineMethodRegistry(‘MVA’) every method SolverMVA can be asked for

in MATLAB, in the order listValidMethods lists them;

H = lineMethodRegistry(‘MVA’, ‘handler’, ‘amva.qd’) the analyzer arm

that serves the method (its own name when the registry names none);

N = lineMethodRegistry(‘MVA’, ‘handled’) the methods that name an analyzer arm; S = lineMethodRegistry() the solver names the registry covers.

GENERATED by doc/generate-method-registry.py from doc/line-methods.json. Do not edit. See doc/generate-method-registry.py.

Copyright (c) 2012-2026, Imperial College London All rights reserved.

lineConfigValidate(options, defaultOptions, solverName)

LINECONFIGVALIDATE(OPTIONS, DEFAULTOPTIONS, SOLVERNAME)

@brief Refuses an options.config key that the target codebase would silently ignore @param options Solver options struct; its config field is checked against options.lang @param defaultOptions Default options of the solver (supplies the defaults of rule 4), a handle returning them, or [] @param solverName Solver name (‘SolverMVA’, ‘MVA’, ‘Fluid’, …) or ‘’ when unknown

The key NAMES of options.config are checked against doc/line-config.schema.json (read through the generated lineConfigSchema) for the codebase that options.lang selects. The same contract holds in MATLAB, the JAR, Python and C++:

  1. a key the schema does not know, by name or alias, is LINE:input:ConfigUnknown, with a did-you-mean suggestion;

  2. a key the target places anywhere (‘config’, ‘option:<f>’, a line-cli flag) is accepted: MATLAB always spells it under options.config and the bridge to that codebase moves it where the codebase reads it;

  3. a key the target does not implement (placement ‘’) is accepted only at its default value (the solver’s own or the schema’s generic one), and is otherwise LINE:unsupported:ConfigKey naming the codebases that implement it.

Keys flagged internal in the schema (interlock, transform_depth, lsoda_retry, …) are written by LINE itself on a struct copy and recomputed by whichever codebase solves, so rule 3 does not apply to them; their names still must be known. See _kb/05-solvers-overview.md.

lineConfigSchema()

T = LINECONFIGSCHEMA() GENERATED by doc/generate-config-schema.py from doc/line-config.schema.json. Do not edit.

Every key a LINE solver accepts under options.config, as a containers.Map from key name to a struct with fields matlab, java, python, cpp (where that codebase reads the key: ‘config’, ‘option:<field>’, a line-cli flag, or ‘’ when it does not implement it), default, solverDefaults, aliases, internal, solvers and type (the JSON-schema type a value must have, ‘’ when unchecked) and values (the admissible strings, {} when any string is taken). Aliases map to the struct of the key they spell. See lineConfigValidate.

lineConfigPlaced(placement)

[TF, PLACES] = LINECONFIGPLACED(PLACEMENT)

@brief Splits a lineConfigSchema placement into its elements @param placement Placement string of one codebase: ‘config’, ‘option:<f>’, a line-cli flag, ‘’ or a comma-separated list @return tf True when the codebase reads the key at all @return places Cellstr of the non-empty placement elements

class SolverUQ

Bases: UQ

SolverUQ - 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)

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 SolverFluid(MODEL, VARARGIN)

Bases: SolverFLD

SolverFLD - Alias for SolverFLD (Fluid/Mean-Field Approximation solver)

Copyright (c) 2012-2026, Imperial College London All rights reserved.

Constructor Summary
SolverFluid(MODEL, VARARGIN)
lineConfigDefault(key, solverName, defaultConfig)

[D, KNOWN, DEFAULTCONFIG] = LINECONFIGDEFAULT(KEY, SOLVERNAME, DEFAULTCONFIG)

@brief Default value of an options.config key, as lineConfigValidate and the bridges compare it @param key Config key name or alias @param solverName Solver name (‘SolverMVA’, ‘MVA’, ‘Fluid’, …) or ‘’ when unknown @param defaultConfig The solver’s default options.config struct, or [] to use SolverOptions(solverName) @return d The solver’s own default when it sets the key, else the schema’s per-solver default, else the schema default @return known False when the schema does not know KEY (D is then []) @return defaultConfig The default config struct used, to pass back in on the next call and skip rebuilding it

class SolverEnv(MODEL, VARARGIN)

Bases: SolverENV

SolverEnv - Deprecated alias for SolverENV (Ensemble environment solver)

Copyright (c) 2012-2026, Imperial College London All rights reserved.

Constructor Summary
SolverEnv(MODEL, VARARGIN)
class SolverFeatureSet

Bases: handle

An 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.

static refusalId(featSupportedList, featUsedList, reason)

ERRID = REFUSALID(FEATSUPPORTEDLIST, FEATUSEDLIST, REASON)

The error-vocabulary id of a feature-gate refusal: ‘LINE:unsupported:<first unsupported feature in FIELDS order>’, the same kind the JAR, Python and C++ gates report (_kb/17-error-vocabulary.md). REASON, when given, is a refusal sentence built by SUPPORTS; its first named feature is used directly. With no feature to name (a structural refusal, or no feature set) the kind is ‘Structure’.

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 Solver

Bases: handle

Abstract 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, refusing a config key the target lang would silently ignore (lineConfigValidate). A handle, so the defaults (and SolverOptions’ randi seed draw) are built only if needed.

class LQNS(MODEL, VARARGIN)

Bases: SolverLQNS

LQNS - Alias for SolverLQNS (Layered Queueing Network Solver)

Copyright (c) 2012-2026, Imperial College London All rights reserved.

Constructor Summary
LQNS(MODEL, VARARGIN)
class LINE

Bases: SolverAuto

Main 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 XML or SRVN text), .in (SRVN), .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: SolverLDES

LDES - Alias for SolverLDES

Copyright (c) 2012-2026, Imperial College London All rights reserved.

Constructor Summary
LDES(MODEL, VARARGIN)
class JMT(MODEL, VARARGIN)

Bases: SolverJMT

JMT - 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: SolverFluid

Fluid - 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)

class SolverAuto(MODEL, VARARGIN)

Bases: SolverAUTO

SolverAuto - Backward compatibility alias for SolverAUTO

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