TrustRegionBase.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  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. #include "core/optimization/gradientBased/TrustRegionBase.h"
  8. #include <core/basics/Log.h>
  9. namespace NICE {
  10. TrustRegionBase::~TrustRegionBase() {
  11. }
  12. bool TrustRegionBase::changeIsMinimal(
  13. const Vector& step,
  14. const Vector& position) {
  15. bool minimalChange = true;
  16. bool allZero = true;
  17. for (unsigned int i = 0; i < position.size(); i++) {
  18. const double param = position[i];
  19. const bool zero = isZero(param);
  20. allZero &= zero;
  21. if (zero) {
  22. minimalChange &= std::fabs(step[i]) < epsilonM;
  23. } else {
  24. minimalChange &= std::fabs(step[i]) < epsilonM * std::fabs(param);
  25. }
  26. //minimalChange &= (zero || std::fabs(step[i]) < epsilonM * std::fabs(param));
  27. }
  28. return minimalChange && !allZero;
  29. }
  30. }; // namespace NICE