BALL::StrangLBFGSMinimizer Class Reference
[Energy Minimizer]

#include <BALL/MOLMEC/MINIMIZATION/strangLBFGS.h>

Inheritance diagram for BALL::StrangLBFGSMinimizer:
BALL::EnergyMinimizer

List of all members.


Classes

struct  Default
struct  Option

Public Member Functions

Constructors and Destructors
 StrangLBFGSMinimizer ()
 StrangLBFGSMinimizer (ForceField &force_field)
 StrangLBFGSMinimizer (ForceField &force_field, SnapShotManager *ssm)
 StrangLBFGSMinimizer (ForceField &force_field, SnapShotManager *ssm, const Options &options)
 StrangLBFGSMinimizer (ForceField &force_field, const Options &options)
 StrangLBFGSMinimizer (const StrangLBFGSMinimizer &rhs)
virtual ~StrangLBFGSMinimizer ()
Assignments
const StrangLBFGSMinimizeroperator= (const StrangLBFGSMinimizer &rhs)
Setup methods. They do all necessary preparations.
virtual bool specificSetup ()
Accessors
void setMaxNumOfStoredVectPairs (Size num)
Size getMaxNumOfStoredVectPairs () const
void setImprovedFlag (bool flag)
bool getImprovedFlag () const
virtual double findStep ()
virtual void updateDirection ()
virtual bool minimize (Size iterations=0, bool resume=false)

Protected Attributes

Protected Attributes
LineSearch line_search_
bool first_iter_
Size number_of_atoms_
Size max_num_of_vect_pairs_
Size curr_num_of_vect_pairs_
bool improved_
vector< floatrho_
vector< Vector3stored_s_
vector< Vector3stored_y_
vector< floatwork_val_
Size index_of_free_vect_
std::vector< Vector3initial_atoms_

Detailed Description

Limited-memory BFGS minimizer based on the Strang recurrence. A minimizer for geometry optimization based on the limited-memory BFGS method proposed in

[1] Nocedal J.: Updating quasi-Newton matrices with limited storage. Math. Comp. 35 (1980) 773-782.

[2] Liu D.C., Nocedal J.: On the limited memory BFGS method for large scale optimization. Math. Programming 45 (1989) 503-528.

If the 'improved' option is set, ideas proposed in

[3] Mehiddin Al-Baali: Improved Hessian approximations for the limited memory BFGS method. Numerical Algorithms 22 (1999) 99-112

are adopted.


Constructor & Destructor Documentation

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer (  ) 

Default constructor.

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer ( ForceField force_field  ) 

Constructor expecting a valid force field

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer ( ForceField force_field,
SnapShotManager ssm 
)

Constructor expecting a valid force field and a snapshot manager

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer ( ForceField force_field,
SnapShotManager ssm,
const Options options 
)

Constructor expecting a valid force field, a snapshot manager and options

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer ( ForceField force_field,
const Options options 
)

Constructor expecting a valid force field and options

BALL::StrangLBFGSMinimizer::StrangLBFGSMinimizer ( const StrangLBFGSMinimizer rhs  ) 

Copy constructor

virtual BALL::StrangLBFGSMinimizer::~StrangLBFGSMinimizer (  )  [virtual]

Destructor.


Member Function Documentation

virtual double BALL::StrangLBFGSMinimizer::findStep (  )  [virtual]

Calculate the next step. First, this method updates the model. Second, it performs a line search along the calculated direction afterwards.

Returns:
double $\geq 0$ if the line search found an acceptable solution, otherwise -1.
See also:
EnergyMinimizer::findStep

Reimplemented from BALL::EnergyMinimizer.

bool BALL::StrangLBFGSMinimizer::getImprovedFlag (  )  const

Return the improved flag

Size BALL::StrangLBFGSMinimizer::getMaxNumOfStoredVectPairs (  )  const

Return the maximum number of stored vector pairs

virtual bool BALL::StrangLBFGSMinimizer::minimize ( Size  iterations = 0,
bool  resume = false 
) [virtual]

Minimize the energy of the system. This method executes at most iterations minimization steps. If the number of iterations is not given, the number specified in the options is taken.

Parameters:
iterations the maximum number of iterations
resume true to resume a previous run
See also:
EnergyMinimizer::minimize

Reimplemented from BALL::EnergyMinimizer.

const StrangLBFGSMinimizer& BALL::StrangLBFGSMinimizer::operator= ( const StrangLBFGSMinimizer rhs  ) 

Assignment operator

void BALL::StrangLBFGSMinimizer::setImprovedFlag ( bool  flag  ) 

Set the improved flag

void BALL::StrangLBFGSMinimizer::setMaxNumOfStoredVectPairs ( Size  num  ) 

Set the maximum number of stored vector pairs

virtual bool BALL::StrangLBFGSMinimizer::specificSetup (  )  [virtual]

Specific setup

Reimplemented from BALL::EnergyMinimizer.

virtual void BALL::StrangLBFGSMinimizer::updateDirection (  )  [virtual]

Update the stored vector pairs, either by adding a new pair or if there is no space left by replacing the oldest pair. Compute the search direction afterwards by using the Strang recurrence formula (optional: with an improvement idea of Al-Baali).

Reimplemented from BALL::EnergyMinimizer.


Member Data Documentation

Current number of stored vector pairs.

Is this an initial first iteration?

Should the improved version be used?

Index of the vector pair which will be used for saving the data of the current step (usually by replacing old data).

Positions of movable atoms when starting an iteration. This is used to reduce slightly rounding errors

Maximum number of stored vector pairs.

Number of movable atoms.

Old and new scaling values. Also used in the Strang recurrence formula.

Stored former steps. Vectors stored in column order.

Stored former changes in gradients. Vectors stored in column order.

Temporarily used memory for saving scalars associated with the stored vector pairs.