IMP  2.0.0
The Integrative Modeling Platform
QuasiNewton.h
Go to the documentation of this file.
1 /**
2  * \file IMP/gsl/QuasiNewton.h
3  * \brief A GSL-based Quasi-Newton optimizer
4  *
5  * Copyright 2007-2013 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPGSL_QUASI_NEWTON_H
9 #define IMPGSL_QUASI_NEWTON_H
10 
11 #include <IMP/gsl/gsl_config.h>
12 
13 #include "GSLOptimizer.h"
14 
15 IMPGSL_BEGIN_NAMESPACE
16 
17 //! A quasi-Newton optimizer taken from GSL
18 /** \untested{QuasiNewton}
19  */
20 class IMPGSLEXPORT QuasiNewton: public GSLOptimizer
21 {
22  double initial_step_, line_step_, min_gradient_;
23 public:
24  QuasiNewton(Model *m=nullptr);
25 
26  // default 0.01
27  void set_initial_step(double length) {
28  IMP_USAGE_CHECK(length >0 && length <= 4,
29  "The initial step is relative to the rescaled attributes"
30  << " and so should not be much larger than 1.");
31  initial_step_=length;
32  }
33 
34  // default 0.01
35  void set_line_step(double d) {
36  IMP_USAGE_CHECK(d >0 && d <= 4,
37  "The minimum size is relative to the rescaled attributes"
38  << " and so should not be much larger than 1 "
39  << "(and must be non-zero).");
40  line_step_=d;
41  }
42 
43  // default 0.001
44  void set_minimum_gradient(double d) {
45  IMP_USAGE_CHECK(d >0 && d <= 1, "The minimum gradient is relative.");
46  min_gradient_=d;
47  }
48 
50 
51 };
52 
53 
54 IMPGSL_END_NAMESPACE
55 
56 #endif /* IMPGSL_QUASI_NEWTON_H */