LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Toggle main menu visibility
Loading...
Searching...
No Matches
solver_options.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012-2026, QORE Lab, Imperial College London
3
* All rights reserved.
4
*/
5
#ifndef LINE_SOLVERS_SOLVER_OPTIONS_H
6
#define LINE_SOLVERS_SOLVER_OPTIONS_H
7
8
/**
9
* @file
10
* @ingroup line_solvers
11
* @ingroup line_public
12
* The keyword arguments a solver takes, as one struct.
13
*
14
* Python builds a solver as `MVA(model, method='lin')` or
15
* `CTMC(model, cutoff=3, seed=23000)` -- one shared keyword surface across
16
* every solver, narrowed per solver by which keywords it reads. This is that
17
* surface: a field per keyword, and a fluent `set_*` per field so a C++ call
18
* reads like the Python one it was ported from.
19
*
20
* SolverOptions().set_cutoff(3).set_seed(23000)
21
*
22
* A field left at its default is NOT forwarded, so the engine's own default
23
* stands: that is what the negative/empty sentinels below mean. This mirrors
24
* MATLAB's `Solver.defaultOptions` merge rather than overwriting it.
25
*/
26
27
#include <cstddef>
28
#include <string>
29
#include <vector>
30
31
namespace
line
{
32
33
/** The knobs a solver reads; a negative or empty field keeps the engine default. */
34
struct
SolverOptions
{
35
std::string
method
=
"default"
;
36
double
tol
= -1.0;
37
double
iter_tol
= -1.0;
38
int
iter_max
= -1;
39
std::size_t
samples
= 0;
40
unsigned
long
seed
= 0;
41
/** CTMC `options.cutoff`, scalar or per class. */
42
double
cutoff
= -1.0;
43
std::vector<std::size_t>
cutoff_vec
;
44
/** CTMC refusal threshold on the state-space size. */
45
std::size_t
state_max
= 0;
46
/** Fluid `options.timespan(2)` and warm start. */
47
double
timespan_end
= -1.0;
48
std::vector<double>
init_sol
;
49
bool
stiff
=
false
;
50
/** The `options.config` fields of the MVA / NC / fluid families. */
51
std::string
multiserver
;
52
std::string
highvar
;
53
std::string
np_priority
;
54
/** MVA / NC `options.config.fork_join`: 'default'/'mmt'/'fjt' or 'ht'. */
55
std::string
fork_join
;
56
/** SSA `options.config.state_space_gen`. */
57
std::string
state_space_gen
;
58
/** SolverBA `options.level`. */
59
int
level
= 2;
60
/** JMT `options.keep`: leave the scratch directory in place after the solve. */
61
bool
keep
=
false
;
62
bool
verbose
=
false
;
63
64
SolverOptions
&
set_method
(
const
std::string& v) {
method
= v;
return
*
this
; }
65
SolverOptions
&
set_tol
(
double
v) {
tol
= v;
return
*
this
; }
66
SolverOptions
&
set_iter_tol
(
double
v) {
iter_tol
= v;
return
*
this
; }
67
SolverOptions
&
set_iter_max
(
int
v) {
iter_max
= v;
return
*
this
; }
68
SolverOptions
&
set_samples
(std::size_t v) {
samples
= v;
return
*
this
; }
69
SolverOptions
&
set_seed
(
unsigned
long
v) {
seed
= v;
return
*
this
; }
70
SolverOptions
&
set_cutoff
(
double
v) {
cutoff
= v;
return
*
this
; }
71
SolverOptions
&
set_cutoff_vec
(
const
std::vector<std::size_t>& v) {
cutoff_vec
= v;
return
*
this
; }
72
SolverOptions
&
set_state_max
(std::size_t v) {
state_max
= v;
return
*
this
; }
73
SolverOptions
&
set_timespan_end
(
double
v) {
timespan_end
= v;
return
*
this
; }
74
SolverOptions
&
set_init_sol
(
const
std::vector<double>& v) {
init_sol
= v;
return
*
this
; }
75
SolverOptions
&
set_stiff
(
bool
v) {
stiff
= v;
return
*
this
; }
76
SolverOptions
&
set_multiserver
(
const
std::string& v) {
multiserver
= v;
return
*
this
; }
77
SolverOptions
&
set_highvar
(
const
std::string& v) {
highvar
= v;
return
*
this
; }
78
SolverOptions
&
set_np_priority
(
const
std::string& v) {
np_priority
= v;
return
*
this
; }
79
SolverOptions
&
set_fork_join
(
const
std::string& v) {
fork_join
= v;
return
*
this
; }
80
SolverOptions
&
set_state_space_gen
(
const
std::string& v) {
state_space_gen
= v;
return
*
this
; }
81
SolverOptions
&
set_level
(
int
v) {
level
= v;
return
*
this
; }
82
SolverOptions
&
set_keep
(
bool
v) {
keep
= v;
return
*
this
; }
83
SolverOptions
&
set_verbose
(
bool
v) {
verbose
= v;
return
*
this
; }
84
};
85
86
}
// namespace line
87
88
#endif
// LINE_SOLVERS_SOLVER_OPTIONS_H
line
Definition
aoi_dist2ph.h:52
line::SolverOptions
The knobs a solver reads; a negative or empty field keeps the engine default.
Definition
solver_options.h:34
line::SolverOptions::keep
bool keep
JMT options.keep: leave the scratch directory in place after the solve.
Definition
solver_options.h:61
line::SolverOptions::cutoff_vec
std::vector< std::size_t > cutoff_vec
Definition
solver_options.h:43
line::SolverOptions::iter_max
int iter_max
Definition
solver_options.h:38
line::SolverOptions::multiserver
std::string multiserver
The options.config fields of the MVA / NC / fluid families.
Definition
solver_options.h:51
line::SolverOptions::set_cutoff
SolverOptions & set_cutoff(double v)
Definition
solver_options.h:70
line::SolverOptions::set_iter_max
SolverOptions & set_iter_max(int v)
Definition
solver_options.h:67
line::SolverOptions::seed
unsigned long seed
Definition
solver_options.h:40
line::SolverOptions::set_init_sol
SolverOptions & set_init_sol(const std::vector< double > &v)
Definition
solver_options.h:74
line::SolverOptions::state_max
std::size_t state_max
CTMC refusal threshold on the state-space size.
Definition
solver_options.h:45
line::SolverOptions::set_timespan_end
SolverOptions & set_timespan_end(double v)
Definition
solver_options.h:73
line::SolverOptions::init_sol
std::vector< double > init_sol
Definition
solver_options.h:48
line::SolverOptions::stiff
bool stiff
Definition
solver_options.h:49
line::SolverOptions::set_keep
SolverOptions & set_keep(bool v)
Definition
solver_options.h:82
line::SolverOptions::cutoff
double cutoff
CTMC options.cutoff, scalar or per class.
Definition
solver_options.h:42
line::SolverOptions::iter_tol
double iter_tol
Definition
solver_options.h:37
line::SolverOptions::set_samples
SolverOptions & set_samples(std::size_t v)
Definition
solver_options.h:68
line::SolverOptions::set_multiserver
SolverOptions & set_multiserver(const std::string &v)
Definition
solver_options.h:76
line::SolverOptions::set_stiff
SolverOptions & set_stiff(bool v)
Definition
solver_options.h:75
line::SolverOptions::set_verbose
SolverOptions & set_verbose(bool v)
Definition
solver_options.h:83
line::SolverOptions::set_fork_join
SolverOptions & set_fork_join(const std::string &v)
Definition
solver_options.h:79
line::SolverOptions::tol
double tol
Definition
solver_options.h:36
line::SolverOptions::set_state_space_gen
SolverOptions & set_state_space_gen(const std::string &v)
Definition
solver_options.h:80
line::SolverOptions::level
int level
SolverBA options.level.
Definition
solver_options.h:59
line::SolverOptions::set_highvar
SolverOptions & set_highvar(const std::string &v)
Definition
solver_options.h:77
line::SolverOptions::samples
std::size_t samples
Definition
solver_options.h:39
line::SolverOptions::np_priority
std::string np_priority
Definition
solver_options.h:53
line::SolverOptions::set_iter_tol
SolverOptions & set_iter_tol(double v)
Definition
solver_options.h:66
line::SolverOptions::set_tol
SolverOptions & set_tol(double v)
Definition
solver_options.h:65
line::SolverOptions::set_cutoff_vec
SolverOptions & set_cutoff_vec(const std::vector< std::size_t > &v)
Definition
solver_options.h:71
line::SolverOptions::method
std::string method
Definition
solver_options.h:35
line::SolverOptions::fork_join
std::string fork_join
MVA / NC options.config.fork_join: 'default'/'mmt'/'fjt' or 'ht'.
Definition
solver_options.h:55
line::SolverOptions::timespan_end
double timespan_end
Fluid options.timespan(2) and warm start.
Definition
solver_options.h:47
line::SolverOptions::set_method
SolverOptions & set_method(const std::string &v)
Definition
solver_options.h:64
line::SolverOptions::set_state_max
SolverOptions & set_state_max(std::size_t v)
Definition
solver_options.h:72
line::SolverOptions::state_space_gen
std::string state_space_gen
SSA options.config.state_space_gen.
Definition
solver_options.h:57
line::SolverOptions::verbose
bool verbose
Definition
solver_options.h:62
line::SolverOptions::set_level
SolverOptions & set_level(int v)
Definition
solver_options.h:81
line::SolverOptions::highvar
std::string highvar
Definition
solver_options.h:52
line::SolverOptions::set_seed
SolverOptions & set_seed(unsigned long v)
Definition
solver_options.h:69
line::SolverOptions::set_np_priority
SolverOptions & set_np_priority(const std::string &v)
Definition
solver_options.h:78
include
line
solvers
solver_options.h
Generated by
1.18.0