LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
solver_mam_sync.h File Reference

The 'sync.faster' and 'sync.slower' methods of SolverMAM: the synchronous approximation of an M/G/c/K station with dual bounds, qsys_mgck_sync. More...

#include <cmath>
#include <cstddef>
#include <string>
#include <vector>
#include "line/api/mam/map_moment.h"
#include "line/api/qsys/qsys_mgck_sync.h"
#include "line/lang/distribution.h"
#include "line/lang/qn/network_struct.h"
#include "line/solvers/mam/mam_types.h"
#include "line/util/error.h"
Include dependency graph for solver_mam_sync.h:

Go to the source code of this file.

Classes

struct  line::mam::MamSyncParams< T >
 What qsys_mgck_sync needs, read off the model by mam_sync_refusal. More...

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::mam
namespace  line::mam::sync_detail

Functions

const char * line::mam::sync_detail::drop_to_text (lang::DropStrategy d)
template<class T>
std::string line::mam::mam_sync_refusal (const qn::NetworkStruct< T > &L, std::size_t nph, MamSyncParams< T > *par=nullptr)
 mam_sync_applicable.m: why the sync methods cannot answer this model, or "" when they can, in which case par (when given) is filled.
template<class T>
mva::MvaSolution< T > line::mam::solver_mam_sync (const qn::NetworkStruct< T > &L, const MamOptions &opt)
 Port of solver_mam_sync.m: fills Q, U, R, T, C, X from qsys_mgck_sync.

Detailed Description

The 'sync.faster' and 'sync.slower' methods of SolverMAM: the synchronous approximation of an M/G/c/K station with dual bounds, qsys_mgck_sync.

Port of matlab/src/solvers/MAM/mam_sync_applicable.m and solver_mam_sync.m. 'sync.faster' returns lower bounds on the mean queue length, response time and loss probability, 'sync.slower' upper ones; options.config.sync_phases (MamOptions::sync_phases) selects the phase expansion.

THE RULE IS A SHAPE: the synchronous approximation is a model of one M/G/c/K station, so the network must be a single open class with one Source (Poisson) and one FCFS Queue with a finite capacity and the drop rule, every completion leaving the network. The service law must be one the embedded chain can take exactly: deterministic, or phase type. The phase expansion needs it deterministic.

ONE PREDICATE, THREE CALLERS: runner_detail::check_model_method, the mam_dispatch arm and solver_mam_sync all ask mam_sync_refusal.

Definition in file solver_mam_sync.h.