#include <conjugateGradient.h>
Inheritance diagram for ConjugateGradientMinimizer:
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.
|
|
Default constructor.
|
|
Destructor.
|
|
Calculate the next step. First, this method updates the model. Second, it performs a line search along the calculated direction afterwards.
Reimplemented from EnergyMinimizer. |
|
Returns the current method for updateDirection.
|
|
Minimize the energy of the system.
This method executes at most
Reimplemented from EnergyMinimizer. |
|
Set explicitly the criterion used for updateDirection. If the method is not recognized, this function fails. |
|
Update the search direction. This method updates the search direction. It uses the different conjugate gradient caculations dependend on the options. Reimplemented from EnergyMinimizer. |
|
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.
|
|
Frequency for restarts.
|