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

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"
Include dependency graph for jmva_writer.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).

Detailed Description

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.