1classdef SolverFLD < NetworkSolver
2 % FLD - Fluid/Mean-Field Approximation solver
for large-scale network analysis
4 % Implements fluid approximation by replacing discrete populations with continuous levels.
6 % Copyright (c) 2012-2026, Imperial College London
10 function self = SolverFLD(model,varargin)
11 % SOLVERFLUID Create a Fluid solver instance
13 % @brief Creates a Fluid solver
for continuous approximation analysis
14 % @param model Network model to be analyzed via fluid approximation
15 % @param varargin Optional parameters (method, tolerances, etc.)
16 % @
return self SolverFLD instance configured
for fluid analysis
18 self@NetworkSolver(model, mfilename);
19 self.setOptions(Solver.parseOptions(varargin, self.defaultOptions));
25 RD = getTranCdfPassT(self, R);
26 [Pnir,logPnir] = getProbAggr(self, ist);
27 RD = getCdfRespT(self, R);
28 [AoI, PAoI, aoiTable] = getAvgAoI(self);
29 [AoI_cdf, PAoI_cdf] = getCdfAoI(self, t_values);
31 function sn = getStruct(self)
34 % Get data structure summarizing the model
35 sn = self.model.getStruct(
true);
38 [QNt,UNt,TNt] = getTranAvg(self,Qt,Ut,Tt);
40 % solve method
is supplied by Solver superclass
41 runtime = runAnalyzer(self, options);
43 function [allMethods] = listValidMethods(self)
44 % allMethods = LISTVALIDMETHODS()
45 % List valid methods
for this solver
46 sn = self.model.getStruct();
47 allMethods = {
'default',
'softmin',
'pnorm',
'statedep',
'closing',
'matrix',
'diffusion',
'mfq'};
53 function featSupported = getFeatureSet()
54 % FEATSUPPORTED = GETFEATURESET()
56 featSupported = SolverFeatureSet;
57 featSupported.setTrue({
58 'ClassSwitch',
'Delay',
'DelayStation',
'Queue',...
59 'Cox2',
'Erlang',
'Exp',
'HyperExp',...
61 'StatelessClassSwitcher',
'InfiniteServer',
'SharedServer',
'Buffer',
'Dispatcher',...
62 'Server',
'ServiceTunnel',...
63 'SchedStrategy_INF',
'SchedStrategy_PS',...
64 'SchedStrategy_DPS',
'SchedStrategy_FCFS',...
65 'SchedStrategy_SIRO',
'SchedStrategy_LCFS',
'SchedStrategy_LCFSPR',...
66 'RoutingStrategy_PROB',
'RoutingStrategy_RAND',...
67 'ClosedClass',
'SelfLoopingClass',
'Replayer', ...
68 'RandomSource',
'Sink',
'Source',
'OpenClass',
'JobSink'});
69 %SolverFLD has very weak performance on open models
72 function [bool, featSupported] = supports(model)
73 % [BOOL, FEATSUPPORTED] = SUPPORTS(MODEL)
75 featUsed = model.getUsedLangFeatures();
76 featSupported = SolverFLD.getFeatureSet();
77 bool = SolverFeatureSet.supports(featSupported, featUsed);
80 function options = defaultOptions()
81 % OPTIONS = DEFAULTOPTIONS()
82 options = SolverOptions('Fluid');
85 function libs = getLibrariesUsed(sn, options)
86 % GETLIBRARIESUSED Get list of external libraries used by FLD solver
87 % FLD uses internal fluid approximation algorithms, no external libraries needed