42 #ifndef QP_SOLVER_RELAXED_QP_SCHUR_H
43 #define QP_SOLVER_RELAXED_QP_SCHUR_H
45 #include "ConstrainedOptPack_QPSolverRelaxed.hpp"
46 #include "ConstrainedOptPack_QPSchur.hpp"
47 #include "ConstrainedOptPack_QPInitFixedFreeStd.hpp"
48 #include "ConstrainedOptPack_MatrixSymHessianRelaxNonSing.hpp"
49 #include "ConstrainedOptPack_ConstraintsRelaxedStd.hpp"
50 #include "ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp"
51 #include "AbstractLinAlgPack_VectorMutableDense.hpp"
55 namespace ConstrainedOptPack {
216 ,inequality_pick_policy
223 ,OUTPUT_BASIC_INFO = 1
224 ,OUTPUT_ITER_SUMMARY = 2
225 ,OUTPUT_ITER_STEPS = 3
227 ,OUTPUT_ITER_QUANTITIES = 5
329 const init_kkt_sys_ptr_t& init_kkt_sys = Teuchos::null
331 ,value_type max_qp_iter_frac = 10.0
332 ,value_type max_real_runtime = 1e+20
334 inequality_pick_policy
335 = QPSchurPack::ConstraintsRelaxedStd::ADD_BOUNDS_THEN_MOST_VIOLATED_INEQUALITY
337 ,value_type bounds_tol = -1.0
338 ,value_type inequality_tol = -1.0
339 ,value_type equality_tol = -1.0
340 ,value_type loose_feas_tol = -1.0
341 ,value_type dual_infeas_tol = -1.0
342 ,value_type huge_primal_step = -1.0
343 ,value_type huge_dual_step = -1.0
344 ,value_type bigM = 1e+10
345 ,value_type warning_tol = 1e-10
346 ,value_type error_tol = 1e-5
349 ,value_type iter_refine_opt_tol = 1e-12
350 ,value_type iter_refine_feas_tol = 1e-12
351 ,
bool iter_refine_at_solution =
true
352 ,value_type pivot_warning_tol = 1e-8
353 ,value_type pivot_singular_tol = 1e-11
354 ,value_type pivot_wrong_inertia_tol = 1e-11
355 ,
bool add_equalities_initially=
true
379 ,
const Vector& g,
const MatrixSymOp& G
381 ,
const Vector* dL,
const Vector* dU
383 ,
const Vector* eL,
const Vector* eU
386 ,value_type* eta, VectorMutable* d
388 ,VectorMutable* mu, VectorMutable* Ed
389 ,VectorMutable* lambda, VectorMutable* Fd
403 VectorMutableDense bigM_vec_;
414 #endif // QP_SOLVER_RELAXED_QP_SCHUR_H
ERunTests
Enumeration for if to run internal tests or not.
QPSolverStats::ESolutionType imp_solve_qp(std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector *dL, const Vector *dU, const MatrixOp *E, BLAS_Cpp::Transp trans_E, const Vector *b, const Vector *eL, const Vector *eU, const MatrixOp *F, BLAS_Cpp::Transp trans_F, const Vector *f, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *mu, VectorMutable *Ed, VectorMutable *lambda, VectorMutable *Fd)
Solves Quadratic Programs (QPs) of several different forms while allowing a relaxation of the constra...
~QPSolverRelaxedQPSchur()
virtual void initialize_kkt_system(const Vector &g, const MatrixOp &G, value_type etaL, const Vector *dL, const Vector *dU, const MatrixOp *F, BLAS_Cpp::Transp trans_F, const Vector *f, const Vector *d, const Vector *nu, size_type *n_R, i_x_free_t *i_x_free, i_x_fixed_t *i_x_fixed, bnd_fixed_t *bnd_fixed, j_f_decomp_t *j_f_decomp, DVector *b_X, Ko_ptr_t *Ko, DVector *fo) const =0
Initializes the KKT system.
Teuchos::RCP< const MatrixSymOpNonsing > Ko_ptr_t
std::vector< EBounds > bnd_fixed_t
Solves Quadratic Programming (QP) problems using QPSchur.
This class maintains the factorization of symmetric indefinite matrix using a Bunch & Kaufman factori...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Interface for the object that can reform an initial KKT system dynamically {abstract}.
QPSolverStats get_qp_stats() const
Matrix class for non-singular Hessian matrix augmented with a terms for "Big M" relaxation variables...
Class for storing statistics about a run of a (active set?) QP solver.
ELocalOutputLevel
Output level.
Constraints subclass that is used to represent generic varaible bounds, and general inequality and eq...
EOutputLevel
Enumeration for the amount of output to create from solve_qp().
STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type, max_qp_iter_frac)
Set the maximum number of QP iterations as max_itr = max_qp_iter_frac * n.
std::vector< size_type > i_x_fixed_t
General (and flexible) implementation class for a QPSchur QP problem.
std::vector< size_type > j_f_decomp_t
STANDARD_COMPOSITION_MEMBERS(InitKKTSystem, init_kkt_sys)
Strategy object that sets up the initial KKT system.
Solves a Quadratic Program with a dual QP method using a schur complement factorization.
std::vector< size_type > i_x_free_t
ESolutionType
Enumeration for the type of point returned from solve_qp(...).
Interface for the object that forms the initial KKT system {abstract}.
QPSolverRelaxedQPSchur(const init_kkt_sys_ptr_t &init_kkt_sys=Teuchos::null, const constraints_ptr_t &constraints=Teuchos::rcp(new QPSchurPack::ConstraintsRelaxedStd), value_type max_qp_iter_frac=10.0, value_type max_real_runtime=1e+20, QPSchurPack::ConstraintsRelaxedStd::EInequalityPickPolicy inequality_pick_policy=QPSchurPack::ConstraintsRelaxedStd::ADD_BOUNDS_THEN_MOST_VIOLATED_INEQUALITY, ELocalOutputLevel print_level=USE_INPUT_ARG, value_type bounds_tol=-1.0, value_type inequality_tol=-1.0, value_type equality_tol=-1.0, value_type loose_feas_tol=-1.0, value_type dual_infeas_tol=-1.0, value_type huge_primal_step=-1.0, value_type huge_dual_step=-1.0, value_type bigM=1e+10, value_type warning_tol=1e-10, value_type error_tol=1e-5, size_type iter_refine_min_iter=1, size_type iter_refine_max_iter=3, value_type iter_refine_opt_tol=1e-12, value_type iter_refine_feas_tol=1e-12, bool iter_refine_at_solution=true, value_type pivot_warning_tol=1e-8, value_type pivot_singular_tol=1e-11, value_type pivot_wrong_inertia_tol=1e-11, bool add_equalities_initially=true)