AUTO Solver

Methods · Configuration · Shared options · All solvers

The AUTO solver (alias: LINE) offers automatic choice of the other solvers implemented in LINE (CTMC, NC, MVA, etc.). Presently it relies on custom heuristics based on known features of the algorithms.

Methods

The method names and defaults below describe the MATLAB interface. Aliases share a row; model-specific restrictions and backend differences are noted. Use solver.listValidMethods() to inspect the names available for your model.

Selection intents: they say what the solution is for, not which algorithm runs.

AUTO methods and aliases
MethodAlgorithm and applicability
defaultRank every candidate solver for this model and metric and run the winner.
autoAlias of default.
heurThe same heuristic ranking, asked for explicitly.
exactRestrict the candidates to exact solvers (CTMC, exact MVA/NC).
simRestrict the candidates to simulation solvers (SSA, JMT, LDES).
fastRank for speed: MVA, then NC, then Fluid, then MAM.
accurateRank for accuracy: Fluid, then MAM, then CTMC, then LDES.
boundReturn a throughput/queue-length bracket instead of a point estimate; rewritten to the ba family with submethod auto.

AUTO also accepts each family name (mva, nc, ctmc, fluid, mam, ag, ba, ssa, ldes, jmt, qns, ln, env, lqns, uq), which pins that family and skips the ranking, and every qualified label family.method built from the method lists on the solver pages (for example nc.comom, fluid.dae, ba.gb.upper).

The family aliases fld, des and lqsim resolve to fluid, ldes and lqns. Family-qualified names are portable; bare algorithm names such as comom are also resolved in MATLAB, Java and Python, but not C++.

Configuration options

This solver uses the shared options structure and coordinates inner solvers. Pass an options struct to configure its fields. See shared solver options for all top-level fields, shared configuration, defaults and usage. Options apply only to the methods and model features that consume them.

Relevant top-level options: method, lang.

AUTO uses the shared options and forwards the requested solver settings to the selected family. Follow that family's configuration reference below. To force AG for a G-network, request ag or ag.inap; AG is not part of the default ranking.

AUTO · MVA · NC · CTMC · FLD · MAM · AG · SSA · BA · LN · ENV · UQ · JMT · LQNS · QNS · LDES

Example

This example demonstrates the AUTO solver, which automatically selects the most appropriate solver for your model. The unique feature of AUTO is that you don't need to manually choose between MVA, NC, CTMC, or other solvers, it analyzes the model and selects the best algorithm.

% Create a simple M/M/1 queue
model = Network('AUTO Example');

source = Source(model, 'Source');
queue = Queue(model, 'Queue', SchedStrategy.FCFS);
sink = Sink(model, 'Sink');
jobclass = OpenClass(model, 'Class1');

source.setArrival(jobclass, Exp(0.9));
queue.setService(jobclass, Exp(1.0));

P = model.initRoutingMatrix();
P.set(jobclass, jobclass, source, queue, 1.0);
P.set(jobclass, jobclass, queue, sink, 1.0);
model.link(P);

% AUTO automatically selects the best solver
AUTO(model).avgTable()

Output:

MVA analysis [method: default/lin; type: approximate, deterministic; lang: matlab; env: 2025a] completed.
  1×8 table

    Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
     Queue      Class1        9       0.9        10         1      0.9      0.9
// Create a simple M/M/1 queue
Network model = new Network("AUTO Example");

Source source = new Source(model, "Source");
Queue queue = new Queue(model, "Queue", SchedStrategy.FCFS);
Sink sink = new Sink(model, "Sink");
OpenClass jobclass = new OpenClass(model, "Class1");

source.setArrival(jobclass, new Exp(0.9));
queue.setService(jobclass, new Exp(1.0));

RoutingMatrix P = model.initRoutingMatrix();
P.set(jobclass, jobclass, source, queue, 1.0);
P.set(jobclass, jobclass, queue, sink, 1.0);
model.link(P);

// AUTO automatically selects the best solver
new AUTO(model).avgTable.print();

Output:

MVA analysis [method: default/lin; type: approximate, deterministic; lang: java; env: 17.0.9] completed.

  Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
    Queue      Class1        9       0.9        10         1      0.9      0.9
# Create a simple M/M/1 queue
from line_solver import *

model = Network("AUTO Example")

source = Source(model, "Source")
queue = Queue(model, "Queue", SchedStrategy.FCFS)
sink = Sink(model, "Sink")
jobclass = OpenClass(model, "Class1")

source.set_arrival(jobclass, Exp(0.9))
queue.set_service(jobclass, Exp(1.0))

P = model.init_routing_matrix()
P.set(jobclass, jobclass, source, queue, 1.0)
P.set(jobclass, jobclass, queue, sink, 1.0)
model.link(P)

# AUTO automatically selects the best solver
print(AUTO(model).avg_table)

Output:

MVA analysis [method: default/lin; type: approximate, deterministic; lang: python; env: 3.13.7] completed.

  Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
    Queue      Class1        9       0.9        10         1      0.9      0.9