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

Port of matlab/src/api/sn/sn_region_members.m. More...

#include <cstddef>
#include <vector>
#include "line/lang/qn/network_struct.h"
Include dependency graph for sn_region_members.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::api

Functions

template<class T>
std::vector< bool > line::api::sn_region_members (const qn::NetworkStruct< T > &sn, std::size_t f)
 The membership mask of region f (0-based), one entry per station.
template<class T>
std::vector< std::size_t > line::api::sn_region_member_list (const qn::NetworkStruct< T > &sn, std::size_t f)
 The same membership as 1-based station indices, the form most callers want.

Detailed Description

Port of matlab/src/api/sn/sn_region_members.m.

Which stations belong to finite-capacity region f, 0-based. Membership is DECLARED (sn.regionmembers, here Region::members) and only inferred when the declaration is absent: a station is then a member iff some entry of its capacity row, or its memory cap, is not the -1 "unbounded" sentinel.

The inference cannot see a member station left wholly unbounded, which is precisely why the declaration exists and is preferred. A caller that infers membership when the flags are present would silently shrink the region and admit jobs the region forbids.

ARITHMETIC: none. Structural.

Definition in file sn_region_members.h.