Check if the decomposition is going singular and if it is select a new decomposition.
More...
|
| 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...
|
|
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...
|
|
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.