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

Standalone LQN routines that SolverLN needs but does not contain. More...

#include <cmath>
#include <cstddef>
#include <string>
#include <vector>
#include "line/lang/lqn/lqn_struct.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for lqn_helpers.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::ln

Enumerations

enum class  line::ln::CallType
 Call kinds, with the values of MATLAB CallType. More...

Functions

template<class T>
void line::ln::lqn_fwd_rendezvous (LqnStruct< T > &lqn)
 Replace every forwarding chain reachable from a synchronous call by caller-side pseudo rendezvous calls to the forwarding targets.
template<class T>
line::ln::lqn_overtake_markov (const Matrix< T > &clientPhases, const T &prVisit, const T &xj, const std::vector< T > &y_aj)
 Overtaking probability from the LQNS phased-server Markov chain.

Detailed Description

Standalone LQN routines that SolverLN needs but does not contain.

Port of matlab/src/solvers/LN/lqn_fwd_rendezvous.m and matlab/src/solvers/LN/lqn_overtake_markov.m.

lqn_act_thinktime.m is DELIBERATELY ABSENT. Its whole content – add the activity think time to the activity's service and residence time, skipping the unset (NaN in MATLAB, disabled here) case – is already inline in the servt_map loop of solver_ln.h. A second copy of a two-line rule that two files would have to keep agreeing on is worse than no helper at all.

BOTH ARE WIRED IN. SolverLN::construct calls lqn_fwd_rendezvous before it reads anything else out of the struct, as @SolverLN/SolverLN.m:162-164 does, and lqn_overtake_markov is reached from update_metrics through the input mapping of lqn_analyzers.h's lqn_overtake_prob_markov. Neither construct is refused by name any longer.

Definition in file lqn_helpers.h.