IMP
2.2.1
The Integrative Modeling Platform
|
Simple conjugate gradients optimizer. More...
#include <IMP/core/ConjugateGradients.h>
Inherits AttributeOptimizer.
Public Member Functions | |
ConjugateGradients (kernel::Model *m, std::string name="ConjugateGradients%1%") | |
virtual Float | do_optimize (unsigned int max_steps) |
virtual std::string | get_type_name () const |
virtual ::IMP::base::VersionInfo | get_version_info () const |
void | set_gradient_threshold (Float t) |
Set the threshold for the minimum gradient. | |
void | set_max_change (Float t) |
Limit how far anything can change each time step. | |
Algorithm is as per Shanno and Phua, ACM Transactions On Mathematical Software 6 (December 1980), 618-622
Conjugate gradients optimization is sensitive to the scales of the derivatives of the various attributes being optimized. By default, the scales are estimated from the range of values found for the attribute upon initialization. These estimates can be viewed either by calling kernel::Model::get_range(my_float_key) or by turning on TERSE logging and looking at logged messages. If this estimate does not accurately reflect the scale, then you can use kernel::Model::set_range to set a more accurate range for the parameters.
Definition at line 33 of file core/ConjugateGradients.h.