PDFO (Powell's Derivative-Free Optimization solvers) is a cross-platform package providing interfaces for using the late Professor M. J. D. Powell's derivative-free optimization solvers, including UOBYQA, NEWUOA, BOBYQA, LINCOA, and COBYLA, which were originally implemented in Fortran 77.
PDFO provides a MATLAB function named pdfo. It can automatically identify the type of your problem and then call one of Powell's Fortran solvers.
The pdfo function is designed to be compatible with the fmincon function available in the Optimization Toolbox of MATLAB. You can call pdfo in the same way as calling fmincon:
x = pdfo(fun, x0)
x = pdfo(fun, x0, A, b)
x = pdfo(fun, x0, A, b, Aeq, beq)
x = pdfo(fun, x0, A, b, Aeq, beq, lb, ub)
x = pdfo(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon)
x = pdfo(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon, options)
x = pdfo(problem) % PROBLEM is a structure defining the optimization problem
[x, fval] = pdfo(___)
[x, fval, exitflag, output] = pdfo(___)
In addition, pdfo can be called in some flexible ways that are not supported by fmincon. If your problem can be solved by fmincon without specifying the derivatives, then it can probably be better solved by pdfo; if your problem cannot be solved by fmincon, then try pdfo.
Professor Powell ( https://en.wikipedia.org/wiki/Michael_J._D._Powell ) devised these derivative-free optimization solvers to tackle general nonlinear optimization problems of continuous variables with or without constraints using only function values but not derivatives of the objective function or nonlinear constraint functions. In practice, such functions are often black boxes defined by simulations. Consequently, the corresponding optimization problems are often categorized as black-box optimization or simulation-based optimization. Problem specified by explicit formulas can probably be handled by other methods more efficiently. UOBYQA and NEWUOA can solve unconstrained problems, NEWUOA being preferable except for rather small problems; BOBYQA can solve unconstrained and bound-constrained problems; LINCOA can solve unconstrained, bound-constrained, and linearly constrained problems; COBYLA, which is not recommended unless nonlinear constraints are present, can solve general nonlinear optimization problems. See the Decision Tree for Optimization Software for more information.
The current version of PDFO supports MATLAB and Python. It relies on MEX for MATLAB and F2PY for Python to compile the Fortran solvers and wrap them into user-friendly functions.
Based on Professor Powell's Fortran code, PDFO is developed by Tom M. Ragonneau and Zaikun Zhang at the Department of Applied Mathematics, the Hong Kong Polytechnic University.
PDFO is dedicated to the late Professor M. J. D. Powell FRS (1936--2015).