MoochoPack : Framework for Large-Scale Optimization Algorithms
Version of the Day
|
Check if the decomposition is going singular and if it is select a new decomposition. More...
#include <MoochoPack_CheckDecompositionFromPy_Step.hpp>
Public Member Functions | |
STANDARD_COMPOSITION_MEMBERS (NewDecompositionSelection_Strategy, new_decomp_strategy) | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, max_decomposition_cond_change_frac) | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, max_cond) | |
CheckDecompositionFromPy_Step (const new_decomp_strategy_ptr_t &new_decomp_strategy, value_type max_decomposition_cond_change_frac=100.0) | |
void | reset () |
Call the reset initialization of all defaults. 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 |
Check if the decomposition is going singular and if it is select a new decomposition.
This steps checks if the decomposition is going singular by looking to see if the computation for the range space step looks bad.
In particular we want to know how cond(R)
is changing. We know that:
py = -inv(R) * c --> ||py|| <= ||inv(R)|| * ||c|| --> ||py|| / ||c|| <= ||inv(R)|| --> ( ||py|| / ||c|| ) * ||R|| <= ||inv(R)|| * ||R|| = cond(R)
If we assume ||R|| > 1
we know that cond(R) > beta = ||py||/||c||
so if beta
is very large then cond(R) is even larger. Since the best decomposition we can find may be fairly illconditioned we may not want to use and absolute measure of beta
to determine if the decomposition is illconditioned. Instead we will look at the change in beta
between iterations and if beta
gets very much larger than its minimum value (i.e. beta / beta_min > max_cond_change
( default = 10000 ) ) then we will select a new decomposition. Also if beta > max_cond
( default = 0.01 / mach_eps
) then we know we will be computing inacurate solutions so we must select a new decomposition.
Definition at line 76 of file MoochoPack_CheckDecompositionFromPy_Step.hpp.
MoochoPack::CheckDecompositionFromPy_Step::CheckDecompositionFromPy_Step | ( | const new_decomp_strategy_ptr_t & | new_decomp_strategy, |
value_type | max_decomposition_cond_change_frac = 100.0 |
||
) |
Definition at line 53 of file MoochoPack_CheckDecompositionFromPy_Step.cpp.
MoochoPack::CheckDecompositionFromPy_Step::STANDARD_COMPOSITION_MEMBERS | ( | NewDecompositionSelection_Strategy | , |
new_decomp_strategy | |||
) |
MoochoPack::CheckDecompositionFromPy_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | value_type | , |
max_decomposition_cond_change_frac | |||
) |
MoochoPack::CheckDecompositionFromPy_Step::STANDARD_MEMBER_COMPOSITION_MEMBERS | ( | value_type | , |
max_cond | |||
) |
void MoochoPack::CheckDecompositionFromPy_Step::reset | ( | ) |
Call the reset initialization of all defaults.
Definition at line 64 of file MoochoPack_CheckDecompositionFromPy_Step.cpp.
bool MoochoPack::CheckDecompositionFromPy_Step::do_step | ( | Algorithm & | algo, |
poss_type | step_poss, | ||
IterationPack::EDoStepType | type, | ||
poss_type | assoc_step_poss | ||
) |
Definition at line 70 of file MoochoPack_CheckDecompositionFromPy_Step.cpp.
void MoochoPack::CheckDecompositionFromPy_Step::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 |
Definition at line 141 of file MoochoPack_CheckDecompositionFromPy_Step.cpp.