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.
| Method | Algorithm and applicability |
|---|---|
default | Rank every candidate solver for this model and metric and run the winner. |
auto | Alias of default. |
heur | The same heuristic ranking, asked for explicitly. |
exact | Restrict the candidates to exact solvers (CTMC, exact MVA/NC). |
sim | Restrict the candidates to simulation solvers (SSA, JMT, LDES). |
fast | Rank for speed: MVA, then NC, then Fluid, then MAM. |
accurate | Rank for accuracy: Fluid, then MAM, then CTMC, then LDES. |
bound | Return 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