#include <ConstrainedOptPack_QPSchur.hpp>
Public Types | |
| typedef QPSchurPack::QP | QP |
| | |
| typedef MatrixSymAddDelUpdateable | MSADU |
| | |
| enum | ERunTests |
| Enumeration for if to run internal tests or not. More... | |
| enum | ESolveReturn |
| solve_qp return values More... | |
| enum | EOutputLevel |
| Output level. More... | |
| value_type | DEGENERATE_MULT = std::numeric_limits<value_type>::min() |
| Value for near degenerate lagrange multipliers. | |
Public Member functions | |
| void | set_schur_comp (const Teuchos::RefCountPtr< MatrixSymAddDelUpdateableWithOpNonsingular > &schur_comp) |
| Schur complement matrix object S_hat. | |
| void | max_iter (const size_type &max_iter) |
| Set the maximum number of primal-dual QP iterations to take. | |
| void | max_real_runtime (const value_type &max_real_runtime) |
| Set the maximum wall clock runtime (in minutes). | |
| void | feas_tol (const value_type &feas_tol) |
| Set the feasibility tolerance for the constriants. | |
| void | loose_feas_tol (const value_type &loose_feas_tol) |
| Set a looser feasibility tolerance ( > feas_tol ). | |
| void | dual_infeas_tol (const value_type &dual_infeas_tol) |
| Set the tolerence where a scaled Langrange multiplier is considered degenerate. | |
| void | huge_primal_step (const value_type &huge_primal_step) |
| Set the tolerence for the size of the step in the primal space that is considered to be a near infinite step. This is used to determine if the KKT system is near singular. | |
| void | huge_dual_step (const value_type &huge_dual_step) |
| Set the tolerence for the size of the step in the dual space that is considered to be a near infinite step. This is used to determine if the constriants are infeasible. | |
| void | warning_tol (const value_type &warning_tol) |
| <<std member="" comp="">> members for the warning tolerance for tests. | |
| void | error_tol (const value_type &error_tol) |
| <<std member="" comp="">> members for the error tolerance for tests. | |
| void | iter_refine_min_iter (const size_type &iter_refine_min_iter) |
| Set the minimum number of refinement iterations to perform when using iterative refinement. | |
| void | iter_refine_max_iter (const size_type &iter_refine_max_iter) |
| Set the maximum number of refinement iterations to perform when using iterative refinement. | |
| void | iter_refine_opt_tol (const value_type &iter_refine_opt_tol) |
| Set the maxinum scaled tolerance the residual of the optimality conditions must be before terminating iterative refinement. | |
| void | iter_refine_feas_tol (const value_type &iter_refine_feas_tol) |
| Set the maxinum scaled tolerance the residual of the feasibility conditions must be before terminating iterative refinement. | |
| void | iter_refine_at_solution (const bool &iter_refine_at_solution) |
| Set whether iterative refinement is automatically used once the solution is found. | |
| void | salvage_init_schur_comp (const bool &salvage_init_schur_comp) |
| Set whether a singular initial schur complement will attempted to be salvaged by adding as many nonsingular rows/cols as possible. | |
| void | pivot_tols (MSADU::PivotTolerances pivot_tols) |
| Set the tolerances to use when updating the schur complement. | |
| MSADU::PivotTolerances | pivot_tols () const |
| | |
| virtual | ~QPSchur () |
| | |
| QPSchur (const schur_comp_ptr_t &schur_comp=Teuchos::null, size_type max_iter=100, value_type max_real_runtime=1e+20, value_type feas_tol=1e-8, value_type loose_feas_tol=1e-6, value_type dual_infeas_tol=1e-12, value_type huge_primal_step=1e+20, value_type huge_dual_step=1e+20, 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, bool salvage_init_schur_comp=true, MSADU::PivotTolerances pivot_tols=MSADU::PivotTolerances(1e-8, 1e-11, 1e-11)) | |
| | |
| virtual ESolveReturn | solve_qp (QP &qp, size_type num_act_change, const int ij_act_change[], const EBounds bnds[], std::ostream *out, EOutputLevel output_level, ERunTests test_what, DVectorSlice *x, SpVector *mu, DVectorSlice *lambda, SpVector *lambda_breve, size_type *iter, size_type *num_adds, size_type *num_drops) |
| Solve a QP. | |
Public Member Functions | |
| const ActiveSet & | act_set () const |
| Return a reference to the active set object. | |
Static Public Member Functions | |
| void | dump_act_set_quantities (const ActiveSet &act_set, std::ostream &out, bool print_S_hat=true) |
| Dump all the active set quantities for debugging. | |
Protected Types | |
| enum | EPDSteps |
| More... | |
| enum | EIterRefineReturn |
| More... | |
Protected Member Functions | |
| virtual ESolveReturn | qp_algo (EPDSteps first_step, std::ostream *out, EOutputLevel output_level, ERunTests test_what, const DVectorSlice &vo, ActiveSet *act_set, DVectorSlice *v, DVectorSlice *x, size_type *iter, size_type *num_adds, size_type *num_drops, size_type *iter_refine_num_resid, size_type *iter_refine_num_solves, StopWatchPack::stopwatch *timer) |
| Run the algorithm from a dual feasible point. | |
| virtual void | set_x (const ActiveSet &act_set, const DVectorSlice &v, DVectorSlice *x) |
| Set the values in x for all the variables. | |
| virtual void | set_multipliers (const ActiveSet &act_set, const DVectorSlice &v, SpVector *mu, DVectorSlice *lambda, SpVector *lambda_breve) |
| Map from the active set to the sparse multipliers for the inequality constraints. | |
| bool | timeout_return (StopWatchPack::stopwatch *timer, std::ostream *out, EOutputLevel output_level) const |
| Determine if time has run out and if we should return. | |
| EIterRefineReturn | iter_refine (const ActiveSet &act_set, std::ostream *out, EOutputLevel output_level, const value_type ao, const DVectorSlice *bo, const value_type aa, const DVectorSlice *ba, DVectorSlice *v, DVectorSlice *z, size_type *iter_refine_num_resid, size_type *iter_refine_num_solves) |
| Perform iterative refinement on the augmented KKT system for the current active set. | |
See the paper "QPSchur: A Primal-Dual Active-Set Quadratic Programming Algorithm Using a Schur Complement Factorization Method" for a description of what this class does.
Definition at line 382 of file ConstrainedOptPack_QPSchur.hpp.
|
|
Definition at line 389 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Definition at line 391 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Enumeration for if to run internal tests or not.
Definition at line 406 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
solve_qp return values
Definition at line 408 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Output level.
Definition at line 420 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Definition at line 1070 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Definition at line 1105 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Definition at line 517 of file ConstrainedOptPack_QPSchur.hpp. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 2230 of file ConstrainedOptPack_QPSchur.cpp. |
|
|
Schur complement matrix object S_hat.
Definition at line 437 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the maximum number of primal-dual QP iterations to take.
Definition at line 441 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the maximum wall clock runtime (in minutes).
Definition at line 445 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the feasibility tolerance for the constriants.
Definition at line 449 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set a looser feasibility tolerance ( > feas_tol ).
Definition at line 453 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the tolerence where a scaled Langrange multiplier is considered degenerate.
Definition at line 458 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the tolerence for the size of the step in the primal space that is considered to be a near infinite step. This is used to determine if the KKT system is near singular.
Definition at line 464 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the tolerence for the size of the step in the dual space that is considered to be a near infinite step. This is used to determine if the constriants are infeasible.
Definition at line 470 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
<<std member="" comp="">> members for the warning tolerance for tests.
Definition at line 474 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
<<std member="" comp="">> members for the error tolerance for tests.
Definition at line 478 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the minimum number of refinement iterations to perform when using iterative refinement.
Definition at line 483 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the maximum number of refinement iterations to perform when using iterative refinement.
Definition at line 488 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the maxinum scaled tolerance the residual of the optimality conditions must be before terminating iterative refinement.
Definition at line 493 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the maxinum scaled tolerance the residual of the feasibility conditions must be before terminating iterative refinement.
Definition at line 498 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set whether iterative refinement is automatically used once the solution is found.
Definition at line 503 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set whether a singular initial schur complement will attempted to be salvaged by adding as many nonsingular rows/cols as possible.
Definition at line 508 of file ConstrainedOptPack_QPSchur.hpp. |
|
|
Set the tolerances to use when updating the schur complement.
Definition at line 2220 of file ConstrainedOptPack_QPSchur.cpp. |
|
|
Definition at line 2225 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Solve a QP.
If the initial schur complement turns out to have the wrong inertia then the QP is nonconvex, and the exception
Definition at line 2268 of file ConstrainedOptPack_QPSchur.cpp. |
|
|
Return a reference to the active set object.
Definition at line 2829 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||
|
Dump all the active set quantities for debugging.
Definition at line 4906 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Run the algorithm from a dual feasible point. By default, the algorithm should start with first_step = PICK_VIOLATED_CONSTRAINT if we are starting with a dual feasible point. Definition at line 2836 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||
|
Set the values in x for all the variables.
Definition at line 4502 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||||||||||
|
Map from the active set to the sparse multipliers for the inequality constraints.
Definition at line 4516 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||
|
Determine if time has run out and if we should return.
Definition at line 4577 of file ConstrainedOptPack_QPSchur.cpp. |
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
Perform iterative refinement on the augmented KKT system for the current active set.
[ Ko U_hat ] [ v ] + [ ao * bo ] [ U_hat' V_hat ] [ z ] [ aa * ba ] true if iterative refinement satisfied the convergence criteria.
Definition at line 4592 of file ConstrainedOptPack_QPSchur.cpp. |
|
|
Value for near degenerate lagrange multipliers.
Definition at line 2218 of file ConstrainedOptPack_QPSchur.cpp. |
1.3.9.1