|
typedef Teuchos::RCP< const
Teuchos::AbstractFactory
< MatrixOp > > | factory_mat_ptr_t |
| |
| 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 |
| |
typedef Teuchos::RCP< const
Teuchos::AbstractFactory
< Permutation > > | perm_fcty_ptr_t |
| |
typedef Teuchos::RCP< const
Teuchos::AbstractFactory
< MatrixOp > > | mat_fcty_ptr_t |
| |
| typedef Teuchos::RCP< BasisSystem > | basis_sys_ptr_t |
| |
| | STANDARD_COMPOSITION_MEMBERS (BasisSystemFactory, basis_sys_fcty) |
| | Set the BasisSystemFactory object used to create the basis system. More...
|
| |
| | NLPSerialPreprocessExplJac (const basis_sys_fcty_ptr_t &basis_sys_fcty=Teuchos::rcp(new BasisSystemFactoryStd()), const factory_mat_ptr_t &factory_Gc_full=Teuchos::null) |
| | Calls this->set_basis_sys_fcty() and this->set_mat_factories() methods. More...
|
| |
| void | set_factory_Gc_full (const factory_mat_ptr_t &factory_Gc_full) |
| | Initialize with matrix factory for original matrices Gc. More...
|
| |
| void | set_options (const options_ptr_t &options) |
| | Passes these options on to this->basis_sys_fcty().set_options(options). More...
|
| |
| const options_ptr_t & | get_options () const |
| |
| const mat_fcty_ptr_t | factory_Gc () const |
| |
| const basis_sys_ptr_t | basis_sys () const |
| | Calls basis_sys_fcty()->create() More...
|
| |
| void | set_Gc (MatrixOp *Gc) |
| | Validates the type of Gc is correct. More...
|
| |
| bool | get_next_basis (Permutation *P_var, Range1D *var_dep, Permutation *P_equ, Range1D *equ_decomp) |
| |
| void | set_basis (const Permutation &P_var, const Range1D &var_dep, const Permutation *P_equ, const Range1D *equ_decomp) |
| |
| | NLPSerialPreprocess () |
| | Default Constructor. More...
|
| |
| void | force_xinit_in_bounds (bool force_xinit_in_bounds) |
| |
| bool | force_xinit_in_bounds () const |
| |
| size_type | n () const |
| |
| size_type | m () const |
| |
| vec_space_ptr_t | space_x () const |
| |
| vec_space_ptr_t | space_c () const |
| |
| size_type | num_bounded_x () const |
| |
| const Vector & | xl () const |
| |
| const Vector & | xu () const |
| |
| const Vector & | xinit () const |
| |
| void | get_init_lagrange_mult (VectorMutable *lambda, VectorMutable *nu) const |
| |
| 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 is_optimal) |
| | Overridden to permute the variables back into an order that is natural to the subclass. More...
|
| |
| virtual size_type | ns () const |
| |
| vec_space_ptr_t | space_c_breve () const |
| |
| vec_space_ptr_t | space_h_breve () const |
| |
| const Vector & | hl_breve () const |
| |
| const Vector & | hu_breve () const |
| |
| const Permutation & | P_var () const |
| |
| const Permutation & | P_equ () const |
| |
| const perm_fcty_ptr_t | factory_P_var () const |
| |
| const perm_fcty_ptr_t | factory_P_equ () const |
| |
| Range1D | var_dep () const |
| |
| Range1D | var_indep () const |
| |
| Range1D | equ_decomp () const |
| |
| Range1D | equ_undecomp () const |
| |
| void | get_basis (Permutation *P_var, Range1D *var_dep, Permutation *P_equ, Range1D *equ_decomp) const |
| |
| | 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 void | set_Gf (VectorMutable *Gf) |
| | Set a pointer to a vector to be updated when this->calc_Gf() is called. More...
|
| |
| virtual VectorMutable * | get_Gf () |
| | Return pointer passed to this->set_Gf(). More...
|
| |
| virtual VectorMutable & | Gf () |
| | Returns non-const *this->get_Gf(). More...
|
| |
| virtual const Vector & | Gf () const |
| | Returns const *this->get_Gf(). More...
|
| |
| void | unset_quantities () |
| | Call to unset all storage quantities (both in this class and all subclasses). 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...
|
| |
| 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_f (value_type *f) |
| | Set a pointer to an value to be updated when this->calc_f() is called. 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 void | set_c (VectorMutable *c) |
| | Set a pointer to a vector to be updated when this->calc_c() is called. More...
|
| |
| virtual VectorMutable * | get_c () |
| | Return pointer passed to this->set_c(). More...
|
| |
| virtual VectorMutable & | c () |
| | Returns non-const *this->get_c(). More...
|
| |
| virtual const Vector & | c () 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 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 VectorMutable * | get_c_breve () |
| | Return pointer passed to this->set_c_breve(). More...
|
| |
| virtual VectorMutable & | c_breve () |
| | Returns non-const *this->get_c_breve(). More...
|
| |
| virtual const Vector & | c_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 VectorMutable * | get_h_breve () |
| | Return pointer passed to this->set_h_breve(). More...
|
| |
| virtual VectorMutable & | h_breve () |
| | Returns non-const *this->get_h_breve(). More...
|
| |
| virtual const Vector & | h_breve () const |
| | Returns const *this->get_h_breve(). 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...
|
| |
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 VerboseObject & | setVerbLevel (const EVerbosityLevel verbLevel) const |
| |
| virtual const VerboseObject & | setOverridingVerbLevel (const EVerbosityLevel verbLevel) const |
| |
| virtual EVerbosityLevel | getVerbLevel () const |
| |
| | NLPFirstOrder () |
| | Initialize to no reference set to calculation quanities. More...
|
| |
| virtual MatrixOp * | get_Gc () |
| | Return pointer passed to this->set_Gc(). More...
|
| |
| virtual MatrixOp & | Gc () |
| | Returns non-const *this->get_Gc(). More...
|
| |
| virtual const MatrixOp & | Gc () const |
| | Returns const *this->get_Gc(). More...
|
| |
| void | unset_quantities () |
| | Call to unset all storage quantities (both in this class and all subclasses). More...
|
| |
| virtual void | calc_Gc (const Vector &x, bool newx=true) const |
| | Update the matrix for Gc at the point x and put it in the stored reference. More...
|
| |
| virtual size_type | num_Gc_evals () const |
| | Gradient of constraints matrix Gc evaluations count. More...
|
| |
| static value_type | fixed_var_mult () |
| | Gives the value of a Lagrange multipler for a fixed variable bound .that has been preprocessed out of the problem. More...
|
| |
| static value_type | infinite_bound () |
| | Value for an infinite bound. More...
|
| |
| static void | setDefaultVerbLevel (const EVerbosityLevel defaultVerbLevel) |
| |
| static EVerbosityLevel | getDefaultVerbLevel () |
| |
| void | imp_calc_Gc (const Vector &x, bool newx, const FirstOrderInfo &first_order_info) const |
| |
| void | assert_initialized () const |
| | Assert if we have been initizlized (throws UnInitialized) More...
|
| |
| const FirstOrderExplInfo | first_order_expl_info () const |
| |
| 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 |
| |
| void | imp_calc_c_breve (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info_breve) const |
| |
| void | imp_calc_h_breve (const Vector &x, bool newx, const ZeroOrderInfo &zero_order_info_breve) const |
| |
| void | imp_calc_Gf (const Vector &x, bool newx, const ObjGradInfo &obj_grad_info) const |
| |
| void | set_not_initialized () |
| | Used by subclasses to set the state of the NLP to not initialized. More...
|
| |
| void | assert_initialized () const |
| | Assert if we have been initizlized (throws UnInitialized) More...
|
| |
| void | set_x_full (const DVectorSlice &x, bool newx, DVectorSlice *x_full) const |
| | Set the full x vector if newx == true More...
|
| |
| DVectorSlice | x_full () const |
| | Give reference to current x_full. More...
|
| |
| const ZeroOrderInfoSerial | zero_order_orig_info () const |
| |
| const ObjGradInfoSerial | obj_grad_orig_info () const |
| |
| const IVector & | var_remove_fixed_to_full () const |
| | Permutation vector for partitioning free and fixed variables. More...
|
| |
| const IVector & | var_full_to_remove_fixed () const |
| | Inverse permutation vector of var_remove_fixed_to_full(). More...
|
| |
| const IVector & | var_perm () const |
| | Permutes from the compated variable vector (removing fixed variables) to the current basis selection. More...
|
| |
| const IVector & | equ_perm () const |
| | Permutes from the original constriant ordering to the current basis selection. More...
|
| |
| const IVector & | inv_equ_perm () const |
| | Inverse of equ_perm() More...
|
| |
| void | var_from_full (DVectorSlice::const_iterator vec_full, DVectorSlice::iterator vec) const |
| |
| void | var_to_full (DVectorSlice::const_iterator vec, DVectorSlice::iterator vec_full) const |
| |
| void | equ_from_full (const DVectorSlice &c_orig, const DVectorSlice &h_orig, const DVectorSlice &s_orig, DVectorSlice *c_full) const |
| |
| const ObjGradInfo | obj_grad_info () const |
| | Return objective gradient and zero order information. More...
|
| |
| template<class T > |
| void | assert_ref_set (T *p, std::string info) const |
| | Assert referece has been set for a quanity. More...
|
| |
| const FirstOrderInfo | first_order_info () const |
| | Return objective gradient and zero order information. More...
|
| |
Simple scalable serial NLP subclass.
This example NLP is a scalable problem where the basis of the jacobian of the equality constraints is a banded (band width = bw) symmetric positive definite matrix. Both the number of dependnet and independent variables can be varied.
To setup this NLP, the client specifies:
-
nD : the number of dependent variables
-
nI : the number of independent variables (nI <= nD)
-
bw : the band width (defined as the number of diagonals, including the center diagonal i==j that have non-zero element)
-
mU : the number of undecomposed dependent constraints
-
mI : the number of general constraints
-
diag_scal : Constant scaling factor for the diagonal elements
-
diag_vary : The scaling factor for the diagonal elements (to produce illconditioning) between the largets and the smallest.
-
sym_basis : True if the basis (selected by the NLP) is symmetric or not.
This NLP is defined as:
min f(x) = (1/2) * sum( x(i)^2, for i = 1..n )
s.t.
c(j) = ( ds(j)*x(j) \
- sum( 3/(k)*x(j-k), k=1...klu(j) ) |
- sum( fu/(k)*x(j+k), k=1...kuu(j) ) | for j = 1...nD
) * (x(nD+q(j)) + 1)^2 |
+ co(j) == 0 /
c(nD+jU) = c(jU) + co(nD+jU) == 0 } for jU = 1...mU
hl(jI) <= x(jI) - x(nD+q(jI)) <= hu(jI) } for jI = 1...mI
xl(i) <= x(i) <= xu(i) } for i = 1...n
where:
n = nD + nI
m = nD + mU
mI = mI
ds(j) = diag_scal * ( (diag_vary - 1)/(nD -1) * (j - 1) + 1 )
/ 3 : if sym_basis = true
fu = |
\ 6 : if sym_basis = false
/ 2 : if floor((j-1)/nI) < nD % nI
q(j) = floor((j-1)/nI) + |
\ 1 : if floor((j-1)/nI) >= nD % nI
/ bw-1 : if j - bw >= 0 \
klu(j) = | |
\ j-1 : if j - bw <= 1 |
| for j=1...nD
/ bw-1 : if j + bw-1 <= nD |
kuu(j) = | |
\ nD-j : if j - bw <= 1 /
In the above formuation, the sums are not computed if the upper bounds on k are zero. The term co(j) is an adjustable term that can be used to manipulate the solution. Note that if co(nD+jI) != 0 above, then the undecomposed dependent equality constraints are inconsistent with the decomposed equalities and therefore the NLP is infeasible. An infeasible NLP can also be created by manipulating xl(i), xu(i), hl(jI), hu(jI) and co(j).
For the above NLP, the Jacobian of the decomposed equalities has Jacobian elements:
/ -3/(j-i) * (x(nD+q(j)) + 1)^2 : i - klu(i) <= j < i
|
| ds(j) * (x(nD+q(j)) + 1)^2 : i == j
d(c(j))/d(x(i)) = |
| -3/(i-j) * (x(nD+q(j)) + 1)^2 : i < j <= i + kuu(i)
|
| 2 * (c(j) - co(j)) / (x(nD+q(j)) + 1) : i == nD + q
|
\ 0 : otherwise
, for j = 1...nD, i = 1...nD+nI
The above definition shows that for the independent variables, the Jacobian elements are written in terms of the constraint c(j). This fact is exploited in the computational routines when this->multi_calc() == true.
For nD == 7, nI == 2, bw = 2 with floor(nD/nI) = 3 and nD % nI = 1, the Jacobian Gc' looks like:
1 | x x x |
2 | x x x x |
3 | x x x x |
4 | x x x x |
5 | x x x x |
6 | x x x x |
7 | x x x |
- - - - - - - - -
1 2 3 4 5 6 7 8 9
ToDo: Finish documentation!
Definition at line 159 of file NLPInterfacePack_ExampleNLPBanded.hpp.