![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of solver_mam.m, the dec.mmap method: the per-class departure-process decomposition. More...
#include <algorithm>#include <cmath>#include <string>#include <utility>#include <vector>#include "line/api/da/da_fpi.h"#include "line/api/mam/map_moment.h"#include "line/api/mam/map_transform.h"#include "line/api/mam/mmap_lambda.h"#include "line/api/mam/mmapph1fcfs.h"#include "line/api/mam/qbd_depproc.h"#include "line/api/qsys/qsys_mmck.h"#include "line/lang/qn/network_struct.h"#include "line/solvers/mam/mam_types.h"#include "line/solvers/mam/solver_mam_basic.h"#include "line/solvers/mam/solver_mam_basic_mmap.h"#include "line/solvers/mam/solver_mam_bmap.h"#include "line/solvers/mam/solver_mam_traffic.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mam |
Functions | |
| template<class T> | |
| mva::MvaSolution< T > | line::mam::solver_mam_decmmap (const qn::NetworkStruct< T > &L, const MamOptions &opt) |
| Port of solver_mam.m. | |
Port of solver_mam.m, the dec.mmap method: the per-class departure-process decomposition.
IT IS THE MMAP DECOMPOSITION WITHOUT THE FORK-JOIN MACHINERY. The sweep is the same one solver_mam_basic_mmap_inner runs – rebuild every arrival stream from the departure table through the traffic equations, solve each station in isolation, and replace each departure process by the ETAQA truncation of that station's own QBD – with three differences, all of them the reference's:
WHAT THE REFERENCE REFUSES, AND HOW THIS PORT REFUSES IT. Two model classes get NO ANSWER from solver_mam.m, and neither refusal is an error there:
THE TRAILING SURROGATE-DELAY BLOCK IS OUTSIDE THE NODE SWITCH in the reference, so it runs at EVERY station and not only at the queues – including the Source, whose PH is its own ARRIVAL process (the EXT branch never assigns one) and whose utilization therefore comes out as lambda * (1/lambda) = 1. Reproduced as written: it is what the reference reports, the surrogate term is zero at the Source because it has one server, and getAvg's metric filter is what decides whether a Source utilization is shown.
ARITHMETIC. Double (or real) only, for the reasons solver_mam_basic.h lists.
Definition in file solver_mam_decmmap.h.