![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Sparse LP in the natural form, with per-variable bounds. More...
#include <line/util/simplex.h>
Public Member Functions | |
| LpModel (std::size_t nvars) | |
| std::size_t | num_vars () const |
| std::size_t | num_rows () const |
| std::size_t | num_nonzeros () const |
| void | set_lower (std::size_t j, const T &v) |
| void | set_upper (std::size_t j, const T &v) |
| void | set_bounds (std::size_t j, const T &lo, const T &hi) |
| void | set_free_lower (std::size_t j) |
| void | set_free_upper (std::size_t j) |
| void | set_free (std::size_t j) |
| void | fix (std::size_t j, const T &v) |
| Pin a variable to a value; it is substituted out of the tableau. | |
| const T & | lower (std::size_t j) const |
| const T & | upper (std::size_t j) const |
| bool | lower_is_free (std::size_t j) const |
| bool | upper_is_free (std::size_t j) const |
| void | set_cost (std::size_t j, const T &v) |
| void | add_cost (std::size_t j, const T &v) |
| const std::vector< T > & | costs () const |
| void | set_maximize (bool m) |
| true to maximize c'x (the default), false to minimize. | |
| bool | maximize () const |
| void | row_clear () |
| Discard whatever the row accumulator holds. | |
| void | row_add (std::size_t j, const T &v) |
| row(j) += v, the accumulation the MATLAB reference performs. | |
| void | row_add_int (std::size_t j, long v) |
| void | emit (LpSense sense, const T &rhs) |
| Emit the accumulated row with the given relation and right-hand side. | |
| void | emit_le (const T &rhs) |
| void | emit_eq (const T &rhs) |
| void | emit_ge (const T &rhs) |
| void | emit_le_int (long rhs) |
| void | emit_eq_int (long rhs) |
| void | emit_ge_int (long rhs) |
| std::size_t | row_begin (std::size_t i) const |
| std::size_t | row_end (std::size_t i) const |
| std::size_t | col_at (std::size_t k) const |
| const T & | val_at (std::size_t k) const |
| const T & | rhs (std::size_t i) const |
| LpSense | sense (std::size_t i) const |
Sparse LP in the natural form, with per-variable bounds.
Default bounds are x_j >= 0 with no upper bound, matching linprog's convention when lb is given as zeros and ub is omitted.
|
inlineexplicit |
|
inline |
|
inline |
Definition at line 226 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 172 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Emit the accumulated row with the given relation and right-hand side.
Definition at line 200 of file simplex.h.
References rhs(), row_clear(), and sense().
Referenced by emit_eq(), emit_eq_int(), emit_ge(), emit_ge_int(), emit_le(), emit_le_int(), line::fj::fj_tsm_capacity(), line::mapqn::mapqn_bnd_lr_pf(), line::npfqn::npfqn_bnd_bgt(), and line::npfqn::npfqn_bnd_bpt().
|
inline |
Definition at line 217 of file simplex.h.
References emit(), line::lp::EQ, and rhs().
Referenced by line::mam::m3pp22_interleave_fitc(), line::mapqn::qr_cor1a(), line::mapqn::qr_cor1b(), line::mapqn::qr_marginals(), line::mapqn::qr_one(), line::mapqn::qr_pc2(), line::mapqn::qr_qbal(), line::mapqn::qr_symmetry(), line::mapqn::qr_thm1(), line::mapqn::qr_thm1c(), line::mapqn::qr_thm2(), line::mapqn::qr_thm3a(), line::mapqn::qr_thm3b(), line::mapqn::qr_xz(), line::mapqn::qrf_polytope(), line::mapqn::solve_qrf_nlp(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 220 of file simplex.h.
References emit(), line::lp::EQ, and rhs().
|
inline |
Definition at line 218 of file simplex.h.
References emit(), line::lp::GE, and rhs().
Referenced by line::mapqn::qr_thm4(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 221 of file simplex.h.
References emit(), line::lp::GE, and rhs().
|
inline |
Definition at line 216 of file simplex.h.
References emit(), line::lp::LE, and rhs().
Referenced by line::mam::m3pp22_interleave_fitc(), line::mapqn::qrf_polytope(), line::mapqn::solve_qrf_nlp(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 219 of file simplex.h.
References emit(), line::lp::LE, and rhs().
|
inline |
Pin a variable to a value; it is substituted out of the tableau.
Definition at line 156 of file simplex.h.
References set_bounds().
|
inline |
Definition at line 158 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 160 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 175 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
|
inline |
Definition at line 125 of file simplex.h.
Referenced by line::mapqn::mapqn_bnd_lr(), line::mapqn::mapqn_bnd_lr_mva(), line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::mapqn_bnd_qr(), line::mapqn::mapqn_qr_bounds_bas(), line::mapqn::mapqn_qr_bounds_rsrd(), line::npfqn::npfqn_bnd_bpt(), line::lp::simplex_solve(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 124 of file simplex.h.
Referenced by line::mapqn::mapqn_bnd_lr(), line::mapqn::mapqn_bnd_lr_mva(), line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::mapqn_bnd_qr(), line::mapqn::mapqn_qr_bounds_bas(), line::mapqn::mapqn_qr_bounds_rsrd(), line::npfqn::npfqn_bnd_bpt(), line::mapqn::qrf_feasible_start_lp(), and line::lp::simplex_solve().
|
inline |
Definition at line 228 of file simplex.h.
Referenced by emit(), emit_eq(), emit_eq_int(), emit_ge(), emit_ge_int(), emit_le(), emit_le_int(), and line::lp::simplex_solve().
|
inline |
row(j) += v, the accumulation the MATLAB reference performs.
Definition at line 188 of file simplex.h.
Referenced by line::fj::fj_tsm_capacity(), line::mam::m3pp22_interleave_fitc(), line::mapqn::mapqn_bnd_lr_pf(), line::npfqn::npfqn_bnd_bgt(), line::npfqn::npfqn_bnd_bpt(), line::mapqn::qr_cor1a(), line::mapqn::qr_cor1b(), line::mapqn::qr_marginals(), line::mapqn::qr_one(), line::mapqn::qr_qbal(), line::mapqn::qr_symmetry(), line::mapqn::qr_thm2(), line::mapqn::qr_thm3a(), line::mapqn::qr_thm3b(), line::mapqn::qr_xz(), line::mapqn::qrf_polytope(), row_add_int(), line::mapqn::solve_qrf_nlp(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 197 of file simplex.h.
References row_add().
Referenced by line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::qr_pc2(), line::mapqn::qr_thm1(), line::mapqn::qr_thm1c(), line::mapqn::qr_thm4(), and line::mapqn::qr_xz().
|
inline |
Definition at line 224 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Discard whatever the row accumulator holds.
Definition at line 179 of file simplex.h.
Referenced by emit(), line::fj::fj_tsm_capacity(), line::mam::m3pp22_interleave_fitc(), line::mapqn::mapqn_bnd_lr_pf(), line::npfqn::npfqn_bnd_bgt(), line::npfqn::npfqn_bnd_bpt(), line::mapqn::qrf_polytope(), line::mapqn::solve_qrf_nlp(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 225 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 229 of file simplex.h.
Referenced by emit(), and line::lp::simplex_solve().
|
inline |
Definition at line 139 of file simplex.h.
References set_lower(), and set_upper().
Referenced by fix(), line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::mapqn_bnd_qr_delay(), line::mapqn::mapqn_bnd_qr_ld(), line::npfqn::npfqn_bnd_bgt(), line::mapqn::qrf_polytope(), line::mapqn::solve_qrf_nlp(), and line::spn::spn_lpbnd().
|
inline |
Definition at line 164 of file simplex.h.
Referenced by line::fj::fj_tsm_capacity(), line::mam::m3pp22_interleave_fitc(), line::mapqn::mapqn_bnd_lr(), line::mapqn::mapqn_bnd_lr_mva(), line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::mapqn_bnd_qr(), line::mapqn::mapqn_qr_bounds_bas(), line::mapqn::mapqn_qr_bounds_rsrd(), line::npfqn::npfqn_bnd_bgt(), line::npfqn::npfqn_bnd_bpt(), line::mapqn::qrf_feasible_start_lp(), line::mapqn::qrf_polytope(), and line::mapqn::solve_qrf_nlp_lp().
|
inline |
Definition at line 151 of file simplex.h.
References set_free_lower(), and set_free_upper().
|
inline |
Definition at line 143 of file simplex.h.
Referenced by set_free().
|
inline |
Definition at line 147 of file simplex.h.
Referenced by line::mam::m3pp22_interleave_fitc(), and set_free().
|
inline |
Definition at line 129 of file simplex.h.
Referenced by line::mam::m3pp22_interleave_fitc(), and set_bounds().
|
inline |
true to maximize c'x (the default), false to minimize.
Definition at line 174 of file simplex.h.
Referenced by line::fj::fj_tsm_capacity(), line::mam::m3pp22_interleave_fitc(), line::mapqn::mapqn_bnd_lr(), line::mapqn::mapqn_bnd_lr_mva(), line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::mapqn_bnd_qr(), line::mapqn::mapqn_qr_bounds_bas(), line::mapqn::mapqn_qr_bounds_rsrd(), line::npfqn::npfqn_bnd_bgt(), line::npfqn::npfqn_bnd_bpt(), line::mapqn::qrf_feasible_start_lp(), line::mapqn::qrf_polytope(), line::mapqn::solve_qrf_nlp(), and line::mapqn::solve_qrf_nlp_lp().
|
inline |
Definition at line 134 of file simplex.h.
Referenced by line::mapqn::mapqn_bnd_lr_pf(), line::mapqn::qr_zero_bounds(), and set_bounds().
|
inline |
Definition at line 159 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 161 of file simplex.h.
Referenced by line::lp::simplex_solve().
|
inline |
Definition at line 227 of file simplex.h.
Referenced by line::lp::simplex_solve().