IMP  2.2.1
The Integrative Modeling Platform
GSLOptimizer.h
Go to the documentation of this file.
1 /**
2  * \file IMP/gsl/GSLOptimizer.h
3  * \brief A base class for GSL-based optimizers
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPGSL_GSL_OPTIMIZER_H
9 #define IMPGSL_GSL_OPTIMIZER_H
10 
11 #include <IMP/gsl/gsl_config.h>
12 
13 #include <IMP/AttributeOptimizer.h>
14 #include <gsl/gsl_multimin.h>
15 
16 IMPGSL_BEGIN_NAMESPACE
17 
18 //! A base class for GSL-based optimizers
19 /** This class is a base class for the various GSL-based optimizers. It exposes
20  very little user functionality.
21  */
22 class IMPGSLEXPORT GSLOptimizer : public AttributeOptimizer {
23  double stop_score_;
24  mutable double best_score_;
25  mutable FloatIndexes fis_;
26 
27  public:
29 
30  virtual ~GSLOptimizer();
31 
32 #ifndef SWIG
33  using Optimizer::optimize;
34 #endif
35 
36  //! Stop the optimization if the score falls below this value
37  void set_stop_score(double d) { stop_score_ = d; }
38 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
39  gsl_vector *get_state() const;
40  void update_state(gsl_vector *x) const;
41  void write_state(const gsl_vector *x) const;
42 
43  double evaluate(const gsl_vector *v);
44  double evaluate_derivative(const gsl_vector *v, gsl_vector *df);
45  unsigned int get_dimension() const {
46  IMP_USAGE_CHECK(!fis_.empty(), "not initialized properly");
47  return fis_.size();
48  }
49  double optimize(unsigned int n, const gsl_multimin_fdfminimizer_type *t,
50  double step, double param, double min_gradient);
51 
52  double optimize(unsigned int n, const gsl_multimin_fminimizer_type *t,
53  double size, double max_size);
54 #endif
55 };
57 
58 IMPGSL_END_NAMESPACE
59 
60 #endif /* IMPGSL_GSL_OPTIMIZER_H */
A base class for GSL-based optimizers.
Definition: GSLOptimizer.h:22
void set_stop_score(double d)
Stop the optimization if the score falls below this value.
Definition: GSLOptimizer.h:37
#define IMP_USAGE_CHECK(expr, message)
A runtime test for incorrect usage of a class or method.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing sets of objects.
Import IMP/kernel/AttributeOptimizer.h in the namespace.
Class for storing model, its restraints, constraints, and particles.
Definition: kernel/Model.h:72