SimpleOptimizer.cpp 1.8 KB

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