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

The LDES warm start: SolverLDES(model, initSolver) / initFromSolver. More...

#include <cmath>
#include <cstddef>
#include <map>
#include <vector>
#include "line/lang/qn/network_struct.h"
#include "line/solvers/ctmc/solver_ctmc.h"
#include "line/solvers/ctmc/solver_ctmc_analyzer.h"
#include "line/solvers/wrappers/ldes/ldes_options.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for ldes_warm_start.h:

Go to the source code of this file.

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::ldes
namespace  line::ldes::warm_detail

Functions

template<class T>
bool line::ldes::warm_detail::is_service_station (const qn::NetworkStruct< T > &sn, std::size_t i)
template<class T>
Matrix< double > line::ldes::warm_start_placement_from_qlen (const qn::NetworkStruct< T > &sn, const Matrix< T > &QN)
 Port of placementFromMeanQLen: an integer placement from mean queue lengths.
template<class T>
Matrix< double > line::ldes::warm_start_placement_from_ctmc (const qn::NetworkStruct< T > &sn, const ctmc::CtmcOptions &opt)
 Port of placementFromCtmcSteadyState: the mode of the aggregate stationary law.
void line::ldes::init_from_placement (LdesOptions &o, const Matrix< double > &P)
 Port of initFromSolver's last step: the placement becomes init_sol, STATION-MAJOR (reshape(placement', 1, M*K)), and the transient filter is disabled with tranfilter = fixed, warmupfrac = 0.

Detailed Description

The LDES warm start: SolverLDES(model, initSolver) / initFromSolver.

SOURCE. @@NetworkSolver/warmStartPlacement.m and @@SolverLDES/initFromSolver.m. An auxiliary solver's steady state decides an integer job placement (nstations x nclasses), which reaches the engine as LdesOptions.init_sol (--initsol, STATION-MAJOR) with the warmup filter off, since a run that starts near steady state has no transient to remove.

TWO ARMS, as in the reference, and the caller picks one by which function it calls rather than by the dynamic type of a solver object:

  • warm_start_placement_from_qlen: any solver's mean queue lengths, floored per station and completed by LARGEST REMAINDER so each closed population is conserved; an open class is rounded and not completed.
  • warm_start_placement_from_ctmc: the MODE of the exact stationary law aggregated over per-(station, class) job counts. Ties go to the lexicographically smallest aggregate state, which is the row unique puts first and max then returns in the reference.

Only a Queue or a Delay receives jobs; every other station keeps a zero row.

Definition in file ldes_warm_start.h.