AUTO Solver

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.

MethodAlgorithmReference
defaultAutomatic solver and method selection

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:

AUTO analysis [selected: MVA, method: default/lin, lang: matlab] 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:

AUTO analysis [selected: MVA, method: default/lin, lang: java] 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:

AUTO analysis [selected: MVA, method: default/lin, lang: python] completed.

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