![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The writer itself. More...
#include <line/io/jmt_writer.h>
Public Member Functions | |
| JmtWriter (const qn::NetworkStruct< T > &sn, const JmtWriteOptions &opt) | |
| std::string | write_jsim () |
| Port of @@JMTIO/writeJSIM.m; returns the serialized document. | |
| std::string | buffer_capacity_refusal (bool jmva_engine) const |
| The buffer-capacity refusals of save_buffer_capacity, as a SENTENCE rather than an exception; empty when every buffer is exportable. | |
The writer itself.
One instance per exported model; it holds the derived tables (connections, exportable classes, cache classes) that nearly every handler reads, so they are computed once rather than per section as the reference recomputes them.
Definition at line 433 of file jmt_writer.h.
|
inline |
Definition at line 435 of file jmt_writer.h.
References line::io::jmt_cache_classes(), line::io::jmt_conn_matrix(), and line::io::jmt_exportable_classes().
|
inline |
The buffer-capacity refusals of save_buffer_capacity, as a SENTENCE rather than an exception; empty when every buffer is exportable.
ONE PREDICATE, TWO CALLERS. save_buffer_capacity raises it while writing the JSIM document, and jmt::jmt_method_refusal returns it so that findSolver never offers a jmt row on a model the writer will refuse. It was reachable only from inside the writer, which is why the gate could not see it and offered jmt.jsim on a binding buffer.
WHAT MAKES A BUFFER BIND is not that sn.cap is finite: refresh_capacity DERIVES a finite cap for every station nobody capped. It is that the cap is strictly below the population that can REACH the station, and an infinite-server station has no buffer at all – the same two tests save_buffer_capacity applies before it exports anything.
jmva_engine selects the verdict, because the two engines fail a binding buffer for OPPOSITE reasons. JSIM exports it whenever JMT can read the drop rule, so only assert_station_cap_exportable's cases go. JMVA has no capacity element in its document at all – write_jmva emits a station type, a per-chain demand and a per-chain visit count and nothing else – so ANY binding buffer would be solved as if it were unbounded: measured on a closed Delay+FCFS model, N=4, cap 2, every jmva method reported 2.19 jobs at a station that can hold 2, against the exact 1.33.
Definition at line 480 of file jmt_writer.h.
References line::io::jmt_int().
Referenced by line::io::jmt_buffer_capacity_refusal().
|
inline |
Port of @@JMTIO/writeJSIM.m; returns the serialized document.
Definition at line 443 of file jmt_writer.h.
References line::xml::element(), and line::xml::serialize().
Referenced by line::io::jmt_write_jsim().