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

Synchronous call DAG carrying reference-task customers into a layer. More...

#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdio>
#include <limits>
#include <string>
#include <utility>
#include <vector>
#include "line/lang/lang_types.h"
#include "line/lang/lqn/lqn_struct.h"
#include "line/num/number.h"
Include dependency graph for lqn_ref_routes.h:

Go to the source code of this file.

Classes

struct  line::lqn::LqnRefCall< T >
 One row of calls: the reference's [cidx, fromPos, toPos, aidx, vCall]. More...
struct  line::lqn::LqnRefGroup< T >
 One group, the reference's R(g): the DAG below one REF task. More...
struct  line::lqn::LqnRefRoutes< T >
 What lqn_ref_routes returns: the groups, or a non-empty why and no groups. More...

Namespaces

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

Functions

template<class T>
LqnRefRoutes< T > line::lqn::lqn_ref_routes (const LqnStruct< T > &lqn, const std::vector< std::size_t > &callers, double maxpaths=32.0, const std::vector< std::size_t > &server_set={})
 Resolve the reference routes into the layer whose callers are CALLERS.

Detailed Description

Synchronous call DAG carrying reference-task customers into a layer.

Port of matlab/src/api/lqn/lqn_ref_routes.m. Resolves, for the caller set of one layer, the synchronous call graph along which reference (REF) task customers descend to those callers, and the mean number of times each entry and each call is invoked per REF cycle. SolverLN's interlock_method='refpath' reads it to merge the callers that are the same REF customers arriving by different routes into ONE client chain.

Nodes are ENTRIES. Visits are computed TOPOLOGICALLY, v(u) = sum over parents of v(p)*w(a)*callmean, and routes are COUNTED in the same pass rather than enumerated. Only SYNC calls are followed: an ASYNC call is send-no-reply, and forwarding is already flattened into pseudo-SYNC arcs by lqn_fwd_rendezvous.

INDEXING. Element and call indices are the 1-based ones of LqnStruct. The POSITIONS into entries (LqnRefCall::from, ::to, prefix_pos) are 0-based, where the reference's are 1-based.

Definition in file lqn_ref_routes.h.