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

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"
Include dependency graph for qn2lqn.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.

Detailed Description

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.