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

Busy period measurement for the native LDES engine. More...

#include <cmath>
#include <cstddef>
#include <limits>
#include <string>
#include <vector>
Include dependency graph for ldes_busyperiod.h:

Go to the source code of this file.

Classes

struct  line::ldes::engine::BpTarget
 One measured target: a station set, optionally filtered to one class. More...
class  line::ldes::engine::BusyPeriods
 The busy-period tracker of one run. More...

Namespaces

namespace  line
namespace  line::ldes
namespace  line::ldes::engine

Detailed Description

Busy period measurement for the native LDES engine.

A busy period of ORDER n for a set of stations runs from the instant an arrival raises the jobs the set holds to n, up to the instant it falls back below n (Daduna, J. ACM 35(3), 1988). Order 1 is the ordinary busy period; higher orders measure how long the set stays at least n deep, which is what the analytical reference pfqn_busyp returns.

ONE TARGET PER (set, class filter). Every station is a set of its own, every declared subnetwork is a set, and each is measured both aggregated over classes and per class, exactly as initializeBusyPeriods builds them.

THE EXIT IS DEFERRED TO THE END OF THE INSTANT, and that is the whole difficulty. A job moving from one member of a target to another DROPS the count and RESTORES it at the same simulated instant; treating the drop as an exit ends a busy period that never ended and starts a new one, which roughly HALVES the reported mean on any multi-station target. So a drop only records a PENDING exit, an arrival at the same instant cancels it, and the pending exits are committed once the clock actually advances. A period of zero duration is an artifact of a simultaneous pair of events, not an observation, and is dropped.

Definition in file ldes_busyperiod.h.