123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /*
- * NICE-Core - efficient algebra and computer vision methods
- * - liboptimization - An optimization/template for new NICE libraries
- * See file License for license information.
- */
- /*****************************************************************************/
- #ifndef _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H
- #define _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H
- #include <iostream>
- #include <core/basics/NonCopyable.h>
- #include <core/optimization/gradientBased/OptimizationAlgorithmSecond.h>
- #include <core/optimization/gradientBased/OptimizationProblemFirst.h>
- namespace NICE {
- /**
- * Base class for first (and thus also second) order optimization algorithms
- *
- * \ingroup optimization_algorithms
- */
- class OptimizationAlgorithmFirst : private OptimizationAlgorithmSecond {
- public:
- virtual ~OptimizationAlgorithmFirst();
-
- inline void optimize(OptimizationProblemSecond& problem) {
- optimizeFirst(problem);
- }
- inline void optimizeFirst(OptimizationProblemFirst& problem) {
- problem.init();
- doOptimizeFirst(problem);
- }
-
- protected:
- virtual void doOptimize(OptimizationProblemSecond& problem);
- virtual void doOptimizeFirst(OptimizationProblemFirst& problem) = 0;
- };
- }; // namespace NICE
- #endif /* _OPTIMIZATIONALGORITHMFIRST_OPTIMIZATION_H */
|