ENV (Environment/Blending Solver)

The ENV solver analyzes queueing systems operating in random environments with multiple operational stages. The solver uses stage-dependent analysis where system parameters vary according to the current environmental state. Performance metrics are computed as ensemble averages over all environmental stages, enabling modeling of systems subject to external conditions or failures.

MethodAlgorithmReference
defaultAutomatic environment-aware analysis

Example

This example demonstrates the ENV solver for queueing systems operating in random environments with multiple operational stages. The unique feature of ENV is its ability to analyze systems where parameters vary according to environmental states, computing ensemble averages over all stages.

% Create a simple M/M/1 queue operating in multiple environmental stages
model = Network('ENV Example');

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

source.setArrival(jobclass, Exp(0.8));
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);

% Solve with environment-aware analysis
ENV(model).avgTable()

Output:

ENV analysis [method: default, lang: matlab] completed in 0.08s.

  Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
   Queue      Class1        4       0.8         5         1      0.8      0.8

Ensemble averaged over environmental stages.
// Create a simple M/M/1 queue operating in multiple environmental stages
Network model = new Network("ENV 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.8));
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);

// Solve with environment-aware analysis
new ENV(model).avgTable.print();

Output:

ENV analysis [method: default, lang: java] completed.

  Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
    Queue      Class1        4       0.8         5         1      0.8      0.8

Ensemble averaged over environmental stages.
# Create a simple M/M/1 queue operating in multiple environmental stages
from line_solver import *

model = Network("ENV 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.8))
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)

# Solve with environment-aware analysis
print(ENV(model).avg_table)

Output:

ENV analysis [method: default, lang: python] completed.

  Station    JobClass     QLen      Util     RespT     ResidT    ArvR     Tput
    Queue      Class1        4       0.8         5         1      0.8      0.8

Ensemble averaged over environmental stages.