NLPInterfacePack::NLPVarReductPerm Class Reference

NLP interface class that adds variable and constriant permutations for variable reduction basis selections. More...

#include <NLPInterfacePack_NLPVarReductPerm.hpp>

Inheritance diagram for NLPInterfacePack::NLPVarReductPerm:

Inheritance graph
[legend]
List of all members.

Public types

typedef Teuchos::RCP< const
Teuchos::AbstractFactory<
Permutation > > 
perm_fcty_ptr_t
 

Abstract factories for Permutation objects

virtual const perm_fcty_ptr_t factory_P_var () const =0
 
virtual const perm_fcty_ptr_t factory_P_equ () const =0
 

Return ranges for the partitioning of variables and constraints

virtual Range1D var_dep () const =0
 
virtual Range1D var_indep () const =0
 
virtual Range1D equ_decomp () const =0
 
virtual Range1D equ_undecomp () const =0
 

Basis manipulation functions

virtual bool nlp_selects_basis () const =0
 Returns true if the NLP can suggest one or more basis selections.
virtual bool get_next_basis (Permutation *P_var, Range1D *var_dep, Permutation *P_equ, Range1D *equ_decomp)=0
 Returns the next basis the NLP has and sets the NLP to the returned basis.
virtual void set_basis (const Permutation &P_var, const Range1D &var_dep, const Permutation *P_equ, const Range1D *equ_decomp)=0
 Sets the basis the that the NLP will use to permute the problem.
virtual void get_basis (Permutation *P_var, Range1D *var_dep, Permutation *P_equ, Range1D *equ_decomp) const =0
 Returns the basis selection currently being used by the NLP.

Private Attributes

Teuchos::AbstractFactory<
AbstractLinAlgPack::Permutation > * 
factory_P_var
Teuchos::AbstractFactory<
AbstractLinAlgPack::Permutation > * 
factory_P_equ

Classes

class  InvalidBasis
 Thrown if an invalid basis selection is made. More...

Detailed Description

NLP interface class that adds variable and constriant permutations for variable reduction basis selections.

This class adds basis selection and manipulation. This functionality is needed by many optimization algorithms that categorize variables and constraints into specific sets according to a basis selection. To understand what sets these are, consider the following equality constraints (from the NLP interface).

            c(x)  = 0,    c(x) <: R^n -> R^m
 
This interface allows x and c(x) to be partitioned into different sets. The variables x are partitioned into a dependent set x(var_dep) and an independent set x(var_dep) by the permutation P_var. The equality constraints c(x) are partitioned into decomposed c(equ_decomp) and undecomposed c(equ_undecomp) sets by the permutation P_equ. These permutations permute from an original order to a new ordering. For example:
  Original Ordering      Permutation to new ordering                Partitioning
  -----------------    -------------------------------   -------------------------------------
       x_orig          P_var.permute(trans,x_orig,x)     -> x(var_dep),      x(var_indep)
       c_orig          P_equ.permute(trans,c_orig,c)     -> c(equ_decomp),   c(equ_undecomp)
 
Because of this partitioning, it is expected that the following vector sub-spaces will be non-null: space_x()->sub_space(var_indep), space_x()->sub_space(var_dep), space_c()->sub_space(equ_decomp), space_c()->sub_space(equ_undecomp). Other subspaces may be non-null also but these are the only ones that are required to be.

After initialization, the NLP subclass will be initialized to the first basis. This basis may be the original ordering if P_var and P_equ all return xxx_perm.is_identity(). If the concrete NLP is selecting the basis (nlp_selects_basis() == true) this basis will be that first basis. The first time that this->get_next_basis() is called it will return this initial basis (which may not be the original ordering).

The client can always see what this first basis is by calling this->get_basis(). If a basis goes singular the client can request other basis selections from the NLP by calling this->get_next_basis() (which will return true if more basis selections are available). The client can also select a basis itself and then set that basis by calling this->set_basis() to force the use of that basis selection. In this way a valid basis is automatically selected after initialization so that clients using another interface (NLP, NLPFirstOrder, or NLPSecondOrder) will be able to use the NLP object without even knowing about a basis selection.

Below are some obviouls assertions about the basis selection:

Definition at line 92 of file NLPInterfacePack_NLPVarReductPerm.hpp.


Member Typedef Documentation

typedef Teuchos::RCP< const Teuchos::AbstractFactory<Permutation> > NLPInterfacePack::NLPVarReductPerm::perm_fcty_ptr_t

Definition at line 101 of file NLPInterfacePack_NLPVarReductPerm.hpp.


Member Function Documentation

virtual const perm_fcty_ptr_t NLPInterfacePack::NLPVarReductPerm::factory_P_var (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual const perm_fcty_ptr_t NLPInterfacePack::NLPVarReductPerm::factory_P_equ (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual Range1D NLPInterfacePack::NLPVarReductPerm::var_dep (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual Range1D NLPInterfacePack::NLPVarReductPerm::var_indep (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual Range1D NLPInterfacePack::NLPVarReductPerm::equ_decomp (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual Range1D NLPInterfacePack::NLPVarReductPerm::equ_undecomp (  )  const [pure virtual]

Implemented in NLPInterfacePack::NLPSerialPreprocess.

virtual bool NLPInterfacePack::NLPVarReductPerm::nlp_selects_basis (  )  const [pure virtual]

Returns true if the NLP can suggest one or more basis selections.

Implemented in NLPInterfacePack::NLPSerialPreprocess, NLPInterfacePack::ExampleNLPBanded, and NLPInterfacePack::NLPWBCounterExample.

virtual bool NLPInterfacePack::NLPVarReductPerm::get_next_basis ( Permutation *  P_var,
Range1D var_dep,
Permutation *  P_equ,
Range1D equ_decomp 
) [pure virtual]

Returns the next basis the NLP has and sets the NLP to the returned basis.

Parameters:
P_var [out] Variable permutations defined as P_var'*x_old -> x_new = [ x(var_dep); x(var_indep) ]
var_dep [out] Range of dependent variables in x_new(var_dep)
P_equ [out] Equality constraint permutations defined as P_equ'*c_old -> c_new = [ c(equ_decomp); c(equ_undecomp) ]
equ_decomp [out] Range of decomposed equalities in c_new(equ_decomp)
Postconditions: The NLP is set to the basis returned in the arguments and this->get_basis() will return the same basis.

This member returns true if the NLP has another basis to select, and is false if not. If false is returned the client has the option of selecting another basis on its own and passing it to the NLP by calling this->set_basis().

Implemented in NLPInterfacePack::NLPSerialPreprocess, and NLPInterfacePack::NLPSerialPreprocessExplJac.

virtual void NLPInterfacePack::NLPVarReductPerm::set_basis ( const Permutation &  P_var,
const Range1D var_dep,
const Permutation *  P_equ,
const Range1D equ_decomp 
) [pure virtual]

Sets the basis the that the NLP will use to permute the problem.

Parameters:
P_var [in] Variable permutations defined as P_var'*x_old -> x_new = [ x(var_dep); x(var_indep) ]
var_dep [in] Range of dependent variables in x_new(var_dep)
P_equ [in] Equality constraint permutations defined as P_equ'*c_old -> c_new = [ c(equ_decomp); c(equ_undecomp) ]
equ_decomp [in] Range of decomposed equalities in c_new(equ_decomp)
Preconditions: The input basis meets the basis assertions stated above or an InvalidBasis exceptin is thrown.

Postconditions: The NLP is set to the basis given in the arguments and this->get_basis() will return this same basis.

Implemented in NLPInterfacePack::NLPSerialPreprocess, and NLPInterfacePack::NLPSerialPreprocessExplJac.

virtual void NLPInterfacePack::NLPVarReductPerm::get_basis ( Permutation *  P_var,
Range1D var_dep,
Permutation *  P_equ,
Range1D equ_decomp 
) const [pure virtual]

Returns the basis selection currently being used by the NLP.

Parameters:
P_var [out] Variable permutations defined as P_var'*x_old -> x_new = [ x(var_dep); x(var_indep) ]
var_dep [out] Range of dependent variables in x_new(var_dep)
P_equ [out] Equality constraint permutations defined as P_equ'*c_old -> c_new = [ c(equ_decomp); c(equ_undecomp) ]
equ_decomp [out] Range of decomposed equalities in c_new(equ_decomp)

Implemented in NLPInterfacePack::NLPSerialPreprocess.


Member Data Documentation

Teuchos::AbstractFactory<AbstractLinAlgPack::Permutation>* NLPInterfacePack::NLPVarReductPerm::factory_P_var [private]

Definition at line 191 of file NLPInterfacePack_NLPVarReductPerm.hpp.

Teuchos::AbstractFactory<AbstractLinAlgPack::Permutation>* NLPInterfacePack::NLPVarReductPerm::factory_P_equ [private]

Definition at line 192 of file NLPInterfacePack_NLPVarReductPerm.hpp.


The documentation for this class was generated from the following file:
Generated on Wed May 12 21:57:30 2010 for MOOCHO (Single Doxygen Collection) by  doxygen 1.4.7