MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
NLPInterfacePack::NLPThyraModelEvaluatorBase Class Reference

Implements the base NLP interface using a Thyra::ModelEvaluator object. More...

#include <NLPInterfacePack_NLPThyraModelEvaluatorBase.hpp>

Inheritance diagram for NLPInterfacePack::NLPThyraModelEvaluatorBase:
Inheritance graph
[legend]

Public Member Functions

 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, showModelEvaluatorTrace)
 Set if a trace of the model evaluations is shown or not. More...
 
- Public Member Functions inherited from NLPInterfacePack::NLPObjGrad
 NLPObjGrad ()
 Initialize to no reference set to calculation quanities. More...
 
virtual bool supports_Gf () const
 Determine if the objective gradient is supported or not. More...
 
virtual bool supports_Gf_prod () const
 Determine if the objective gradient product is supported or not. More...
 
virtual VectorMutableget_Gf ()
 Return pointer passed to this->set_Gf(). More...
 
virtual VectorMutableGf ()
 Returns non-const *this->get_Gf(). More...
 
virtual const VectorGf () const
 Returns const *this->get_Gf(). More...
 
virtual void calc_Gf (const Vector &x, bool newx=true) const
 Update the vector for Gf at the point x and put it in the stored reference. More...
 
virtual value_type calc_Gf_prod (const Vector &x, const Vector &d, bool newx=true) const
 Calculate the inner product Gf(x)'*d at the point x and put it in the stored reference. More...
 
virtual size_type num_Gf_evals () const
 Objective gradient evaluations count. More...
 
- Public Member Functions inherited from NLPInterfacePack::NLP
const ZeroOrderInfo zero_order_info () const
 Return pointer to set quantities. More...
 
const ZeroOrderInfo zero_order_info_breve () const
 Return pointer to set hat quantities. More...
 
 NLP ()
 Initialize to no reference set to calculation quanities. More...
 
virtual ~NLP ()
 Destructor that cleans all the memory it owns. More...
 
virtual void set_options (const options_ptr_t &options)
 Set the options that this NLP may be interested in. More...
 
virtual const options_ptr_tget_options () const
 Get the OptionsFromStream object being used to extract the options from. More...
 
virtual size_type n () const
 Return the number of variables. More...
 
virtual size_type m () const
 Return the number of general equality constraints. More...
 
virtual void get_init_lagrange_mult (VectorMutable *lambda, VectorMutable *nu) const
 Get the initial value of the Lagrange multipliers lambda. More...
 
virtual value_type * get_f ()
 Return pointer passed to this->set_f(). More...
 
virtual value_type & f ()
 Returns non-const *this->get_f(). More...
 
virtual const value_type & f () const
 Returns const *this->get_f(). More...
 
virtual VectorMutableget_c ()
 Return pointer passed to this->set_c(). More...
 
virtual VectorMutablec ()
 Returns non-const *this->get_c(). More...
 
virtual const Vectorc () const
 Returns const *this->get_c(). More...
 
virtual void calc_f (const Vector &x, bool newx=true) const
 Update the value for the objective f at the point x and put it in the stored reference. More...
 
virtual void calc_c (const Vector &x, bool newx=true) const
 Update the constraint residual vector for c at the point x and put it in the stored reference. More...
 
virtual size_type num_f_evals () const
 Gives the number of object function f(x) evaluations called by the solver since initialize() was called. More...
 
virtual size_type num_c_evals () const
 Gives the number of constraint function c(x) evaluations called by the solver since initialize() was called. Throws exception if this->m() == 0. More...
 
virtual size_type ns () const
 Return the number of slack variables (i.e. number of general inequalities). More...
 
virtual vec_space_ptr_t space_c_breve () const
 Vector space object for the original equalities c_breve(x_breve) More...
 
virtual vec_space_ptr_t space_h_breve () const
 Vector space object for the original inequalities h_breve(x_breve) More...
 
virtual const Vectorhl_breve () const
 Returns a reference to the vector of lower bounds on the general inequality constraints h_breve(x_breve). More...
 
virtual const Vectorhu_breve () const
 Returns a reference to the vector of upper bounds on the general inequality constraints h_breve(x_breve). More...
 
virtual void set_c_breve (VectorMutable *c_breve)
 Set a pointer to a vector to be updated when this->calc_c_breve() is called. More...
 
virtual VectorMutableget_c_breve ()
 Return pointer passed to this->set_c_breve(). More...
 
virtual VectorMutablec_breve ()
 Returns non-const *this->get_c_breve(). More...
 
virtual const Vectorc_breve () const
 Returns const *this->get_c_breve(). More...
 
virtual void set_h_breve (VectorMutable *h_breve)
 Set a pointer to a vector to be updated when this->calc_h_breve() is called. More...
 
virtual VectorMutableget_h_breve ()
 Return pointer passed to this->set_h_breve(). More...
 
virtual VectorMutableh_breve ()
 Returns non-const *this->get_h_breve(). More...
 
virtual const Vectorh_breve () const
 Returns const *this->get_h_breve(). More...
 
virtual const Permutation & P_var () const
 Return the permutation object for the variables. More...
 
virtual const Permutation & P_equ () const
 Return the permutation object for the constraints. More...
 
virtual void calc_c_breve (const Vector &x, bool newx=true) const
 Update the constraint residual vector for c_breve at the point x and put it in the stored reference. More...
 
virtual void calc_h_breve (const Vector &x, bool newx=true) const
 Update the constraint residual vector for h_breve at the point x and put it in the stored reference. More...
 
- Public Member Functions inherited from Teuchos::VerboseObject< NLP >
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
RCP< const ParameterList
getValidVerboseObjectSublist ()
 
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
void 
setupVerboseObjectSublist (ParameterList *paramList)
 
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
void 
readVerboseObjectSublist (ParameterList *paramList, RCP< FancyOStream > *oStream, EVerbosityLevel *verbLevel)
 
void readVerboseObjectSublist (ParameterList *paramList, VerboseObject< NLP > *verboseObject)
 
 VerboseObject (const EVerbosityLevel verbLevel=VERB_DEFAULT, const RCP< FancyOStream > &oStream=Teuchos::null)
 
virtual void initializeVerboseObject (const EVerbosityLevel verbLevel=VERB_DEFAULT, const RCP< FancyOStream > &oStream=Teuchos::null)
 
virtual const VerboseObjectsetVerbLevel (const EVerbosityLevel verbLevel) const
 
virtual const VerboseObjectsetOverridingVerbLevel (const EVerbosityLevel verbLevel) const
 
virtual EVerbosityLevel getVerbLevel () const
 

Protected Types

typedef Teuchos::RCP< const
AbstractLinAlgPack::VectorSpaceThyra
VectorSpaceThyra_ptr_t
 

Protected Member Functions

void evalModel (const Vector &x, bool newx, const ZeroOrderInfo *zero_order_info, const ObjGradInfo *obj_grad_info) const
 
- Protected Member Functions inherited from NLPInterfacePack::NLPObjGrad
const ObjGradInfo obj_grad_info () const
 Return objective gradient and zero order information. More...
 
- Protected Member Functions inherited from NLPInterfacePack::NLP
template<class T >
void assert_ref_set (T *p, std::string info) const
 Assert referece has been set for a quanity. More...
 
virtual void imp_calc_c_breve (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info_breve) const
 Overridden to compute c_breve(x_breve) and perhaps f(x) and/or h_breve(x_breve) More...
 
virtual void imp_calc_h_breve (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info_breve) const
 Overridden to compute h_breve(x_breve) and perhaps f(x) and/or c_breve(x_breve). More...
 

Protected Attributes

bool initialized_
 
value_type obj_scale_
 
bool has_bounds_
 
bool force_xinit_in_bounds_
 
index_type num_bounded_x_
 
Teuchos::RCP
< Thyra::ModelEvaluator
< value_type > > 
model_
 
int p_idx_
 
int g_idx_
 
bool DfDp_supports_op_
 
bool DfDp_supports_mv_
 
VectorSpace::space_ptr_t space_x_
 
VectorSpaceThyra_ptr_t space_c_
 
NLPFirstOrder::mat_fcty_ptr_t factory_Gc_
 
NLPFirstOrder::basis_sys_ptr_t basis_sys_
 
bool x_guess_bounds_updated_
 
VectorSpace::vec_mut_ptr_t xinit_
 
VectorSpace::vec_mut_ptr_t xl_
 
VectorSpace::vec_mut_ptr_t xu_
 
Teuchos::RCP
< Thyra::VectorBase
< value_type > > 
model_g_
 
bool model_g_updated_
 
bool model_Dg_updated_
 
bool f_updated_
 
bool c_updated_
 
bool Gf_updated_
 
bool Gc_updated_
 

Overridden public members from NLP

void initialize (bool test_setup)
 
bool is_initialized () const
 
vec_space_ptr_t space_x () const
 
vec_space_ptr_t space_c () const
 
size_type num_bounded_x () const
 
void force_xinit_in_bounds (bool force_xinit_in_bounds)
 
bool force_xinit_in_bounds () const
 
const Vectorxinit () const
 
const Vectorxl () const
 
const Vectorxu () const
 
value_type max_var_bounds_viol () const
 
void set_f (value_type *f)
 
void set_c (VectorMutable *c)
 
void unset_quantities ()
 
void scale_f (value_type scale_f)
 
value_type scale_f () const
 
void report_final_solution (const Vector &x, const Vector *lambda, const Vector *nu, bool optimal)
 

Overridden public members from NLPObjGrad

void set_Gf (VectorMutable *Gf)
 

Overridden protected members from NLP

void imp_calc_f (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info) const
 
void imp_calc_c (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info) const
 

Overridden protected members from NLPObjGrad

void imp_calc_Gf (const Vector &x, bool newx, const ObjGradInfo &obj_grad_info) const
 

Protected functions to be used by subclasses

 NLPThyraModelEvaluatorBase ()
 
void initializeBase (const Teuchos::RCP< Thyra::ModelEvaluator< value_type > > &model, const int p_idx, const int g_idx)
 Initialize given a Thyra::ModelEvaluator and a description of how to interpret it. More...
 
void updateInitialGuessAndBounds () const
 Update the initial guess and bounds . More...
 
void assert_is_initialized () const
 
void copy_from_model_x (const Thyra::VectorBase< value_type > *model_x, VectorMutable *x_D) const
 
void copy_from_model_p (const Thyra::VectorBase< value_type > *model_p, VectorMutable *x_I) const
 
void set_x (const Vector &x, Thyra::ModelEvaluatorBase::InArgs< value_type > *model_inArgs_inout) const
 
void preprocessBaseInOutArgs (const Vector &x, bool newx, const ZeroOrderInfo *zero_order_info, const ObjGradInfo *obj_grad_info, const NLPFirstOrder::FirstOrderInfo *first_order_info, Thyra::ModelEvaluatorBase::InArgs< value_type > *model_inArgs_inout, Thyra::ModelEvaluatorBase::OutArgs< value_type > *model_outArgs_inout, MatrixOp **Gc_out, VectorMutable **Gf_out, value_type **f_out, VectorMutable **c_out) const
 
void postprocessBaseOutArgs (Thyra::ModelEvaluatorBase::OutArgs< value_type > *model_outArgs_inout, VectorMutable *Gf, value_type *f, VectorMutable *c) const
 

Additional Inherited Members

- Public Types inherited from NLPInterfacePack::NLP
typedef AbstractLinAlgPack::Vector Vector
 
typedef
AbstractLinAlgPack::VectorMutable 
VectorMutable
 
typedef Teuchos::RCP< const
VectorSpace > 
vec_space_ptr_t
 
typedef Teuchos::RCP< const
OptionsFromStreamPack::OptionsFromStream
options_ptr_t
 
- Static Public Member Functions inherited from NLPInterfacePack::NLP
static value_type infinite_bound ()
 Value for an infinite bound. More...
 
- Static Public Member Functions inherited from Teuchos::VerboseObject< NLP >
static void setDefaultVerbLevel (const EVerbosityLevel defaultVerbLevel)
 
static EVerbosityLevel getDefaultVerbLevel ()
 

Detailed Description

Implements the base NLP interface using a Thyra::ModelEvaluator object.

The nonlinear program is mapped as follows:

   min     f(x)
   s.t.    c(x) = 0
           xL <= x <= xu

   where:

       x = [ model.x        ]
           [ model.p(p_idx) ]

       f(x) = model.g(g_idx)

       c(x) = model.f()

where p_idx > 0 and g_idx > 0 are some indexes that specificy the indepenent variables and the objective function.

In addition, the client can also override the bounds on model.x and model.p(p_idx) defined in the object model.

The current implementation of this class does not allow the use of any of the auxiliary functions model.g() as undecomposed equality constraints or extra general inequality constraints. This type of functionality can be added when it is needed (just ask for it).

ToDo: Finish documentation!

Definition at line 92 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.hpp.

Member Typedef Documentation

Constructor & Destructor Documentation

NLPInterfacePack::NLPThyraModelEvaluatorBase::NLPThyraModelEvaluatorBase ( )
protected

Initialize to uninitialized

Definition at line 233 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

Member Function Documentation

NLPInterfacePack::NLPThyraModelEvaluatorBase::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
showModelEvaluatorTrace   
)

Set if a trace of the model evaluations is shown or not.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::initialize ( bool  test_setup)
virtual

Reimplemented from NLPInterfacePack::NLPObjGrad.

Definition at line 68 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

bool NLPInterfacePack::NLPThyraModelEvaluatorBase::is_initialized ( ) const
virtual
NLP::vec_space_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::space_x ( ) const
virtual
NLP::vec_space_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::space_c ( ) const
virtual
size_type NLPInterfacePack::NLPThyraModelEvaluatorBase::num_bounded_x ( ) const
virtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::force_xinit_in_bounds ( bool  force_xinit_in_bounds)
virtual
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::force_xinit_in_bounds ( ) const
virtual
const Vector & NLPInterfacePack::NLPThyraModelEvaluatorBase::xinit ( ) const
virtual
const Vector & NLPInterfacePack::NLPThyraModelEvaluatorBase::xl ( ) const
virtual
const Vector & NLPInterfacePack::NLPThyraModelEvaluatorBase::xu ( ) const
virtual
value_type NLPInterfacePack::NLPThyraModelEvaluatorBase::max_var_bounds_viol ( ) const
virtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::set_f ( value_type *  f)
virtual

Reimplemented from NLPInterfacePack::NLP.

Definition at line 137 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::set_c ( VectorMutable c)
virtual

Reimplemented from NLPInterfacePack::NLP.

Definition at line 143 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::unset_quantities ( )
virtual

Reimplemented from NLPInterfacePack::NLPObjGrad.

Definition at line 149 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::scale_f ( value_type  scale_f)
virtual
value_type NLPInterfacePack::NLPThyraModelEvaluatorBase::scale_f ( ) const
virtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::report_final_solution ( const Vector x,
const Vector lambda,
const Vector nu,
bool  optimal 
)
virtual

Reimplemented from NLPInterfacePack::NLP.

Definition at line 164 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::set_Gf ( VectorMutable Gf)
virtual

Reimplemented from NLPInterfacePack::NLPObjGrad.

Definition at line 197 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::imp_calc_f ( const Vector x,
bool  newx,
const ZeroOrderInfo zero_order_info 
) const
protectedvirtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::imp_calc_c ( const Vector x,
bool  newx,
const ZeroOrderInfo zero_order_info 
) const
protectedvirtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::imp_calc_Gf ( const Vector x,
bool  newx,
const ObjGradInfo obj_grad_info 
) const
protectedvirtual
void NLPInterfacePack::NLPThyraModelEvaluatorBase::initializeBase ( const Teuchos::RCP< Thyra::ModelEvaluator< value_type > > &  model,
const int  p_idx,
const int  g_idx 
)
protected

Initialize given a Thyra::ModelEvaluator and a description of how to interpret it.

Parameters
model[in] NonlinearProblem that defines all of the functions and variables.
p_idx[in] Index of the subset of parameter vectors to use as the independent variables. If p_idx < 0, then no extra parameters are added.
g_idx[in] Index of the subset of auxiliary response functions to use as the objective function. Note, only the first element model.g(g_idx)(1) will be used as the objective function value.
model_xL[in] Pointer to upper bounds for the state variables model.x. If NULL then the default supplied in model->get_x_lower_bounds() will be used.
model_xU[in] Pointer to upper bounds for the state variables x. If NULL then the default supplied in model->get_x_upper_bounds() will be used.
model_x0[in] Pointer to initial guess for the state variables x. If NULL the the default supplied in model->get_x_init() will be used.

ToDo: Finish documentation!

Todo: Add arguments for auxiliary inequalites and equalities

Definition at line 240 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::updateInitialGuessAndBounds ( ) const
protected

Update the initial guess and bounds .

Definition at line 357 of file NLPInterfacePack_NLPThyraModelEvaluatorBase.cpp.

void NLPInterfacePack::NLPThyraModelEvaluatorBase::assert_is_initialized ( ) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::copy_from_model_x ( const Thyra::VectorBase< value_type > *  model_x,
VectorMutable x_D 
) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::copy_from_model_p ( const Thyra::VectorBase< value_type > *  model_p,
VectorMutable x_I 
) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::set_x ( const Vector x,
Thyra::ModelEvaluatorBase::InArgs< value_type > *  model_inArgs_inout 
) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::preprocessBaseInOutArgs ( const Vector x,
bool  newx,
const ZeroOrderInfo zero_order_info,
const ObjGradInfo obj_grad_info,
const NLPFirstOrder::FirstOrderInfo first_order_info,
Thyra::ModelEvaluatorBase::InArgs< value_type > *  model_inArgs_inout,
Thyra::ModelEvaluatorBase::OutArgs< value_type > *  model_outArgs_inout,
MatrixOp **  Gc_out,
VectorMutable **  Gf_out,
value_type **  f_out,
VectorMutable **  c_out 
) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::postprocessBaseOutArgs ( Thyra::ModelEvaluatorBase::OutArgs< value_type > *  model_outArgs_inout,
VectorMutable Gf,
value_type *  f,
VectorMutable c 
) const
protected
void NLPInterfacePack::NLPThyraModelEvaluatorBase::evalModel ( const Vector x,
bool  newx,
const ZeroOrderInfo zero_order_info,
const ObjGradInfo obj_grad_info 
) const
protected

Member Data Documentation

bool NLPInterfacePack::NLPThyraModelEvaluatorBase::initialized_
protected
value_type NLPInterfacePack::NLPThyraModelEvaluatorBase::obj_scale_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::has_bounds_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::force_xinit_in_bounds_
protected
index_type NLPInterfacePack::NLPThyraModelEvaluatorBase::num_bounded_x_
protected
Teuchos::RCP<Thyra::ModelEvaluator<value_type> > NLPInterfacePack::NLPThyraModelEvaluatorBase::model_
protected
int NLPInterfacePack::NLPThyraModelEvaluatorBase::p_idx_
protected
int NLPInterfacePack::NLPThyraModelEvaluatorBase::g_idx_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::DfDp_supports_op_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::DfDp_supports_mv_
protected
VectorSpace::space_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::space_x_
protected
VectorSpaceThyra_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::space_c_
protected
NLPFirstOrder::mat_fcty_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::factory_Gc_
protected
NLPFirstOrder::basis_sys_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::basis_sys_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::x_guess_bounds_updated_
mutableprotected
VectorSpace::vec_mut_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::xinit_
protected
VectorSpace::vec_mut_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::xl_
protected
VectorSpace::vec_mut_ptr_t NLPInterfacePack::NLPThyraModelEvaluatorBase::xu_
protected
Teuchos::RCP<Thyra::VectorBase<value_type> > NLPInterfacePack::NLPThyraModelEvaluatorBase::model_g_
protected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::model_g_updated_
mutableprotected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::model_Dg_updated_
mutableprotected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::f_updated_
mutableprotected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::c_updated_
mutableprotected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::Gf_updated_
mutableprotected
bool NLPInterfacePack::NLPThyraModelEvaluatorBase::Gc_updated_
mutableprotected

The documentation for this class was generated from the following files: