diff options
Diffstat (limited to 'ml/dlib/dlib/optimization/optimization_bobyqa_abstract.h')
-rw-r--r-- | ml/dlib/dlib/optimization/optimization_bobyqa_abstract.h | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/ml/dlib/dlib/optimization/optimization_bobyqa_abstract.h b/ml/dlib/dlib/optimization/optimization_bobyqa_abstract.h deleted file mode 100644 index 46f9436af..000000000 --- a/ml/dlib/dlib/optimization/optimization_bobyqa_abstract.h +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (C) 2009 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#undef DLIB_OPTIMIZATIOn_BOBYQA_ABSTRACT_Hh_ -#ifdef DLIB_OPTIMIZATIOn_BOBYQA_ABSTRACT_Hh_ - -#include "../matrix.h" - -// ---------------------------------------------------------------------------------------- - -/* - This file defines the dlib interface to the BOBYQA software developed by M.J.D Powell. - BOBYQA is a method for optimizing a function in the absence of derivative information. - Powell described it as a method that seeks the least value of a function of many - variables, by applying a trust region method that forms quadratic models by - interpolation. There is usually some freedom in the interpolation conditions, - which is taken up by minimizing the Frobenius norm of the change to the second - derivative of the model, beginning with the zero matrix. The values of the variables - are constrained by upper and lower bounds. - - - The following paper, published in 2009 by Powell, describes the - detailed working of the BOBYQA algorithm. - - The BOBYQA algorithm for bound constrained optimization - without derivatives by M.J.D. Powell -*/ - -// ---------------------------------------------------------------------------------------- - -namespace dlib -{ - class bobyqa_failure : public error; - /*! - This is the exception class used by the functions defined in this file. - !*/ - -// ---------------------------------------------------------------------------------------- - - template < - typename funct, - typename T, - typename U - > - double find_min_bobyqa ( - const funct& f, - T& x, - long npt, - const U& x_lower, - const U& x_upper, - const double rho_begin, - const double rho_end, - const long max_f_evals - ); - /*! - requires - - f(x) must be a valid expression that evaluates to a double - - is_col_vector(x) == true - - is_col_vector(x_lower) == true - - is_col_vector(x_upper) == true - - x.size() == x_lower.size() == x_upper.size() - - x.size() > 1 - - x.size() + 2 <= npt <= (x.size()+1)*(x.size()+2)/2 - - 0 < rho_end < rho_begin - - min(x_upper - x_lower) > 2*rho_begin - (i.e. the lower and upper bounds on each x element must be larger than 2*rho_begin) - - min(x - x_lower) >= 0 && min(x_upper - x) >= 0 - (i.e. the given x should be within the bounds defined by x_lower and x_upper) - - max_f_evals > 1 - ensures - - Performs a constrained minimization of the function f() starting from - the initial point x. - - The BOBYQA algorithm uses a number of interpolating points to perform its - work. The npt argument controls how many points get used. Typically, - a good value to use is 2*x.size()+1. - - #x == the value of x (within the bounds defined by x_lower and x_upper) that - was found to minimize f(). More precisely: - - min(#x - x_lower) >= 0 && min(x_upper - #x) >= 0 - - returns f(#x). - - rho_begin and rho_end are used as the initial and final values of a trust - region radius. Typically, rho_begin should be about one tenth of the greatest - expected change to a variable, while rho_end should indicate the accuracy that - is required in the final values of the variables. - throws - - bobyqa_failure - This exception is thrown if the algorithm is unable to make progress towards - solving the problem. This may occur because the algorithm detects excessive - numerical errors or because max_f_evals of f() have occurred without reaching - convergence. - !*/ - -// ---------------------------------------------------------------------------------------- - - template < - typename funct, - typename T, - typename U - > - double find_max_bobyqa ( - const funct& f, - T& x, - long npt, - const U& x_lower, - const U& x_upper, - const double rho_begin, - const double rho_end, - const long max_f_evals - ); - /*! - This function is identical to the find_min_bobyqa() routine defined above - except that it negates the f() function before performing optimization. - Thus this function will attempt to find the maximizer of f() rather than - the minimizer. - !*/ - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_OPTIMIZATIOn_BOBYQA_ABSTRACT_Hh_ - |