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

Input validation for Flow-Equivalent Server (FES) aggregation. More...

#include <cstddef>
#include <set>
#include <string>
#include <vector>
#include "line/api/sn/sn_predicates.h"
#include "line/lang/qn/network_struct.h"
#include "line/num/number.h"
#include "line/util/error.h"
Include dependency graph for fes_validate.h:

Go to the source code of this file.

Classes

struct  line::fes::FesValidateResult
 The reference's (isValid, errorMsg) pair. More...

Namespaces

namespace  line
namespace  line::fes

Functions

std::string line::fes::fes_node_type_text (qn::NodeType t)
 NodeType.toText, so that the refusal messages read as the reference's do.
template<class T>
FesValidateResult line::fes::fes_validate (const qn::NetworkStruct< T > &sn, const std::vector< std::size_t > &subsetIndices)
 Input validation for Flow-Equivalent Server (FES) aggregation.

Detailed Description

Input validation for Flow-Equivalent Server (FES) aggregation.

Templated port of matlab/src/api/fes/fes_validate.m.

Checks that the network structure and the station subset admit an FES aggregation:

  • the model is closed (Norton's theorem is a closed-network result);
  • the subset is non-empty and a PROPER subset of the stations;
  • every index in the subset is a valid station;
  • every station in the subset is a Queue or a Delay, so that the isolated subnetwork has a load-dependent throughput table at all;
  • the subset holds no duplicates.

The reference returns (isValid, errorMsg) rather than raising, because the caller (ModelAdapter.aggregateFES) reports the message to the user; the port keeps that contract. THE ORDER OF THE CHECKS IS PART OF THE CONTRACT: a subset that is both too large and holds a Source would report the first failure, and callers key on the message.

NOTE the closed-model test is sn_is_open_model, which is true only when EVERY class is open. A MIXED model therefore passes this validator; that is the reference's behaviour and is reproduced rather than tightened, since changing it would silently refuse models the MATLAB path accepts.

Arithmetic: EXACT-CAPABLE. Structural checks only; no arithmetic on T.

Definition in file fes_validate.h.