solvers

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

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

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: 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), .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 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)

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

Bases: SolverAUTO

SolverAuto - 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: SolverQNS

QNS - 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: 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 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)