MoochoPack : Framework for Large-Scale Optimization Algorithms  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
MoochoPack::CheckDecompositionFromPy_Step Class Reference

Check if the decomposition is going singular and if it is select a new decomposition. More...

#include <MoochoPack_CheckDecompositionFromPy_Step.hpp>

Inheritance diagram for MoochoPack::CheckDecompositionFromPy_Step:
Inheritance graph
[legend]

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
 

Detailed Description

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.

Constructor & Destructor Documentation

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.

Member Function Documentation

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

The documentation for this class was generated from the following files: