Pallas Solver  0.1
C++ Global Optimization Algorithms
step_function.h
1 // Pallas Solver
2 // Copyright 2015. All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // * Redistributions of source code must retain the above copyright notice,
8 // this list of conditions and the following disclaimer.
9 // * Redistributions in binary form must reproduce the above copyright notice,
10 // this list of conditions and the following disclaimer in the documentation
11 // and/or other materials provided with the distribution.
12 //
13 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
17 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23 // POSSIBILITY OF SUCH DAMAGE.
24 //
25 // Author: ryan.latture@gmail.com (Ryan Latture)
26 
27 #ifndef PALLAS_STEP_FUNCTOR_H
28 #define PALLAS_STEP_FUNCTOR_H
29 
30 #include "pallas/types.h"
32 #include "pallas/scoped_ptr.h"
33 
34 namespace pallas {
35 
41  class StepFunction {
42  public:
46  virtual ~StepFunction() {}
47 
55  virtual void Step(double* x, unsigned int num_parameters) = 0;
56  };
57 
58 
65  public:
71  DefaultStepFunction(double step_size);
72 
81  void Step(double* x, unsigned int num_parameters);
82 
83  private:
88  };
89 
100 
101  public:
111  BoundedStepFunction(double step_size,
112  const double* upper_bounds,
113  const double* lower_bounds,
114  unsigned int num_parameters);
115 
126  void Step(double* x, unsigned int num_parameters);
127 
128  private:
133 
134  Vector upper_bounds_;
135  Vector lower_bounds_;
136  };
137 } // namespace pallas
138 
139 #endif //PALLAS_STEP_FUNCTOR_H
Interface to produce randomized candidate solutions.
Definition: step_function.h:41
Definition: basinhopping.h:51
virtual void Step(double *x, unsigned int num_parameters)=0
Produces a randomized candidate solution by modifying the input variable x.
A new candidate solution is generated between upper and lower bounds. Each degree of freedom in the c...
Definition: step_function.h:99
Definition: scoped_ptr.h:45
Simple candidate generator that modifies the input by a random amount between +/- step_size...
Definition: step_function.h:64
virtual ~StepFunction()
Destructor.
Definition: step_function.h:46