#include <MoochoPack_InitFinDiffReducedHessian_Step.hpp>
Inheritance diagram for MoochoPack::InitFinDiffReducedHessian_Step:
Initializers/constructors | |
| enum | EInitializationMethod |
| More... | |
| InitFinDiffReducedHessian_Step (EInitializationMethod initialization_method=SCALE_IDENTITY, value_type max_cond=1e+1, value_type min_diag=1e-8, value_type step_scale=1e-1) | |
| | |
| void | initialization_method (const EInitializationMethod &initialization_method) |
| The initialization method for setting the diagonal. | |
| void | max_cond (const value_type &max_cond) |
| Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)). | |
| void | min_diag (const value_type &min_diag) |
| The absolute minimum value of a diagonal element. | |
| void | step_scale (const value_type &step_scale) |
| The scaling of the step length u = step_scale / ||Z*e||inf. | |
Overridden from AlgorithmStep | |
| bool | do_step (Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss) |
| | |
| void | print_step (const Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss, std::ostream &out, const std::string &leading_str) const |
| | |
A single finite difference correction is computed along:\
x_fd = x_k + u * Z * e
The step length is set to u = step_scale / ||Z*e||inf. The step length is cut back if the point x_fd is outside the relaxed variable bounds.
The finite difference is then computed as:
rGf_fd = ( Z_k' * g(x_k + u * Z*e) - rGf_k ) / u
The diagonal terms of the reduced hessian are then set as:
diag(i) = max( ||rGf_fd||inf , smallest_ele ) if initialization_method == SCALE_IDENTITY\ diag(i) = max( rGf_fd(i) , smallest_ele ) if initialization_method == SCALE_DIAGONAL\ diag(i) = max( abs(rGf_fd(i)), smallest_ele ) if initialization_method == SCALE_DIAGONAL_ABS\
Where:
smallest_ele = max( ||rGf_fd||inf / max_cond , min_diag )
Since the matrix is diagonal the diagonal is equal to the eigenvalues of the matrix. Therefore you can show that the condition number measured in any norm is max(diag(i))/min(diag(i)). therefore we just need to limit the smallest diagonal as diag(i) > max(diag(i)) / max_cond.
Definition at line 69 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.
|
|
Definition at line 78 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp. |
|
||||||||||||||||||||
|
Definition at line 56 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp. |
|
|
The initialization method for setting the diagonal.
Definition at line 89 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp. |
|
|
Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)).
Definition at line 92 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp. |
|
|
The absolute minimum value of a diagonal element.
Definition at line 95 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp. |
|
|
The scaling of the step length u = step_scale / ||Z*e||inf.
Definition at line 98 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp. |
|
||||||||||||||||||||
|
Definition at line 68 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp. |
|
||||||||||||||||||||||||||||
|
Definition at line 278 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp. |
1.3.9.1