MOOCHO (Single Doxygen Collection)
Version of the Day
|
Initializes the reduced hessian using a single finite difference along the null space of the constraints. More...
#include <MoochoPack_InitFinDiffReducedHessian_Step.hpp>
Private Attributes | |
quasi_newton_stats_iq_member | quasi_newton_stats_ |
Initializers/constructors | |
enum | EInitializationMethod { SCALE_IDENTITY, SCALE_DIAGONAL, SCALE_DIAGONAL_ABS } |
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) | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (EInitializationMethod, initialization_method) | |
The initialization method for setting the diagonal. More... | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, max_cond) | |
Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)). More... | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, min_diag) | |
The absolute minimum value of a diagonal element. More... | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, step_scale) | |
The scaling of the step length u = step_scale / ||Z*e||inf. More... | |
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 |
Additional Inherited Members | |
Public Types inherited from IterationPack::AlgorithmStep | |
typedef size_t | poss_type |
Public Member Functions inherited from IterationPack::AlgorithmStep | |
virtual | ~AlgorithmStep () |
virtual void | initialize_step (Algorithm &algo, poss_type step_poss, EDoStepType type, poss_type assoc_step_poss) |
Called by Algorithm just before the algorithm is run. More... | |
virtual void | inform_updated (Algorithm &algo, poss_type step_poss, EDoStepType type, poss_type assoc_step_poss) |
Called by Algorithm to inform when a runtime configuration change is finihed. More... | |
virtual void | finalize_step (Algorithm &algo, poss_type step_poss, EDoStepType type, poss_type assoc_step_poss) |
Called by Algorithm just after an algorithm is terminiated. More... | |
Initializes the reduced hessian using a single finite difference along the null space of the constraints.
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 82 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.
Enumerator | |
---|---|
SCALE_IDENTITY | |
SCALE_DIAGONAL | |
SCALE_DIAGONAL_ABS |
Definition at line 91 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.
MoochoPack::InitFinDiffReducedHessian_Step::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 |
||
) |
Definition at line 69 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.
MoochoPack::InitFinDiffReducedHessian_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | EInitializationMethod | , |
initialization_method | |||
) |
The initialization method for setting the diagonal.
MoochoPack::InitFinDiffReducedHessian_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | value_type | , |
max_cond | |||
) |
Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)).
MoochoPack::InitFinDiffReducedHessian_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | value_type | , |
min_diag | |||
) |
The absolute minimum value of a diagonal element.
MoochoPack::InitFinDiffReducedHessian_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | value_type | , |
step_scale | |||
) |
The scaling of the step length u = step_scale / ||Z*e||inf.
|
virtual |
Implements IterationPack::AlgorithmStep.
Definition at line 81 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.
|
virtual |
Reimplemented from IterationPack::AlgorithmStep.
Definition at line 291 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.
|
private |
Definition at line 127 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.