FirstOrderTrustRegion.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 _FIRSTORDERTRUSTREGION_OPTIMIZATION_H
  8. #define _FIRSTORDERTRUSTREGION_OPTIMIZATION_H
  9. #include <iostream>
  10. #include <core/basics/NonCopyable.h>
  11. #include <core/optimization/gradientBased/OptimizationAlgorithmFirst.h>
  12. #include <core/optimization/gradientBased/TrustRegionBase.h>
  13. namespace NICE {
  14. /**
  15. * A first order trust region algorithm.
  16. * Notation as in Ferid Bajramovic: Kernel-basierte Objektverfolgung,
  17. * Master's thesis (Diplomarbeit),
  18. * Computer Science Department, University Passau
  19. *
  20. * \ingroup optimization_algorithms
  21. */
  22. class FirstOrderTrustRegion : public OptimizationAlgorithmFirst,
  23. public TrustRegionBase {
  24. public:
  25. FirstOrderTrustRegion(double typicalGradient = 0.1, bool _verbose = false)
  26. : TrustRegionBase(typicalGradient), verbose(_verbose) {}
  27. virtual ~FirstOrderTrustRegion();
  28. protected:
  29. virtual void doOptimizeFirst(OptimizationProblemFirst& problem);
  30. private:
  31. bool verbose;
  32. /**
  33. * Compute the initial trust region radius.
  34. */
  35. double computeInitialDelta(const double gradientNorm);
  36. };
  37. }; // namespace NICE
  38. #endif /* _FIRSTORDERTRUSTREGION_OPTIMIZATION_H */