#include <conjugateGradient.h>
Classes |
|
struct | Default |
Defaults for all options.
More... |
|
struct | Option |
Options names.
More... |
|
Public Types |
|
Enums
|
|
enum | UpdateMethod { POLAK_RIBIERE = 1, FLETCHER_REEVES = 2, SHANNO = 3 } |
The different conjugate gradient
methods implemented.
More... |
|
Public Member Functions |
|
Constructors and Destructors
|
|
ConjugateGradientMinimizer () | |
Default
constructor. |
|
ConjugateGradientMinimizer (ForceField &force_field) | |
Constructor expecting a valid force
field. |
|
ConjugateGradientMinimizer (ForceField &force_field, SnapShotManager *ssm) | |
Constructor expecting a valid force
field and a snapshot manager. |
|
ConjugateGradientMinimizer (ForceField &force_field, SnapShotManager *ssm, const Options &options) | |
Constructor expecting a valid force
field, a snapshot manager and options. |
|
ConjugateGradientMinimizer (ForceField &force_field, const Options &options) | |
Constructor expecting a valid force
field and options. |
|
ConjugateGradientMinimizer (const ConjugateGradientMinimizer &rhs) | |
Copy constructor. |
|
virtual | ~ConjugateGradientMinimizer () |
Destructor. |
|
Assignments
|
|
const ConjugateGradientMinimizer & | operator= (const ConjugateGradientMinimizer &rhs) |
Assignment operator. |
|
Setup methods. They do all necessary preparations.
|
|
virtual bool | specificSetup () |
Specific setup. |
|
Accessors
|
|
void | setUpdateMethod (UpdateMethod method) |
Set explicitly the criterion used
for updateDirection. |
|
UpdateMethod | getUpdateMethod () const |
Returns the current method for
updateDirection. |
|
virtual double | findStep () |
Calculate the next step. |
|
virtual void | updateDirection () |
Update the search direction.
|
|
virtual bool | minimize (Size iterations=0, bool resume=false) |
Minimize the energy of the system.
|
|
Protected Attributes |
|
Protected Attributes
|
|
LineSearch | line_search_ |
The line search. |
|
Gradient | unscaled_direction_ |
Unscaled last search
direction. |
|
Size | number_of_atoms_ |
Number of movable atoms. |
|
Size | updt_method_ |
Update method used for the
CG. |
|
bool | first_iter_ |
Is this the (initial) first
iteration? |
|
double | old_gtg_ |
where is the gradient
of the last iteration |
|
vector< Vector3 > | a_i_ |
Variable needed for the Shanno
direction calculation. |
|
vector< Vector3 > | b_i_ |
Variable needed for the Shanno
direction calculation. |
|
vector< Vector3 > | p_t_ |
Variable needed for the Shanno
direction calculation. |
|
vector< Vector3 > | y_t_ |
Variable needed for the Shanno
direction calculation. |
|
vector< Vector3 > | p_i_ |
Variable needed for the Shanno
direction calculation. |
|
vector< Vector3 > | y_i_ |
Variable needed for the Shanno
direction calculation. |
|
double | D_1_ |
Variable needed for the Shanno
direction calculation. |
|
double | D_4_ |
Variable needed for the Shanno
direction calculation. |
|
Size | restart_frequency_ |
Frequency for restarts. |
|
Size | last_restart_iter_ |
We count the iterations since the
last restart. |
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
The different conjugate gradient methods implemented.
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.
Reimplemented from BALL::EnergyMinimizer.
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.
iterations | the maximum number of iterations | |
resume | true to resume a previous run |
Reimplemented from BALL::EnergyMinimizer.
void BALL::ConjugateGradientMinimizer::setUpdateMethod | ( | UpdateMethod | method | ) |
Set explicitly the criterion used for updateDirection.
If the method is not recognized, this function fails.
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.
Size
BALL::ConjugateGradientMinimizer::last_restart_iter_
[protected] |
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.