|
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.