Package ffx.algorithms.optimize
Class MinimizeOpenMM
java.lang.Object
ffx.algorithms.optimize.Minimize
ffx.algorithms.optimize.MinimizeOpenMM
- All Implemented Interfaces:
Terminatable
,OptimizationListener
Given a Context, this class searches for a new set of particle positions that represent
a local minimum of the potential energy. The search is performed with the L-BFGS algorithm.
Distance constraints are enforced during minimization by adding a harmonic restraining
force to the potential function. The strength of the restraining force is steadily increased
until the minimum energy configuration satisfies all constraints to within the tolerance
specified by the Context's Integrator.
Energy minimization is done using the force groups defined by the Integrator. If you have called setIntegrationForceGroups() on it to restrict the set of forces used for integration, only the energy of the included forces will be minimized.
- Since:
- 1.0
- Author:
- Michael J. Schnieders
-
Nested Class Summary
Nested classes/interfaces inherited from class ffx.algorithms.optimize.Minimize
Minimize.MinimizationEngine
-
Field Summary
Fields inherited from class ffx.algorithms.optimize.Minimize
algorithmListener, DEFAULT_LBFGS_VECTORS, done, energy, grad, molecularAssembly, n, nSteps, potential, scaling, status, terminate, time, x
-
Constructor Summary
ConstructorsConstructorDescriptionMinimizeOpenMM
(MolecularAssembly molecularAssembly) MinimizeOpenMM constructor.MinimizeOpenMM
(MolecularAssembly molecularAssembly, OpenMMEnergy openMMEnergy) MinimizeOpenMM constructor.MinimizeOpenMM
(MolecularAssembly molecularAssembly, OpenMMEnergy openMMEnergy, AlgorithmListener algorithmListener) MinimizeOpenMM constructor. -
Method Summary
Modifier and TypeMethodDescriptionminimize
(double eps, int maxIterations) minimizeminimize
(int m, double eps, int maxIterations) Note the OpenMM L-BFGS minimizer does not accept the parameter "m" for the number of previous steps used to estimate the Hessian.boolean
optimizationUpdate
(int iteration, int nBFGS, int functionEvaluations, double rmsGradient, double rmsCoordinateChange, double energy, double energyChange, double angle, LineSearch.LineSearchResult lineSearchResult) MinimizeOpenMM does not support the OptimizationListener interface.Methods inherited from class ffx.algorithms.optimize.Minimize
defaultEngine, getEnergy, getIterations, getRMSGradient, getStatus, minimize, minimize, minimizeFactory, terminate
-
Constructor Details
-
MinimizeOpenMM
MinimizeOpenMM constructor.- Parameters:
molecularAssembly
- the MolecularAssembly to optimize.
-
MinimizeOpenMM
MinimizeOpenMM constructor.- Parameters:
molecularAssembly
- the MolecularAssembly to optimize.openMMEnergy
- the OpenMM potential energy function.
-
MinimizeOpenMM
public MinimizeOpenMM(MolecularAssembly molecularAssembly, OpenMMEnergy openMMEnergy, AlgorithmListener algorithmListener) MinimizeOpenMM constructor.- Parameters:
molecularAssembly
- the MolecularAssembly to optimize.openMMEnergy
- the OpenMM potential energy function.algorithmListener
- report progress using the listener.
-
-
Method Details
-
minimize
Note the OpenMM L-BFGS minimizer does not accept the parameter "m" for the number of previous steps used to estimate the Hessian. -
minimize
minimize -
optimizationUpdate
public boolean optimizationUpdate(int iteration, int nBFGS, int functionEvaluations, double rmsGradient, double rmsCoordinateChange, double energy, double energyChange, double angle, LineSearch.LineSearchResult lineSearchResult) MinimizeOpenMM does not support the OptimizationListener interface.- Specified by:
optimizationUpdate
in interfaceOptimizationListener
- Overrides:
optimizationUpdate
in classMinimize
- Parameters:
iteration
- Number of iterations.nBFGS
- Number of L-BFGS correction vectors.functionEvaluations
- Number of function evaluations.rmsGradient
- RMS gradient at current solution.rmsCoordinateChange
- RMS coordinate change at current solution.energy
- Function value at current solution.energyChange
- Change in the function value compared to the previous solution.angle
- Current angle between gradient and search direction.lineSearchResult
- Result of the line search (null at iteration == 0).- Returns:
- A return value of false will terminate the optimization.
- Since:
- 1.0
-