FLD (Fluid/Mean-Field Approximation)

The FLD solver is based on a system of ordinary differential equations (ODEs) that provide mean-field approximations for queueing networks. The approach is grounded in Kurtz's mean-field approximation theory and is particularly effective for transient analysis and models with large job populations.

MethodAlgorithmReference
defaultAutomatic method selection
matrixODE-based mean field approximations[1], [2]
pnormPolynomial normalization ODE approximation
statedepKurtz's mean field ODEs for closed models[1]
closingFLD with closing method for open classes[3]
softminSmoothed statedep with softmin functions
diffusionDiffusion approximation via Euler-Maruyama SDEs[4]
mfqMarkovian fluid queue for single-queue systems[5]

Example

This example demonstrates the FLD solver on a closed queueing network with a large job population (100 jobs). The fluid approximation is particularly effective for high-population scenarios, where it provides accurate results more efficiently than state-space methods.

% Create a closed queueing network with 100 jobs
model = Network('FLD Example');

delay = Delay(model, 'Delay');
queue = Queue(model, 'Queue', SchedStrategy.FCFS);
jobclass = ClosedClass(model, 'Class1', 100, delay);

delay.setService(jobclass, Exp(1.0));
queue.setService(jobclass, Exp(2.4));

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

solver = FLD(model);
FLD(model).avgTable()

Output:

FLD analysis [method: default/matrix, lang: matlab] completed in 0.076s.
  2×8 table

    Station    JobClass     QLen      Util     RespT     ResidT     ArvR      Tput
     Delay      Class1      2.4       2.4          1         1      2.4       2.4
     Queue      Class1     97.6         1     40.667    40.667      2.4       2.4
// Create a closed queueing network with 100 jobs
Network model = new Network("FLD Example");

Delay delay = new Delay(model, "Delay");
Queue queue = new Queue(model, "Queue", SchedStrategy.FCFS);
ClosedClass jobclass = new ClosedClass(model, "Class1", 100, delay);

delay.setService(jobclass, new Exp(1.0));
queue.setService(jobclass, new Exp(2.4));

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

FLD solver = new FLD(model);
solver.avgTable.print();

Output:

FLD analysis [method: default/matrix, lang: java] completed.

  Station    JobClass     QLen      Util     RespT     ResidT     ArvR      Tput
    Delay      Class1      2.4       2.4          1         1      2.4       2.4
    Queue      Class1     97.6         1     40.667    40.667      2.4       2.4
# Create a closed queueing network with 100 jobs
from line_solver import *

model = Network("FLD Example")

delay = Delay(model, "Delay")
queue = Queue(model, "Queue", SchedStrategy.FCFS)
jobclass = ClosedClass(model, "Class1", 100, delay)

delay.set_service(jobclass, Exp(1.0))
queue.set_service(jobclass, Exp(2.4))

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

solver = FLD(model)
print(solver.avg_table)

Output:

FLD analysis [method: default/matrix, lang: python] completed.

  Station    JobClass     QLen      Util     RespT     ResidT     ArvR      Tput
    Delay      Class1      2.4       2.4          1         1      2.4       2.4
    Queue      Class1     97.6         1     40.667    40.667      2.4       2.4

References

  1. Pérez, J. F., & Casale, G. (2017). Decoupling transient and steady-state analysis in closed-form solutions of Markovian queueing networks. IEEE Transactions on Reliability, 66(3), 625-638.
  2. Ruuskanen, J., Berner, T., Årzén, K.-E., & Cervin, A. (2021). Improving the mean-field fluid model of processor sharing queueing networks for dynamic performance models in cloud computing. Performance Evaluation, 151, 102231.
  3. Bolch, G., Greiner, S., de Meer, H., & Trivedi, K. S. (2006). Queueing Networks and Markov Chains (2nd ed.). Wiley-Interscience.
  4. Reiser, M. (1983). Performance evaluation of data communication systems. Proceedings of the IEEE, 70(2), 171-196.
  5. Horváth, G., & Telek, M. (2014). Sojourn times in fluid queues with independent and dependent input and output processes. Performance Evaluation, 79, 160-181. https://doi.org/10.1016/j.peva.2014.07.011