IMP
2.0.0
The Integrative Modeling Platform
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
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
49
IMP_OPTIMIZER
(
QuasiNewton
);
50
51
};
52
53
54
IMPGSL_END_NAMESPACE
55
56
#endif
/* IMPGSL_QUASI_NEWTON_H */