SimpleOptimizer.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. // SimpleOptimizer.cpp: Implementation of the SimpleOptimizer class.
  4. //
  5. // Written by Matthias Wacker
  6. //
  7. //////////////////////////////////////////////////////////////////////
  8. #include <iostream>
  9. #include "core/optimization/blackbox/SimpleOptimizer.h"
  10. using namespace OPTIMIZATION;
  11. SimpleOptimizer::SimpleOptimizer(OptLogBase *loger) : SuperClass(loger)
  12. {
  13. }
  14. SimpleOptimizer::SimpleOptimizer( const SimpleOptimizer &opt) : SuperClass(opt)
  15. {
  16. }
  17. SimpleOptimizer & SimpleOptimizer::operator=(const SimpleOptimizer &opt)
  18. {
  19. /*
  20. avoid self-copy
  21. */
  22. if(this != &opt)
  23. {
  24. //
  25. // =operator of SuperClass
  26. //
  27. SuperClass::operator=(opt);
  28. //
  29. // own values:
  30. // currently no member variables
  31. }
  32. return *this;
  33. }
  34. SimpleOptimizer::~SimpleOptimizer()
  35. {
  36. }
  37. void SimpleOptimizer::init()
  38. {
  39. SuperClass::init();
  40. }
  41. int SimpleOptimizer::optimizeProb(SimpleOptProblem &optProb)
  42. {
  43. // get settings
  44. getSettings(optProb);
  45. // run optimization
  46. int returnReason = optimize(); // implementation in child!
  47. //store result
  48. setResult(optProb);
  49. // return the return reason
  50. return returnReason;
  51. }
  52. void SimpleOptimizer::setResult(SimpleOptProblem &optProb)
  53. {
  54. matrix_type tmp = this->getLastParameters();
  55. optProb.setActiveCurrentParameters(tmp);
  56. }
  57. void SimpleOptimizer::getSettings(SimpleOptProblem &optProb)
  58. {
  59. // Costf
  60. m_costFunction=optProb.getCostFunction();
  61. m_numberOfParameters=m_costFunction->getNumOfParameters();
  62. // bounds
  63. setLowerParameterBound(optProb.lowerBoundsActive(),optProb.getActiveLowerBounds());
  64. setUpperParameterBound(optProb.upperBoundsActive(),optProb.getActiveUpperBounds());
  65. // scales
  66. setScales(optProb.getActiveScales());
  67. // initial params
  68. setParameters(optProb.getActiveCurrentParams());
  69. // max
  70. setMaximize(optProb.getMaximize());
  71. }