![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of @@JMTIO/writeJMVA.m: the CHAIN-level product-form model in the JMVA interchange format. More...
#include <algorithm>#include <cmath>#include <cstdio>#include <cstdlib>#include <fstream>#include <limits>#include <string>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/solvers/mva/sn_chain.h"#include "line/util/error.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::io |
Functions | |
| template<class T> | |
| std::string | line::io::write_jmva (const qn::NetworkStruct< T > &L, const std::string &path, const std::string &method, std::size_t samples) |
| Port of writeJMVA(sn, outputFileName, options). | |
Port of @@JMTIO/writeJMVA.m: the CHAIN-level product-form model in the JMVA interchange format.
The format predates this port by way of JMT's MVA panel, and qnsolver of the LQNS distribution reads the same grammar, which is why the writer lives in io/ rather than under either solver: SolverQNS is its only caller here, but the document it writes is the JMT one, field for field.
WHAT IT WRITES IS ALREADY AGGREGATED. Classes become CHAINS, service times and visits come from sn_get_demands_chain, and a station that is neither a Queue nor a Delay is dropped – a Source contributes its arrival rate to the open chain's rate attribute and nothing else, and the Sink is not a station. The caller therefore gets chain-level results back and has to de-aggregate them; nothing in this file is per-class.
A MULTISERVER QUEUE IS WRITTEN AS A LOAD-DEPENDENT STATION, not as a station with servers set: the format's own multiserver support is thinner than the rate vector S/min(n,c), and the reference has always spelt the rates out. The servers attribute is still emitted as "1" because the schema requires it.
Definition in file jmva_writer.h.