BALL::ConjugateGradientMinimizer Class Reference
[Energy Minimizer]

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

Inheritance diagram for BALL::ConjugateGradientMinimizer:
BALL::EnergyMinimizer

List of all members.


Classes

struct  Default
struct  Option

Public Types

Enums
enum  UpdateMethod { POLAK_RIBIERE = 1, FLETCHER_REEVES = 2, SHANNO = 3 }

Public Member Functions

Constructors and Destructors
 ConjugateGradientMinimizer ()
 ConjugateGradientMinimizer (ForceField &force_field)
 ConjugateGradientMinimizer (ForceField &force_field, SnapShotManager *ssm)
 ConjugateGradientMinimizer (ForceField &force_field, SnapShotManager *ssm, const Options &options)
 ConjugateGradientMinimizer (ForceField &force_field, const Options &options)
 ConjugateGradientMinimizer (const ConjugateGradientMinimizer &rhs)
virtual ~ConjugateGradientMinimizer ()
Assignments
const ConjugateGradientMinimizeroperator= (const ConjugateGradientMinimizer &rhs)
Setup methods. They do all necessary preparations.
virtual bool specificSetup ()
Accessors
void setUpdateMethod (UpdateMethod method)
UpdateMethod getUpdateMethod () const
virtual double findStep ()
virtual void updateDirection ()
virtual bool minimize (Size iterations=0, bool resume=false)

Protected Attributes

Protected Attributes
LineSearch line_search_
Gradient unscaled_direction_
Size number_of_atoms_
Size updt_method_
bool first_iter_
double old_gtg_
vector< Vector3a_i_
vector< Vector3b_i_
vector< Vector3p_t_
vector< Vector3y_t_
vector< Vector3p_i_
vector< Vector3y_i_
double D_1_
double D_4_
Size restart_frequency_
Size last_restart_iter_

Detailed Description

A minimizer for geometry optimization based on different conjugate gradient (CG) algorithms. See

[1] Fletcher, R. and Reeves, C.M. "Function Minimization by Conjugate Gradients" Comp. J., 7, 149-154, 1964

[2] David Shanno "Conjugate Gradient Methods With Inexact Searches" Mathematics of Operations Research, Vol. 3, No. 3, August 1978, pp. 244-256

[3] S. Watowich et. al "A Stable Rapidly Converging Conjugate Gradient Method for Energy Minimization" Journal of Computational Chemistry, Vol. 9, No. 6, pp. 650-661 (1988)

[4] M.J.D. Powell "Convergence properties of algorithms for nonlinear optimization" Report No. DAMPT 1985/NA1, University of Cambridge, 1985

[5] D.F. Shanno "Globally convergent conjugate gradient algorithms" Mathematical Programming 33 (1985), pp. 61-67


Member Enumeration Documentation

The different conjugate gradient methods implemented.

See also:
updateDirection for details on the implementation and references
Enumerator:
POLAK_RIBIERE 

Polak-Ribiere method

FLETCHER_REEVES 

Fletcher-Reeves method

SHANNO 

Shanno


Constructor & Destructor Documentation

BALL::ConjugateGradientMinimizer::ConjugateGradientMinimizer (  ) 

Default constructor.

BALL::ConjugateGradientMinimizer::ConjugateGradientMinimizer ( ForceField force_field  ) 

Constructor expecting a valid force field

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

Constructor expecting a valid force field and a snapshot manager

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

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

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

Constructor expecting a valid force field and options

BALL::ConjugateGradientMinimizer::ConjugateGradientMinimizer ( const ConjugateGradientMinimizer rhs  ) 

Copy constructor

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

Destructor.


Member Function Documentation

virtual double BALL::ConjugateGradientMinimizer::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.

UpdateMethod BALL::ConjugateGradientMinimizer::getUpdateMethod (  )  const

Returns the current method for updateDirection.

virtual bool BALL::ConjugateGradientMinimizer::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 ConjugateGradientMinimizer& BALL::ConjugateGradientMinimizer::operator= ( const ConjugateGradientMinimizer rhs  ) 

Assignment operator

void BALL::ConjugateGradientMinimizer::setUpdateMethod ( UpdateMethod  method  ) 

Set explicitly the criterion used for updateDirection. If the method is not recognized, this function fails.

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

Specific setup

Reimplemented from BALL::EnergyMinimizer.

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

Update the search direction. This method updates the search direction. It uses the different conjugate gradient caculations dependend on the options.

Reimplemented from BALL::EnergyMinimizer.


Member Data Documentation

Variable needed for the Shanno direction calculation

Variable needed for the Shanno direction calculation

Variable needed for the Shanno direction calculation

Variable needed for the Shanno direction calculation

Is this the (initial) first iteration?

We count the iterations since the last restart. There are other necessities for a restart so the iteration counter may not coincide (by modulo) with the restart frequency.

Number of movable atoms.

$g^T \cdot g$ where $g$ is the gradient of the last iteration

Variable needed for the Shanno direction calculation

Variable needed for the Shanno direction calculation

Frequency for restarts.

Unscaled last search direction

Update method used for the CG

Variable needed for the Shanno direction calculation

Variable needed for the Shanno direction calculation