OptimizationAlgorithmFirst.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * NICE-Core - efficient algebra and computer vision methods
  3. * - liboptimization - An optimization/template for new NICE libraries
  4. * See file License for license information.
  5. */
  6. /*****************************************************************************/
  7. #ifndef _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H
  8. #define _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H
  9. #include <iostream>
  10. #include <core/basics/NonCopyable.h>
  11. #include <core/optimization/gradientBased/OptimizationAlgorithmSecond.h>
  12. #include <core/optimization/gradientBased/OptimizationProblemFirst.h>
  13. namespace NICE {
  14. /**
  15. * Base class for first (and thus also second) order optimization algorithms
  16. *
  17. * \ingroup optimization_algorithms
  18. */
  19. class OptimizationAlgorithmFirst : private OptimizationAlgorithmSecond {
  20. public:
  21. virtual ~OptimizationAlgorithmFirst();
  22. inline void optimize(OptimizationProblemSecond& problem) {
  23. optimizeFirst(problem);
  24. }
  25. inline void optimizeFirst(OptimizationProblemFirst& problem) {
  26. problem.init();
  27. doOptimizeFirst(problem);
  28. }
  29. protected:
  30. virtual void doOptimize(OptimizationProblemSecond& problem);
  31. virtual void doOptimizeFirst(OptimizationProblemFirst& problem) = 0;
  32. };
  33. }; // namespace NICE
  34. #endif /* _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H */