|
ConstrainedOptPack: C++ Tools for Constrained (and Unconstrained) Optimization
Version of the Day
|
Implementation of initial KKT system where all original variables are free and all the relaxation variables are fixed. More...
#include <ConstrainedOptPack_QPSchurInitKKTSystemHessianRelaxed.hpp>

Public Member Functions | |
| void | initialize_kkt_system (const DVectorSlice &g, const MatrixOp &G, value_type etaL, const SpVectorSlice &dL, const SpVectorSlice &dU, const MatrixOp *F, BLAS_Cpp::Transp trans_F, const DVectorSlice *f, const DVectorSlice &d, const SpVectorSlice &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 |
| Initialize the KKT system where the original variables are initiallly free and all the relaxation variables are fixed and their are no constraints in Ko. | |
Implementation of initial KKT system where all original variables are free and all the relaxation variables are fixed.
In this implementation, #G# should support the {MatrixSymHessianRelaxNonSing} interface. Otherwise, it will try the {MatrixSymWithOpFactorized} interface using the base implementation of {QPSchurInitKKTSystemHessianFull}.
Definition at line 57 of file ConstrainedOptPack_QPSchurInitKKTSystemHessianRelaxed.hpp.
| void ConstrainedOptPack::QPSchurInitKKTSystemHessianRelaxed::initialize_kkt_system | ( | const DVectorSlice & | g, |
| const MatrixOp & | G, | ||
| value_type | etaL, | ||
| const SpVectorSlice & | dL, | ||
| const SpVectorSlice & | dU, | ||
| const MatrixOp * | F, | ||
| BLAS_Cpp::Transp | trans_F, | ||
| const DVectorSlice * | f, | ||
| const DVectorSlice & | d, | ||
| const SpVectorSlice & | 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 |
Initialize the KKT system where the original variables are initiallly free and all the relaxation variables are fixed and their are no constraints in Ko.
The Hessian for the QP without the relaxation #G# is represented as a {MatrixSymHessianRelaxNonSing} object and is: {verbatim} G = [ G_orig ] [ M ] {verbatim} If #G# does not support the interface #MatrixSymHessianRelaxNonSing# then the function #QPSchurInitKKTSystemHessianFull::initialize_kkt_system(...)# will be called.
Given the above parts of #G#, define: #[no,no] = size(G.G)# and #[nr,nr] = size(G.M)#. Then initial KKT system is defined as:
#n_R = no#\ #i_x_free.size() == 0# and #i_x_free is implicitly identity#\ #i_x_fixed[l-1] = no + l, l = 1...nr#\ #i_x_fixed[nr] = no+nr+1#\ #bnd_fixed[l-1] = LOWER, l = 1...nr#\ #bnd_fixed[nr] = LOWER#\ #j_f_decomp[] = empty#\ #b_X[l-1] = dL(no+l), l = 1...nr#\ #b_X[nr] = etaL#\ #Ko = G.G#\ #fo = - g(1:no)#\\
1.7.6.1