#include <ConstrainedOptPack_QPSchurInitKKTSystemHessianRelaxed.hpp>
Inheritance diagram for ConstrainedOptPack::QPSchurInitKKTSystemHessianRelaxed:
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. |
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 44 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)#\\