![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Convert a closed queueing network into the layered model used by SolverLQNS. More...
#include <cmath>#include <cstddef>#include <limits>#include <string>#include <vector>#include "line/lang/lqn/lqn_builder.h"#include "line/lang/qn/network_struct.h"#include "line/util/error.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::qn |
| namespace | line::io |
Functions | |
| template<class T> | |
| lqn::LqnModel< T > | line::io::qn2lqn (const qn::NetworkStruct< T > &sn) |
| Port of MATLAB QN2LQN(model), over the refreshed C++ NetworkStruct. | |
| template<class T> | |
| lqn::LqnModel< T > | line::io::qn2lqn (qn::Network< T > &model) |
| MATLAB-compatible model-level entry point; refreshes the Network first. | |
Convert a closed queueing network into the layered model used by SolverLQNS.
Port of matlab/src/io/QN2LQN.m. A chain becomes a reference task, every Queue or Delay becomes an infinite-multiplicity server task, and the node routing becomes activity precedences on the reference task. Forks use an AND fork and Joins an AND join; the other routing nodes use probabilistic OR forks.
C++ keeps visits on two explicit index spaces. The MATLAB routine indexes sn.visits with a node index, while this port uses nodevisits, the node-indexed twin, so a Router/ClassSwitch before a station cannot shift the service activity onto the wrong row.
Definition in file qn2lqn.h.