Unfit  3.1.1
Data fitting and optimization software
Options.hpp
1 // Unfit: Data fitting and optimization software
2 //
3 // Copyright (C) 2012- Dr Martin Buist & Dr Alberto Corrias
4 // Contacts: martin.buist _at_ nus.edu.sg; alberto _at_ nus.edu.sg
5 //
6 // See the 'Contributors' file for a list of those who have contributed
7 // to this work.
8 //
9 // This program is free software: you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation, either version 3 of the License, or
12 // (at your option) any later version.
13 //
14 // This program is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 //
22 #ifndef UNFIT_INCLUDE_OPTIONS_HPP_
23 #define UNFIT_INCLUDE_OPTIONS_HPP_
24 
25 namespace Unfit
26 {
36 class Options
37 {
38  public:
42  Options();
43 
47  void ResetOptions();
48 
55  double GetCostTolerance() const noexcept;
56 
64  void SetCostTolerance(double tolerance);
65 
75  double GetDegenerateTolerance() const noexcept;
76 
87  void SetDegenerateTolerance(double tolerance);
88 
97  double GetGeometricTolerance() const noexcept;
98 
108  void SetGeometricTolerance(double tolerance);
109 
117  double GetAlpha() const noexcept;
118 
128  void SetAlpha(double alpha);
129 
137  double GetBeta() const noexcept;
138 
148  void SetBeta(double beta);
149 
159  double GetDelta() const noexcept;
160 
172  void SetDelta(double delta);
173 
181  double GetGamma() const noexcept;
182 
192  void SetGamma(double gamma);
193 
202  double GetEpsilon() const noexcept;
203 
212  void SetEpsilon(double epsilon);
213 
222  void SetTau(double tau);
223 
231  double GetTau() const noexcept;
232 
240  unsigned GetMaxFunctionEvaluations() const noexcept;
241 
249  void SetMaxFunctionEvaluations(unsigned max_func_evals);
250 
258  unsigned GetMaxIterations() const noexcept;
259 
267  void SetMaxIterations(unsigned max_iters);
268 
283  void GetNelderMeadStepSizes(double &alpha, double &beta, double &delta,
284  double &gamma);
285 
301  void SetNelderMeadStepSizes(double alpha, double beta, double delta,
302  double gamma);
303 
312  unsigned GetOutputLevel() const noexcept;
313 
322  void SetOutputLevel(unsigned output_level);
323 
332  unsigned GetCostNormType() const noexcept;
333 
344  void SetCostNormType(unsigned cost_norm_type);
345 
352  bool GetUseAdaptiveParameters() const noexcept;
353 
362  void SetUseAdaptiveParameters(bool adaptive);
363 
370  unsigned GetPopulationSize() const noexcept;
371 
380  void SetPopulationSize(unsigned pop_size);
381 
390  bool GetUserSetPopulationSize() const noexcept;
391 
398  unsigned GetRandomSeed() const noexcept;
399 
407  void SetRandomSeed(unsigned seed);
408 
415  unsigned GetStrategy() const noexcept;
416 
425  void SetStrategy(unsigned strategy);
426 
433  double GetCrossOver() const noexcept;
434 
442  void SetCrossOver(double cross_over);
443 
450  double GetWeightingFactor() const noexcept;
451 
459  void SetWeightingFactor(double weighting_factor);
460 
467  bool GetAddInitialToPopulation() const noexcept;
468 
476  void SetAddInitialToPopulation(bool add_initial);
477 
484  bool GetUseBroydenUpdates() const noexcept;
485 
492  void SetUseBroydenUpdates(bool use_broyden);
493 
501  unsigned GetElitism() const noexcept;
502 
510  void SetElitism(unsigned elite);
511 
519  double GetSurvivalRate() const noexcept;
520 
532  void SetSurvivalRate(double rate);
533 
541  bool GetUseHardBounds() const noexcept;
542 
552  void SetUseHardBounds(bool use_hard_bounds);
553 
559  bool GetUserSetPopulation() const noexcept;
560 
566  void SetUserSetPopulation(bool has_set_population);
567 
574  bool GetUseMultiThreaded() const noexcept;
575 
583  void SetUseMultiThreaded(bool use_multi_threaded);
584 
592  double GetTemperature() const noexcept;
593 
600  void SetTemperature(double temperature);
601 
609  double GetStepReductionFactor() const noexcept;
610 
617  void SetStepReductionFactor(double step_factor);
618 
626  double GetTemperatureReductionFactor() const noexcept;
627 
634  void SetTemperatureReductionFactor(double temperature_factor);
635 
642  int GetNumberOfCycles() const noexcept;
643 
649  void SetNumberOfCycles(int num_cycles);
650 
657  int GetNumberOfTemperatureLoops() const noexcept;
658 
664  void SetNumberOfTemperatureLoops(int num_temperature_loops);
665 
666  private:
670  unsigned max_iterations_;
672  unsigned output_level_;
674  unsigned cost_norm_type_;
688  double alpha_;
693  double beta_;
699  double delta_;
701  double gamma_;
703  double epsilon_;
705  double tau_;
711  unsigned seed_;
713  unsigned strategy_;
717  double cross_over_;
719  unsigned elitism_;
749  double temperature_;
758 
760  static constexpr unsigned default_max_function_evaluations_ = 100000;
762  static constexpr unsigned default_max_iterations_ = 10000;
764  static constexpr unsigned default_output_level_ = 0;
766  static constexpr unsigned default_cost_norm_type_ = 2;
768  static constexpr double default_cost_tolerance_ = 1e-12;
770  static constexpr double default_degenerate_tolerance_ = 1e-8;
772  static constexpr double default_geometric_tolerance_ = 1e-4;
774  static constexpr double default_alpha_ = 1.0;
776  static constexpr double default_beta_ = 2.0;
778  static constexpr double default_delta_ = 0.5;
780  static constexpr double default_epsilon_ = 1e-12;
782  static constexpr double default_gamma_ = 0.5;
784  static constexpr double default_tau_ = 1e-3;
786  static constexpr bool default_use_adaptive_ = false;
788  static constexpr unsigned default_population_size_ = 20;
790  static constexpr unsigned default_seed_ = 0;
792  static constexpr unsigned default_strategy_ = 1;
794  static constexpr double default_weighting_factor_ = 0.8;
796  static constexpr double default_cross_over_ = 0.9;
798  static constexpr unsigned default_elitism_ = 1;
800  static constexpr double default_survival_rate_ = 0.5;
802  static constexpr bool default_user_has_set_population_size_ = false;
804  static constexpr bool default_user_has_set_population_ = false;
806  static constexpr bool default_use_broyden_updates_ = true;
808  static constexpr bool default_add_initial_to_population_ = false;
810  static constexpr bool default_use_hard_bounds_ = false;
812  static constexpr bool default_use_multi_threaded_ = false;
814  static constexpr double default_temperature_ = 1000.0;
816  static constexpr double default_step_reduction_factor_ = 0.9;
818  static constexpr double default_temperature_reduction_factor_ = 0.5;
820  static constexpr int default_num_cycles_ = 20;
822  static constexpr int default_num_temperature_loops_ = 5;
823 };
824 
825 } // namespace Unfit
826 
827 #endif
double GetTemperature() const noexcept
Definition: Options.cpp:395
double GetEpsilon() const noexcept
Definition: Options.cpp:170
bool GetUseBroydenUpdates() const noexcept
Definition: Options.cpp:345
int num_cycles_
Definition: Options.hpp:755
static constexpr bool default_add_initial_to_population_
Definition: Options.hpp:808
void SetWeightingFactor(double weighting_factor)
Definition: Options.cpp:313
Options()
Definition: Options.cpp:26
bool use_hard_bounds_
Definition: Options.hpp:742
static constexpr double default_temperature_reduction_factor_
Definition: Options.hpp:818
void SetAlpha(double alpha)
Definition: Options.cpp:135
double GetDelta() const noexcept
Definition: Options.cpp:150
double epsilon_
Definition: Options.hpp:703
bool use_broyden_updates_
Definition: Options.hpp:731
double geometric_tolerance_
Definition: Options.hpp:683
unsigned GetCostNormType() const noexcept
Definition: Options.cpp:243
bool use_multi_threaded_
Definition: Options.hpp:747
double temperature_
Definition: Options.hpp:749
bool GetUserSetPopulation() const noexcept
Definition: Options.cpp:375
bool GetUserSetPopulationSize() const noexcept
Definition: Options.cpp:318
void SetGeometricTolerance(double tolerance)
Definition: Options.cpp:124
void SetUseMultiThreaded(bool use_multi_threaded)
Definition: Options.cpp:390
unsigned GetMaxFunctionEvaluations() const noexcept
Definition: Options.cpp:191
double cost_tolerance_
Definition: Options.hpp:679
void SetTemperature(double temperature)
Definition: Options.cpp:400
static constexpr unsigned default_max_function_evaluations_
Definition: Options.hpp:760
bool add_initial_to_population_
Definition: Options.hpp:737
void SetSurvivalRate(double rate)
Definition: Options.cpp:338
void SetEpsilon(double epsilon)
Definition: Options.cpp:175
static constexpr bool default_use_hard_bounds_
Definition: Options.hpp:810
bool GetAddInitialToPopulation() const noexcept
Definition: Options.cpp:355
double GetDegenerateTolerance() const noexcept
Definition: Options.cpp:108
bool user_has_set_population_
Definition: Options.hpp:725
static constexpr unsigned default_elitism_
Definition: Options.hpp:798
void SetUserSetPopulation(bool has_set_population)
Definition: Options.cpp:380
bool GetUseAdaptiveParameters() const noexcept
Definition: Options.cpp:255
void SetCostNormType(unsigned cost_norm_type)
Definition: Options.cpp:248
bool use_adaptive_
Definition: Options.hpp:707
void SetCostTolerance(double tolerance)
Definition: Options.cpp:102
void SetRandomSeed(unsigned seed)
Definition: Options.cpp:281
double GetAlpha() const noexcept
Definition: Options.cpp:130
static constexpr double default_tau_
Definition: Options.hpp:784
Definition: Bounds.hpp:27
void SetDegenerateTolerance(double tolerance)
Definition: Options.cpp:113
void SetGamma(double gamma)
Definition: Options.cpp:165
static constexpr bool default_use_broyden_updates_
Definition: Options.hpp:806
static constexpr double default_geometric_tolerance_
Definition: Options.hpp:772
static constexpr double default_temperature_
Definition: Options.hpp:814
void SetMaxFunctionEvaluations(unsigned max_func_evals)
Definition: Options.cpp:196
void SetTau(double tau)
Definition: Options.cpp:180
unsigned GetElitism() const noexcept
Definition: Options.cpp:323
static constexpr unsigned default_seed_
Definition: Options.hpp:790
static constexpr bool default_use_multi_threaded_
Definition: Options.hpp:812
void SetUseBroydenUpdates(bool use_broyden)
Definition: Options.cpp:350
unsigned GetStrategy() const noexcept
Definition: Options.cpp:286
static constexpr double default_degenerate_tolerance_
Definition: Options.hpp:770
void SetPopulationSize(unsigned pop_size)
Definition: Options.cpp:270
static constexpr unsigned default_cost_norm_type_
Definition: Options.hpp:766
double alpha_
Definition: Options.hpp:688
unsigned population_size_
Definition: Options.hpp:709
unsigned max_iterations_
Definition: Options.hpp:670
double GetStepReductionFactor() const noexcept
Definition: Options.cpp:405
void SetUseHardBounds(bool use_hard_bounds)
Definition: Options.cpp:370
double step_reduction_factor_
Definition: Options.hpp:751
static constexpr double default_epsilon_
Definition: Options.hpp:780
int num_temperature_loops_
Definition: Options.hpp:757
double GetSurvivalRate() const noexcept
Definition: Options.cpp:333
void SetTemperatureReductionFactor(double temperature_factor)
Definition: Options.cpp:420
void SetElitism(unsigned elite)
Definition: Options.cpp:328
double GetWeightingFactor() const noexcept
Definition: Options.cpp:308
unsigned GetPopulationSize() const noexcept
Definition: Options.cpp:265
static constexpr unsigned default_max_iterations_
Definition: Options.hpp:762
bool GetUseHardBounds() const noexcept
Definition: Options.cpp:365
unsigned GetRandomSeed() const noexcept
Definition: Options.cpp:276
static constexpr bool default_use_adaptive_
Definition: Options.hpp:786
bool GetUseMultiThreaded() const noexcept
Definition: Options.cpp:385
static constexpr double default_weighting_factor_
Definition: Options.hpp:794
unsigned strategy_
Definition: Options.hpp:713
double tau_
Definition: Options.hpp:705
double GetBeta() const noexcept
Definition: Options.cpp:140
unsigned GetOutputLevel() const noexcept
Definition: Options.cpp:233
static constexpr bool default_user_has_set_population_
Definition: Options.hpp:804
static constexpr double default_beta_
Definition: Options.hpp:776
double GetGamma() const noexcept
Definition: Options.cpp:160
static constexpr double default_gamma_
Definition: Options.hpp:782
double GetTau() const noexcept
Definition: Options.cpp:186
void SetAddInitialToPopulation(bool add_initial)
Definition: Options.cpp:360
double GetCostTolerance() const noexcept
Definition: Options.cpp:97
double temperature_reduction_factor_
Definition: Options.hpp:753
void SetCrossOver(double cross_over)
Definition: Options.cpp:301
static constexpr int default_num_cycles_
Definition: Options.hpp:820
bool user_has_set_population_size_
Definition: Options.hpp:723
static constexpr double default_alpha_
Definition: Options.hpp:774
double weighting_factor_
Definition: Options.hpp:715
double GetGeometricTolerance() const noexcept
Definition: Options.cpp:119
static constexpr unsigned default_output_level_
Definition: Options.hpp:764
unsigned GetMaxIterations() const noexcept
Definition: Options.cpp:201
void SetStepReductionFactor(double step_factor)
Definition: Options.cpp:410
void SetDelta(double delta)
Definition: Options.cpp:155
void GetNelderMeadStepSizes(double &alpha, double &beta, double &delta, double &gamma)
Definition: Options.cpp:211
void SetStrategy(unsigned strategy)
Definition: Options.cpp:291
double delta_
Definition: Options.hpp:699
void ResetOptions()
Definition: Options.cpp:61
unsigned cost_norm_type_
Definition: Options.hpp:674
void SetNelderMeadStepSizes(double alpha, double beta, double delta, double gamma)
Definition: Options.cpp:220
static constexpr bool default_user_has_set_population_size_
Definition: Options.hpp:802
void SetOutputLevel(unsigned output_level)
Definition: Options.cpp:238
static constexpr unsigned default_strategy_
Definition: Options.hpp:792
double survival_rate_
Definition: Options.hpp:721
double gamma_
Definition: Options.hpp:701
static constexpr unsigned default_population_size_
Definition: Options.hpp:788
static constexpr double default_step_reduction_factor_
Definition: Options.hpp:816
void SetMaxIterations(unsigned max_iters)
Definition: Options.cpp:206
int GetNumberOfCycles() const noexcept
Definition: Options.cpp:425
void SetNumberOfCycles(int num_cycles)
Definition: Options.cpp:430
unsigned output_level_
Definition: Options.hpp:672
void SetBeta(double beta)
Definition: Options.cpp:145
double beta_
Definition: Options.hpp:693
unsigned max_function_evaluations_
Definition: Options.hpp:668
static constexpr double default_cost_tolerance_
Definition: Options.hpp:768
static constexpr double default_survival_rate_
Definition: Options.hpp:800
unsigned seed_
Definition: Options.hpp:711
void SetUseAdaptiveParameters(bool adaptive)
Definition: Options.cpp:260
static constexpr double default_cross_over_
Definition: Options.hpp:796
double cross_over_
Definition: Options.hpp:717
Definition: Options.hpp:36
double GetCrossOver() const noexcept
Definition: Options.cpp:296
static constexpr int default_num_temperature_loops_
Definition: Options.hpp:822
int GetNumberOfTemperatureLoops() const noexcept
Definition: Options.cpp:435
void SetNumberOfTemperatureLoops(int num_temperature_loops)
Definition: Options.cpp:440
unsigned elitism_
Definition: Options.hpp:719
static constexpr double default_delta_
Definition: Options.hpp:778
double GetTemperatureReductionFactor() const noexcept
Definition: Options.cpp:415
double degenerate_tolerance_
Definition: Options.hpp:681