Couenne::ExprHess Class Reference

expression matrices. More...

#include <CouenneExprHess.hpp>

Collaboration diagram for Couenne::ExprHess:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ExprHess ()
 empty constructor
 ExprHess (CouenneProblem *)
 code for refilling jacobian
 ExprHess (const ExprHess &)
 copy constructor
ExprHessoperator= (const ExprHess &)
 code for refilling jacobian
ExprHessclone ()
 Cloning operator.
 ~ExprHess ()
 Destructor.
int nnz ()
int * iRow ()
int * jCol ()
int * numL ()
int ** lamI ()
expression *** expr ()

Private Attributes

int nnz_
 number of (symbolic) nonzeroes
int * iRow_
 row indices (read this way by eval_h)
int * jCol_
 col indices
int * numL_
 There are m+1 (m constraints + 1 obj) components: size of each lamI_.
int ** lamI_
 vector of indices in the lambda vector whose constraint has nonzero entry in this position of the hessian
expression *** expr_
 list of lists of pointers to expression

Detailed Description

expression matrices.

Used to evaluate the Hessian of the Lagrangian function at an optimal solution of the NLP

Definition at line 21 of file CouenneExprHess.hpp.


Constructor & Destructor Documentation

ExprHess::ExprHess (  ) 

empty constructor

Definition at line 22 of file CouenneExprHess.cpp.

Referenced by clone().

ExprHess::ExprHess ( CouenneProblem  ) 

code for refilling jacobian

for each j in (obj,con) create j->deplist()

for each variable i create dense row for each j in (obj,con) for k in j->deplist(): k<=i if d^2(j)/(di dj) nonzero add term to list [i,j] sparsify row

for each variable, fill a row of the hessian

fill term for objective

Definition at line 111 of file CouenneExprHess.cpp.

References Couenne::AUX, c, Couenne::CONST, e, expr_, HessElemFill(), iRow_, jCol_, lam, lamI_, nnz_, numL_, print(), reAlloc(), Couenne::STOP_AT_AUX, and Couenne::VAR.

ExprHess::ExprHess ( const ExprHess  ) 

copy constructor

Definition at line 33 of file CouenneExprHess.cpp.

References operator=().

ExprHess::~ExprHess (  ) 

Destructor.

Definition at line 74 of file CouenneExprHess.cpp.

References expr_, iRow_, jCol_, lamI_, nnz_, and numL_.


Member Function Documentation

ExprHess & ExprHess::operator= ( const ExprHess  ) 

code for refilling jacobian

Definition at line 38 of file CouenneExprHess.cpp.

References clone(), expr_, iRow_, jCol_, lamI_, nnz_, and numL_.

Referenced by ExprHess().

ExprHess * ExprHess::clone (  ) 

Cloning operator.

Definition at line 69 of file CouenneExprHess.cpp.

References ExprHess().

Referenced by operator=().

int Couenne::ExprHess::nnz (  )  [inline]

Definition at line 63 of file CouenneExprHess.hpp.

References nnz_.

int* Couenne::ExprHess::iRow (  )  [inline]

Definition at line 64 of file CouenneExprHess.hpp.

References iRow_.

int* Couenne::ExprHess::jCol (  )  [inline]

Definition at line 65 of file CouenneExprHess.hpp.

References jCol_.

int* Couenne::ExprHess::numL (  )  [inline]

Definition at line 66 of file CouenneExprHess.hpp.

References numL_.

int** Couenne::ExprHess::lamI (  )  [inline]

Definition at line 67 of file CouenneExprHess.hpp.

References lamI_.

expression*** Couenne::ExprHess::expr (  )  [inline]

Definition at line 69 of file CouenneExprHess.hpp.

References expr_.


Member Data Documentation

int Couenne::ExprHess::nnz_ [private]

number of (symbolic) nonzeroes

Definition at line 25 of file CouenneExprHess.hpp.

Referenced by ExprHess(), nnz(), operator=(), and ~ExprHess().

int* Couenne::ExprHess::iRow_ [private]

row indices (read this way by eval_h)

Definition at line 26 of file CouenneExprHess.hpp.

Referenced by ExprHess(), iRow(), operator=(), and ~ExprHess().

int* Couenne::ExprHess::jCol_ [private]

col indices

Definition at line 27 of file CouenneExprHess.hpp.

Referenced by ExprHess(), jCol(), operator=(), and ~ExprHess().

int* Couenne::ExprHess::numL_ [private]

There are m+1 (m constraints + 1 obj) components: size of each lamI_.

$ \nabla^2 \mathcal L (x,\lambda) = \nabla^2 f(x) + \lambda^\top \nabla^2 g(x) $

Implementing a FP requires adding one for gg', the gradient again being set up at the beginning (at least its expression members are known).

This can simply be hacked by the FP itself. Same for the changed hessian, simply replace the CouenneProblem's objective with sum (objective, norm)

Actually, we could do the gg' trick by replacing the objective with sum (objective, norm, gg')

Definition at line 44 of file CouenneExprHess.hpp.

Referenced by ExprHess(), numL(), operator=(), and ~ExprHess().

int** Couenne::ExprHess::lamI_ [private]

vector of indices in the lambda vector whose constraint has nonzero entry in this position of the hessian

Definition at line 46 of file CouenneExprHess.hpp.

Referenced by ExprHess(), lamI(), operator=(), and ~ExprHess().

expression*** Couenne::ExprHess::expr_ [private]

list of lists of pointers to expression

Definition at line 50 of file CouenneExprHess.hpp.

Referenced by expr(), ExprHess(), operator=(), and ~ExprHess().


The documentation for this class was generated from the following files:
Generated on Thu Sep 22 03:15:00 2011 by  doxygen 1.4.7