![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The variable layout and the constraint families shared by the two reductions that carry singly-indexed probabilities: the linear reduction (mapqn_bnd_lr.m) and the general quadratic reduction (mapqn_bnd_qr.m). More...
#include <cstddef>#include <vector>#include "line/api/mapqn/mapqn_params.h"#include "line/num/number.h"#include "line/util/simplex.h"Go to the source code of this file.
Classes | |
| struct | line::mapqn::MapqnP1Index |
| Variable layout of the p1-level models. More... | |
Namespaces | |
| namespace | line |
| namespace | line::mapqn |
The variable layout and the constraint families shared by the two reductions that carry singly-indexed probabilities: the linear reduction (mapqn_bnd_lr.m) and the general quadratic reduction (mapqn_bnd_qr.m).
The two references duplicate these fifteen families verbatim – ZER1..ZER4, CEQU, ONE1, UTLB, UTLC, QLEN, CLEN, ONE, POPC, SRVB, UUB1, QUB1 are the same loops with the same coefficients in both files – and the QR file then adds the p2 level on top. Emitting each family from ONE function here is the same discipline mapqn_qr_common.h applies to the load-dependent pair, and for the same reason: a correction to a family must not be able to land in one entry point and miss the other.
INDEX LAYOUT. Blocks in the order the references register them, minus the three inert ones (see below). Populations are 0..N as written; queues and phases are 0-based, so every reference loop for i = 1:M becomes for i = 0; i < M; ++i and every subscript except a population drops by one. half(i,ni,h) is shared by the inner half of p1 and p1c and by both halves of p2, which is what makes the QR projection families PI21/PI22 plain index arithmetic and PI23 a swap.
INERT VARIABLES OMITTED. Both references register UP(j,k,i,h), QP(j,k,i,h) and I_var(j,k,i), give them upper bounds, and then reference them in no constraint and in no objective (verified in both files: the three index arrays appear only at their own registration and bounding). A variable with no row and no cost cannot move the optimum, so they are not allocated.
Definition in file mapqn_p1_common.h.