Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

ShiftedLVMMMinimizer Class Reference
[Energy Minimizer]

Shifted limited-memory variable metric methods minimizer. More...

#include <shiftedLVMM.h>

Inheritance diagram for ShiftedLVMMMinimizer:

EnergyMinimizer List of all members.

Public Types

Enums
enum  UpdateMethod { RANK_1 = 1, RANK_2 = 2 }
 The different variationally derived methods implemented. More...
enum  CorrectionParameter {
  UNIT_VALUE = 1, BALANCING_VALUE = 2, SQUARE_ROOT = 3, GEOMETRIC_MEAN = 4,
  RATIO_OF_SHIFT_PARAMS = 5
}
 The different correction parameters implemented. More...

Public Member Functions

Constructors and Destructors
 ShiftedLVMMMinimizer ()
 Default constructor.
 ShiftedLVMMMinimizer (ForceField &force_field)
 Constructor expecting a valid force field.
 ShiftedLVMMMinimizer (ForceField &force_field, SnapShotManager *ssm)
 Constructor expecting a valid force field and a snapshot manager.
 ShiftedLVMMMinimizer (ForceField &force_field, SnapShotManager *ssm, const Options &options)
 Constructor expecting a valid force field, a snapshot manager and options.
 ShiftedLVMMMinimizer (ForceField &force_field, const Options &options)
 Constructor expecting a valid force field and options.
 ShiftedLVMMMinimizer (const ShiftedLVMMMinimizer &rhs)
 Copy constructor.
virtual ~ShiftedLVMMMinimizer ()
 Destructor.
Assignments
const ShiftedLVMMMinimizeroperator= (const ShiftedLVMMMinimizer &rhs)
 Assignment operator.
Setup methods. They do all necessary preparations.
virtual bool specificSetup ()
 Specific setup.
Accessors
void setUpdateMethod (UpdateMethod updt)
 Set explicitly the update method.
UpdateMethod getUpdateMethod () const
 Return the update method.
void setCorrectionParameter (CorrectionParameter corr)
 Set explicitly the correction parameter.
CorrectionParameter getCorrectionParameter () const
 Return the correction parameter.
void setMaxNumOfColumns (Size num)
 Set explicitly the maximum number of columns of the factor of the shifted inverse hessian approximation.
Size getMaxNumOfColumns () const
 Return the maximum number of columns of the factor of the shifted inverse hessian approximation.
virtual double findStep ()
 Calculate the next step.
virtual void updateDirection ()
 Update the shifted inverse hessian approximation.
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.
bool first_iter_
 Is this an initial first iteration?
Size number_of_atoms_
 Number of movable atoms.
Size max_number_of_cols_
 Maximum number of columns of the factor of the shifted inverse hessian approximation.
Size curr_number_of_cols_
 Current number of columns of the factor of the shifted inverse hessian approximation.
Size updt_method_
 Update method.
Size corr_par_
 Correction parameter.
double prev_shift_val_
 Shift value of the previous iteration.
vector< Vector3shift_s_
 Shifted previous step.
vector< Vector3grad_diff_
 Current gradient difference.
vector< float > updt_u_
 Needed vector for the update.
vector< float > updt_v_
 Needed vector for the update.
vector< Vector3shifted_direction_
 Direction of the shifted step, i. e. $-U_k \cdot U_k^T \cdot g_k$.
vector< Vector3hess_factor_
 Factor of the shifted inverse hessian approximation in column order, $U_k$ in [3].
vector< Vector3initial_atoms_
 Positions of the movable atoms when we start an iteration.

Detailed Description

Shifted limited-memory variable metric methods minimizer.

A minimizer for geometry optimization based upon the shifted limited-memory variable metric methods proposed in

[1] Vlcek J., Luksan L.. New variable metric methods for unconstrained minimization covering the large-scale case. Report V-876, Prague, ICS AS CR, 2002.

[2] Vlcek J., Luksan L.. Additional properties of shifted variable metric methods. Report V-899, Prague, ICS AS CR, 2004.

[3] Vlcek J., Luksan L.. Shifted limited-memory variable metric methods for large-scale unconstrained optimization. Journal of Computational and Applied Mathematics 186 (2), pp. 365-390.


Member Enumeration Documentation

enum ShiftedLVMMMinimizer::CorrectionParameter
 

The different correction parameters implemented.

Enumeration values:
UNIT_VALUE  Unit value, i.e.

rho = 1.0.

BALANCING_VALUE  Balancing value.

SQUARE_ROOT  Square root.

GEOMETRIC_MEAN  Geometric mean.

RATIO_OF_SHIFT_PARAMS  Ratio of shift parameters.

enum ShiftedLVMMMinimizer::UpdateMethod
 

The different variationally derived methods implemented.

Enumeration values:
RANK_1  Rank 1 variationally derived method.

RANK_2  Rank 2 variationally derived method.


Constructor & Destructor Documentation

ShiftedLVMMMinimizer::ShiftedLVMMMinimizer  ) 
 

Default constructor.

virtual ShiftedLVMMMinimizer::~ShiftedLVMMMinimizer  )  [virtual]
 

Destructor.


Member Function Documentation

virtual double ShiftedLVMMMinimizer::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 EnergyMinimizer.

Size ShiftedLVMMMinimizer::getMaxNumOfColumns  )  const
 

Return the maximum number of columns of the factor of the shifted inverse hessian approximation.

virtual bool ShiftedLVMMMinimizer::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 EnergyMinimizer.

void ShiftedLVMMMinimizer::setMaxNumOfColumns Size  num  ) 
 

Set explicitly the maximum number of columns of the factor of the shifted inverse hessian approximation.

virtual void ShiftedLVMMMinimizer::updateDirection  )  [virtual]
 

Update the shifted inverse hessian approximation.

Afterwards, compute the search direction.

Reimplemented from EnergyMinimizer.


Member Data Documentation

Size ShiftedLVMMMinimizer::curr_number_of_cols_ [protected]
 

Current number of columns of the factor of the shifted inverse hessian approximation.

vector<Vector3> ShiftedLVMMMinimizer::grad_diff_ [protected]
 

Current gradient difference.

vector<Vector3> ShiftedLVMMMinimizer::hess_factor_ [protected]
 

Factor of the shifted inverse hessian approximation in column order, $U_k$ in [3].

vector<Vector3> ShiftedLVMMMinimizer::initial_atoms_ [protected]
 

Positions of the movable atoms when we start an iteration.

This is used to reduce slightly rounding errors

Size ShiftedLVMMMinimizer::max_number_of_cols_ [protected]
 

Maximum number of columns of the factor of the shifted inverse hessian approximation.

Size ShiftedLVMMMinimizer::number_of_atoms_ [protected]
 

Number of movable atoms.

double ShiftedLVMMMinimizer::prev_shift_val_ [protected]
 

Shift value of the previous iteration.

vector<Vector3> ShiftedLVMMMinimizer::shift_s_ [protected]
 

Shifted previous step.

vector<Vector3> ShiftedLVMMMinimizer::shifted_direction_ [protected]
 

Direction of the shifted step, i. e. $-U_k \cdot U_k^T \cdot g_k$.

vector<float> ShiftedLVMMMinimizer::updt_u_ [protected]
 

Needed vector for the update.

vector<float> ShiftedLVMMMinimizer::updt_v_ [protected]
 

Needed vector for the update.