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

The distributions a user names, spelled as their Python twins. More...

#include <cstddef>
#include <string>
#include <vector>
#include "line/lang/dist_fitters.h"
#include "line/lang/lang_types.h"
Include dependency graph for distributions.h:

Go to the source code of this file.

Namespaces

namespace  line

Macros

#define LINE_DIST_CTOR(Cls)
 Every named law below is a Distrib<double> under another name.

Typedefs

typedef lang::Distrib< double > line::Distribution

Functions

 line::LINE_DIST_CTOR (Exp)
 Exp(rate): the exponential law of the given RATE, as Python's Exp.
 line::LINE_DIST_CTOR (Erlang)
 Erlang(phase_rate, nphases).
 line::LINE_DIST_CTOR (HyperExp)
 HyperExp(p, lambda1, lambda2).
 line::LINE_DIST_CTOR (Coxian)
 Coxian(mu, phi).
 line::LINE_DIST_CTOR (Cox2)
 Cox2(mu1, mu2, phi1).
 line::LINE_DIST_CTOR (PH)
 PH(alpha, A): a general phase-type law.
 line::LINE_DIST_CTOR (APH)
 APH(alpha, A): the acyclic phase-type law.
 line::LINE_DIST_CTOR (MAP)
 MAP(D0, D1).
 line::LINE_DIST_CTOR (Det)
 Det(t): the deterministic law.
 line::LINE_DIST_CTOR (Immediate)
 Immediate(): a zero-time transition.
 line::LINE_DIST_CTOR (Disabled)
 Disabled(): the class is not served here.
 line::LINE_DIST_CTOR (Uniform)
 Uniform(a, b).
 line::LINE_DIST_CTOR (Pareto)
 Pareto(shape, scale).
 line::LINE_DIST_CTOR (Gamma)
 Gamma(shape, scale).
 line::LINE_DIST_CTOR (Weibull)
 Weibull(scale, shape).
 line::LINE_DIST_CTOR (Lognormal)
 Lognormal(logmean, logsigma).
 line::LINE_DIST_CTOR (Normal)
 Normal(mu, sigma).
 line::LINE_DIST_CTOR (Geometric)
 Geometric(p).
 line::LINE_DIST_CTOR (Bernoulli)
 Bernoulli(p).
 line::LINE_DIST_CTOR (Binomial)
 Binomial(n, p).
 line::LINE_DIST_CTOR (Poisson)
 Poisson(lambda).
 line::LINE_DIST_CTOR (DiscreteUniform)
 DiscreteUniform(a, b).
 line::LINE_DIST_CTOR (Zipf)
 Zipf(s, n).
 line::LINE_DIST_CTOR (DiscreteSampler)
 DiscreteSampler(p, x).
 line::LINE_DIST_CTOR (Replayer)
 Replayer(samples) / Replayer(samples, path): the trace-driven law.

Detailed Description

The distributions a user names, spelled as their Python twins.

queue1.set_service(closed, Exp(1.0));
delay.set_service(open, Erlang(3.0, 2));
delay.set_service(open, HyperExp(0.5, 3.0, 10.0));

against Python's Exp(1.0), Erlang(3.0, 2), HyperExp(0.5, 3.0, 10.0).

EACH IS A THIN NAME OVER THE FACTORY THAT ALREADY EXISTS. Every constructor assigns the Distrib<double> that lang_types.h builds, so the numeric behaviour is the factory's and nothing new is computed here; deriving from Distrib<double> is what lets one slice cleanly into set_service, which takes the base by const reference.

The fitters keep Python's static-method spelling (HyperExp::fit_mean_and_scv), forwarding to line/lang/dist_fitters.h.

double-only, as Python is. Reach for lang::Distrib<T>'s own factories directly for the multiprecision paths.

Definition in file distributions.h.

Macro Definition Documentation

◆ LINE_DIST_CTOR

#define LINE_DIST_CTOR ( Cls)
Value:
struct Cls : lang::Distrib<double>

Every named law below is a Distrib<double> under another name.

Definition at line 45 of file distributions.h.