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

Peak of a class-dependence handle over the reachable population lattice. More...

#include <cmath>
#include <cstddef>
#include <functional>
#include <vector>
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/population.h"
Include dependency graph for cd_peak_scaling.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
line::pfqn::cd_peak_scaling (const std::function< std::vector< T >(const std::vector< int > &)> &beta, const std::vector< int > &NK)
 Peak of a class-dependence handle over the reachable population lattice.

Detailed Description

Peak of a class-dependence handle over the reachable population lattice.

Templated port of matlab/src/api/pfqn/cd_peak_scaling.m. The handle beta(n) returns either a scalar shared by every class or a per-class vector; the peak is taken over both the lattice states 0 <= n <= NK and the classes, because utilization is a per-station quantity and the whole station shares one normalizer, exactly as max(lldscaling(ist,:)) does for the load-dependent case. That single normalizer is what every solver divides by when reporting U = T S / bmax at a station with limited class dependence.

NON-FINITE VALUES are skipped, as in the reference (v = v(isfinite(v))): a class-dependence handle may legitimately return Inf for an unreachable composition, and letting that become the normalizer would zero every utilization at the station. A state whose every entry is non-finite contributes nothing, and if that is every state the peak stays at zero.

ARITHMETIC. A maximum over evaluations of the caller's handle: no transcendental function is applied, so the routine is EXACT in rational arithmetic and is deliberately left ungated. Whether the result is exact depends only on the handle.

Definition in file cd_peak_scaling.h.