Pallas Solver  0.1
C++ Global Optimization Algorithms
brute.h
Go to the documentation of this file.
1 
12 // Pallas Solver
13 // Copyright 2015. All rights reserved.
14 //
15 // Redistribution and use in source and binary forms, with or without
16 // modification, are permitted provided that the following conditions are met:
17 //
18 // * Redistributions of source code must retain the above copyright notice,
19 // this list of conditions and the following disclaimer.
20 // * Redistributions in binary form must reproduce the above copyright notice,
21 // this list of conditions and the following disclaimer in the documentation
22 // and/or other materials provided with the distribution.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 // POSSIBILITY OF SUCH DAMAGE.
35 //
36 // Author: ryan.latture@gmail.com (Ryan Latture)
37 
38 #ifndef PALLAS_BRUTE_H
39 #define PALLAS_BRUTE_H
40 
41 #include "pallas/history_concept.h"
42 #include "pallas/types.h"
43 
44 namespace pallas {
45 
114  class Brute {
115  public:
119  struct Options {
126  local_minimizer_options = GradientLocalMinimizer::Options();
127  polish_output = false;
128  is_silent = true;
130  };
131 
135  GradientLocalMinimizer::Options local_minimizer_options;
136 
141 
145  bool is_silent;
146 
154  };
155 
160  struct Summary {
164  Summary();
165 
166  std::string BriefReport() const;
168  std::string FullReport() const;
170  TerminationType termination_type;
172  std::string message;
174  double final_cost;
176  GradientLocalMinimizer::Summary local_minimization_summary;
178  unsigned int num_parameters;
180  unsigned int num_iterations;
192  HistorySeries history;
193  };
194 
198  struct HistoryOutput {
199 
208  HistoryOutput(unsigned int iteration_number,
209  const Vector &current_solution,
210  double best_cost,
211  const Vector &best_solution)
212  : iteration_number(iteration_number),
213  current_solution(current_solution),
214  best_cost(best_cost),
215  best_solution(best_solution) {}
216  unsigned int iteration_number;
218  double best_cost;
220  };
221 
232  struct ParameterRange {
233 
238  ParameterRange() : start(0), stop(0), size(0) {};
239 
248  ParameterRange(double start, double stop, int size)
249  : start(start), stop(stop), size(size) {};
250 
251  double start;
252  double stop;
253  int size;
254  };
255 
259  Brute() {};
260 
272  void Solve(const Brute::Options options,
273  const GradientProblem& problem,
274  const std::vector<Brute::ParameterRange> &parameter_ranges,
275  double* parameters,
276  Brute::Summary *global_summary);
277 
278  private:
285  std::vector<Vector> expand_parameter_ranges_(const std::vector<Brute::ParameterRange> &parameter_ranges);
286 
293  std::vector<Vector> build_permutations_(const std::vector<Vector> &expanded_ranges);
294  };
295 
307  void Solve(const Brute::Options options,
308  const GradientProblem& problem,
309  const std::vector<Brute::ParameterRange> &parameter_ranges,
310  double* parameters,
311  Brute::Summary *global_summary);
312 
319  void dump(const Brute::HistoryOutput &h, HistoryWriter& writer);
320 
321 } // namespace pallas
322 
323 #endif // PALLAS_BRUTE_H
double local_minimization_time_in_seconds
Definition: brute.h:184
TerminationType termination_type
Definition: brute.h:170
bool is_silent
Definition: brute.h:145
GradientLocalMinimizer::Summary local_minimization_summary
Definition: brute.h:176
Vector best_solution
Definition: brute.h:219
unsigned int history_save_frequency
Definition: brute.h:153
Definition: basinhopping.h:51
HistorySeries history
Definition: brute.h:192
ParameterRange()
Default constructor.
Definition: brute.h:238
double total_time_in_seconds
Definition: brute.h:182
double stop
Definition: brute.h:252
bool polish_output
Definition: brute.h:140
ParameterRange(double start, double stop, int size)
Constructor.
Definition: brute.h:248
double best_cost
Definition: brute.h:218
Contains a summary of the optimization.
Definition: brute.h:160
Options()
Default constructor.
Definition: brute.h:125
bool was_polished
Definition: brute.h:190
Minimizes an objective function by brute force, trying all possible combinations of specified paramet...
Definition: brute.h:114
double cost_evaluation_time_in_seconds
Definition: brute.h:188
Range of values to test for the ith degree of freedom.
Definition: brute.h:232
Definition: brute.h:119
GradientLocalMinimizer::Options local_minimizer_options
Definition: brute.h:130
unsigned int num_parameters
Definition: brute.h:178
unsigned int iteration_number
Definition: brute.h:216
Stores information about the state of the system for at a given iteration number. ...
Definition: brute.h:198
void Solve(const Brute::Options options, const GradientProblem &problem, const std::vector< Brute::ParameterRange > &parameter_ranges, double *parameters, Brute::Summary *global_summary)
Minimizes the specified gradient problem.
Definition: brute.cc:119
Vector current_solution
Definition: brute.h:217
int size
Definition: brute.h:253
Brute()
Default constructor.
Definition: brute.h:259
unsigned int num_iterations
Definition: brute.h:180
double permutation_build_time_in_seconds
Definition: brute.h:186
void dump(const Basinhopping::HistoryOutput &h, HistoryWriter &writer)
Dumps the system state contained in the history output into the stream contained by the writer...
Definition: basinhopping.cc:323
std::string message
Definition: brute.h:172
double final_cost
Definition: brute.h:174
HistoryOutput(unsigned int iteration_number, const Vector &current_solution, double best_cost, const Vector &best_solution)
Constructor.
Definition: brute.h:208
double start
Definition: brute.h:249