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

Finite capacity regions for the native LDES engine. More...

#include <cmath>
#include <cstddef>
#include <limits>
#include <string>
#include <vector>
#include "line/lang/lang_types.h"
Include dependency graph for ldes_region.h:

Go to the source code of this file.

Classes

struct  line::ldes::engine::Region
 One finite capacity region, resolved to what the event loop needs. More...

Namespaces

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

Detailed Description

Finite capacity regions for the native LDES engine.

A region caps the jobs held ACROSS a set of stations, which no per-station capacity can express: three stations each able to hold 5 jobs but at most 6 between them is a region, not three caps. Four constraints may apply at once and an arrival must satisfy all of them:

  • the GLOBAL job cap of the region;
  • the PER-CLASS job cap;
  • the MEMORY budget, a weighted count where each class carries its own footprint (JMT's classSize, so a region can hold many small jobs or few large ones);
  • the LINEAR constraints A n <= b, which subsume the other three and are what a mix constraint like "2 n_1 + n_2 <= 10" needs.

A REJECTED ARRIVAL EITHER DROPS OR WAITS, per class, and the two are different populations. A DROPped job is gone. A WAITQ job is parked OUTSIDE every station's own buffer – it has not entered the region, so it is not in the region's queue length, but it IS still in the system and is charged to the station it was trying to enter. Conflating the two makes a WAITQ region lose jobs, which on a closed model changes the population.

MEMBERSHIP IS INDEPENDENT OF THE CAPS. members says which stations the region spans; a member may have every cap unbounded and still constrain nothing while participating in the linear constraints.

Definition in file ldes_region.h.