ConstrainedOptPack::QPSchurInitKKTSystemHessianSuperBasic Class Reference

Implementation of initial KKT system for all variables initially fixed and free where #Ko = B_RR#. More...

#include <ConstrainedOptPack_QPSchurInitKKTSystemHessianSuperBasic.hpp>

Inheritance diagram for ConstrainedOptPack::QPSchurInitKKTSystemHessianSuperBasic:

[legend]
List of all members.

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 variables are initiallly fixed and free and no constraints are in Ko.

Private Attributes

QPSchurInitKKTSystemHessianFull init_kkt_full_

Detailed Description

Implementation of initial KKT system for all variables initially fixed and free where #Ko = B_RR#.

In this implementation, #G# must support the {MatrixHessianSuperBasic} interface.

Definition at line 43 of file ConstrainedOptPack_QPSchurInitKKTSystemHessianSuperBasic.hpp.


Member Function Documentation

void ConstrainedOptPack::QPSchurInitKKTSystemHessianSuperBasic::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 variables are initiallly fixed and free and no constraints are in Ko.

The Hessian for the QP without the relaxation #G# is represented as a {MatrixHessianSuperBasic} object and is:

#G = Q_R*B_RR*Q_R' + Q_R*op(B_RX)*Q_X' + Q_X*op(B_RX')*Q_R + Q_X*B_XX*Q_X'#

If #G# does not support the interface #MatrixHessianSuperBasic# then an exception will be thrown.

Given the above parts of #G#, define: #[nd,nd_R] = size(G.Q_R)# and #[nd,nd_X] = size(G.Q_X)#. Then initial KKT system is defined as:

#n_R = nd_R#\ if #i_x_free.size() > 0# then #i_x_free[(G.Q_R.begin()+l-1)->col_j()-1] = (G.Q_R.begin()+l-1)->row_i(), l = 1...nd_R#\ if #i_x_free.size() == 0# then #i_x_free is implicitly identity#\ #i_x_fixed[(G.Q_X.begin()+l-1)->col_j()-1] = (G.Q_X.begin()+l-1)->row_i(), l = 1...nd_X#\ #i_x_fixed[nd_X] = nd+1#\ #bnd_fixed[l-1] = G.bnd_fixed[l-1], l = 1...nd_X#\ #bnd_fixed[nd_X] = LOWER#\ #j_f_decomp[] = empty#\ #b_X[l-1] = { dL(i) if bnd_fixed[l-1] == LOWER or EQUALITY, dU(i) if bnd_fixed[l-1] == UPPER }# #, l = 1...nd_X (where i = i_x_fixed[l-1])#\ #b_X[nd_X] = etaL#\ #Ko = G.B_RR#\ #fo = - G.Q_R'*g - op(G.B_RX)*b_X(1:nd_X)#\\

Above, it is assumed that if #G.bnd_fixed[l-1] == EQUALITY#, that #dL(G.i_x_fixed[l-1]) == dU(G.i_x_fixed[l-1]# but this may not be inforced by this class.

If the {MatrixHessianSuperBasic} interface is not suppored by #G# then a {QPSchurInitKKTSystemHessianFull} strategy object is used to try to initialize the KKT system.

Definition at line 42 of file ConstrainedOptPack_QPSchurInitKKTSystemHessianSuperBasic.cpp.


Member Data Documentation

QPSchurInitKKTSystemHessianFull ConstrainedOptPack::QPSchurInitKKTSystemHessianSuperBasic::init_kkt_full_ [private]
 

Definition at line 110 of file ConstrainedOptPack_QPSchurInitKKTSystemHessianSuperBasic.hpp.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:36:16 2008 for MOOCHO (Single Doxygen Collection) by doxygen 1.3.9.1