Skip to main content

PDFO: Powell's Derivative-Free Optimization solvers

Introduction | Python | MATLAB | Citing PDFO | Acknowledgments

Dedicated to the late Professor M. J. D. Powell FRS (1936–2015).

GitHub Workflow Status GitHub GitHub release (latest SemVer) PyPI - Downloads View PDFO: Powell's Derivative-Free Optimization solvers on File Exchange

Introduction

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. See the PDFO homepage and the PDFO paper for more information.

This package makes use of a modified version of Powell's Fortran code. See the folder original under fsrc for Powell's original code.

Python version of PDFO

Installation

To use the Python version of PDFO on Linux, Mac, or Windows, you need Python (version 3.7 or above).

It is highly recommended to install PDFO via PyPI.

Install pip in your system if you Python version does not include it. Then execute

python3 -m pip install pdfo

in a command shell (e.g., the terminal for Linux and macOS, or the Command Shell for Windows). If your Python 3 launcher is not python3, adapt the command accordingly (it may be python on Windows for example). If this command runs successfully, PDFO is installed. You may verify the installation by

python3 -m unittest pdfo.testpdfo

If you are an Anaconda user, PDFO is also available through the conda installer ( https://anaconda.org/conda-forge/pdfo ). However, it is not managed by us.

Alternative installation (using source distribution)

Alternatively, although deeply discouraged, PDFO can be installed from the source code. It requires you to install additional Python headers, a Fortran compiler (e.g., gfortran), and F2PY (provided by NumPy). Download and decompress the source code package; you will obtain a folder containing pyproject.toml; in a command shell, change your directory to this folder; then install PDFO by executing

python3 -m pip install .

Usage

PDFO provides the following Python functions: pdfo, uobyqa, newuoa, bobyqa, lincoa, cobyla.

The pdfo function can automatically identify the type of your problem and call one of Powell's solvers. The other five functions call the solver indicated by their names. It is highly recommended using pdfo instead of uobyqa, newuoa, etc.

The pdfo function is designed to be compatible with the minimize function available in scipy.optimize. You can call pdfo in exactly the same way as calling minimize, without the derivative arguments (PDFO does not use derivatives).

For the detailed syntax of these functions, use the standard help command of Python. For example,

from pdfo import pdfo
help(pdfo)

will tell you how to use pdfo.

Uninstall

PDFO can be uninstalled by executing the following command in a command shell:

python3 -m pip uninstall pdfo

MATLAB version of PDFO

Prerequisites

PDFO supports MATLAB R2014a and later releases. To use PDFO, you need first set up the MEX of your MATLAB so that it can compile Fortran. The setup of MEX is a pure MATLAB usage problem and it has nothing to do with PDFO.

To see whether your MEX is ready, run the following code in MATLAB:

mex('-setup', '-v', 'fortran'); mex('-v', fullfile(matlabroot, 'extern', 'examples', 'refbook', 'timestwo.F'));

If this completes successfully, then your MEX is ready. Otherwise, it is not, and you may try the setup_mex package at

https://github.com/equipez/setup_mex

It will help you to set MEX up on Windows or macOS (the setup of MEX is trivial on Linux). In case setup_mex does not work, you need to consult a local MATLAB expert or the technical support of MathWorks about "how to set up MEX", which is not part of PDFO.

Installation

Download and decompress the source code package, or clone it from GitHub or Gitee. You will obtain a folder containing setup.m. Place this folder at the location where you want PDFO to be installed. In MATLAB, change the directory to this folder, and execute the following command:

setup

If this command runs successfully, PDFO is installed. You may execute the following command in MATLAB to verify the installation:

testpdfo

Usage

PDFO provides the following MATLAB functions: pdfo, uobyqa, newuoa, bobyqa, lincoa, cobyla.

The pdfo function can automatically identify the type of your problem and then call one of Powell's solvers. The other five functions call the solver indicated by their names. It is highly recommended using pdfo instead of uobyqa, newuoa, etc.

The pdfo function is designed to be compatible with the fmincon function available in the Optimization Toolbox of MATLAB. You can call pdfo in exactly the same way as calling fmincon. In addition, pdfo can be called in some flexible ways that are not supported by fmincon.

For detailed syntax of these functions, use the standard help command of MATLAB. For example,

help pdfo

will tell you how to use pdfo.

Uninstall

PDFO can be uninstalled using the setup.m script by executing the following command in MATLAB:

setup uninstall

Citing PDFO

Citing the PDFO package

@misc{Ragonneau_Zhang_2023,
    title        = {{PDFO}: a cross-platform package for {Powell}'s derivative-free optimization solvers},
    author       = {Ragonneau, T. M. and Zhang, Z.},
    howpublished = {arXiv:2302.13246},
    year         = 2023
}

Citing Powell’s methods

  • M. J. D. Powell. A direct search optimization method that models the objective and constraint functions by linear interpolation. In S. Gomez and J. P. Hennart, editors, Advances in Optimization and Numerical Analysis, pages 51–67, Dordrecht, NL, 1994. Springer.

  • M. J. D. Powell. UOBYQA: unconstrained optimization by quadratic approximation. Math. Program., 92:555–582, 2002.

  • M. J. D. Powell. The NEWUOA software for unconstrained optimization without derivatives. In G. Di Pillo and M. Roma, editors, Large-Scale Nonlinear Optimization, volume 83 of Nonconvex Optimization and Its Applications, pages 255–297, Boston, MA, USA, 2006. Springer.

  • M. J. D. Powell. The BOBYQA algorithm for bound constrained optimization without derivatives. Technical Report DAMTP 2009/NA06, Department of Applied Mathematics and Theoretical Physics, University of Cambridge, Cambridge, UK, 2009.

Remark: LINCOA seeks the least value of a nonlinear function subject to linear inequality constraints without using derivatives of the objective function. Powell did not publish a paper to introduce the algorithm.

Acknowledgments

PDFO is dedicated to the memory of the late Professor Powell with gratitude for his inspiration and for the treasures he left to us.

We are grateful to Professor Ya-xiang Yuan for his everlasting encouragement and support.

The development of PDFO is a long-term project, which would not be sustainable without the continued funds from the Hong Kong Research Grants Council (ref. PolyU 253012/17P, PolyU 153054/20P, and PolyU 153066/21P), the Hong Kong Ph.D. Fellowship Scheme (ref. PF18-24698), and the Hong Kong Polytechnic University (PolyU), in particular the Department of Applied Mathematics (AMA).

Metadata

Release files for pdfo 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pdfo 1.3
File Size Uploaded
pdfo-1.3.tar.gz 454.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pdfo 1.3
File
pdfo-1.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pdfo-1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pdfo-1.3-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
pdfo-1.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pdfo-1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pdfo-1.3-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
pdfo-1.3-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pdfo-1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
pdfo-1.3-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
pdfo-1.3-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
pdfo-1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
pdfo-1.3-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details
pdfo-1.3-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
pdfo-1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
pdfo-1.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-32 Details
pdfo-1.3-cp37-cp37m-macosx_10_9_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64 Details

Total release size: 30.5 MB

Release files / pdfo-1.3.tar.gz

Download URL pdfo-1.3.tar.gz
Size 454.7 kB
Tags Source
SHA-256 checksum
How to use checksums
03ab33c79339ca6dfc89bcbb2731d40a23d74a904ea9e55a6db8be0ff207ab82
BLAKE2b-256 checksum
How to use checksums
4e4894edc506f3208e1c34afb113e5f18fcc4627881b5d6e5ab0e016a85a979e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp311-cp311-win_amd64.whl

Download URL pdfo-1.3-cp311-cp311-win_amd64.whl
Size 2.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5f635e8df7f4603d54433e62b00268426c484a0a36bc9ea8bdb0a55412942092
BLAKE2b-256 checksum
How to use checksums
b721e1da3ff260bcb47816840aa308a67ec90bd9f19fa4ee0e0e149cabe77234
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pdfo-1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4ae892a2eb202c1fad5d2880bb92235f6fdcaf5b7a3aa84521bb3bf88113983d
BLAKE2b-256 checksum
How to use checksums
771821bc45ed020268bef290b461feac25e59957c31255301d3348fe35696dd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp311-cp311-macosx_10_9_x86_64.whl

Download URL pdfo-1.3-cp311-cp311-macosx_10_9_x86_64.whl
Size 1.8 MB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
c295746d75678abd5057c0bd2439c1713afbb1b3aa717a4982fa1b4b93a5a773
BLAKE2b-256 checksum
How to use checksums
9504e194bb39a8a0952fb3226a65a0025fb3f403ad85da844e299f34b615dc75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp310-cp310-win_amd64.whl

Download URL pdfo-1.3-cp310-cp310-win_amd64.whl
Size 2.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f3328c9c21452222d766cdb16062ca8f72e81156674d1dc7d33f49880223f7f1
BLAKE2b-256 checksum
How to use checksums
adf3c89f2e0ac227b6eead721dd34bdce4b365ddd6087581c5834ff3bd9f3b48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pdfo-1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
673115b3ca65216a770b3108de9f844f8fd2f3493082eefe1b78cf272316c430
BLAKE2b-256 checksum
How to use checksums
9faec5b528bf339869ab0a1e55b5219dfbe14d33489c81a476e657861e84fa80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp310-cp310-macosx_10_9_x86_64.whl

Download URL pdfo-1.3-cp310-cp310-macosx_10_9_x86_64.whl
Size 1.8 MB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
0c06a5d66af6f0ff55399e26f1f03fa65b398fd504d5c53cbeabbeb8a1be3b86
BLAKE2b-256 checksum
How to use checksums
2215dbbf9619c744f28fa2afade1ce58d3da00e193cd85a70e8b21c9aa944966
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp39-cp39-win_amd64.whl

Download URL pdfo-1.3-cp39-cp39-win_amd64.whl
Size 2.4 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
2fe40347181ccb2b1680510b1cc4bab6ac9ee10e79b7763d507feefec4f50bd2
BLAKE2b-256 checksum
How to use checksums
1c8cb5655608c5d940ec08fcaafa86925906ed9005eabc36db9c4261e4d21a23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pdfo-1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
02680853e5a15279c10ec6bedb34031475e6c0393edf7460e1fa11bc66a325c5
BLAKE2b-256 checksum
How to use checksums
9079d931e9c49d77d03ab890cf36dfa8cd78cff50695616dd8addd30e94c3c25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp39-cp39-macosx_10_9_x86_64.whl

Download URL pdfo-1.3-cp39-cp39-macosx_10_9_x86_64.whl
Size 1.8 MB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4d915766f9f7a9dfcd8c2254b98c8ac05372c90627efc0241720a0de96539641
BLAKE2b-256 checksum
How to use checksums
3f80119b4914198261e2a63a4d448ffe7b00653971de998c53a11c11081c3c6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp38-cp38-win_amd64.whl

Download URL pdfo-1.3-cp38-cp38-win_amd64.whl
Size 2.4 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
fbcc2170738ef1d60dfc3b7820a4dcbbaa7b8d3292891fd6762526e36e0d0371
BLAKE2b-256 checksum
How to use checksums
50414e988fc12f1710b10c113e107ec78e23b6af5ab5eb3bb5bec334a8fb20c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pdfo-1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4d2bbb23ca47943dc1db27eb25cc3290a43500d2c96f39a37adc382d9ec83f8e
BLAKE2b-256 checksum
How to use checksums
1093bd72a2c0679e3bb5ae2946966a60393609861ac8a1208c6edc2048d83edc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp38-cp38-macosx_10_9_x86_64.whl

Download URL pdfo-1.3-cp38-cp38-macosx_10_9_x86_64.whl
Size 1.8 MB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
dd7bb9cd6316c0d4bb9172f92740e156e3cb5c6e5332758f9a798fb18962791f
BLAKE2b-256 checksum
How to use checksums
b9c09249df85d4127675d5546ef9d9b953da3b3a15a1339ce993ba37fb5aad37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp37-cp37m-win_amd64.whl

Download URL pdfo-1.3-cp37-cp37m-win_amd64.whl
Size 2.4 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
34ff05858f525fdbfc95a6cb3e882edd9ec24662b75b9aa24ee2320fddc4bbf2
BLAKE2b-256 checksum
How to use checksums
9c65e0a8204d16551ca0640f76d8a2f0ec7fdc1d2494d942d61f049531ded8d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pdfo-1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c1e1f7cc1d86da28808848c8d2da5c407be51ef82de12263ac19c2d7d91869fd
BLAKE2b-256 checksum
How to use checksums
57e5c757c481294971f7eb6f3267f176e214d53e0e82ca6b9cc7a4e1c09d1ca0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pdfo-1.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Size 1.5 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
a458a58b1306a71365b6380b8cca741a7ef33cffb2b13508a249c958b4d37d42
BLAKE2b-256 checksum
How to use checksums
de6dc6a2484b53b6707653f7defb36b7ac8a5e1f221fdb75c204706a51e5f529
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / pdfo-1.3-cp37-cp37m-macosx_10_9_x86_64.whl

Download URL pdfo-1.3-cp37-cp37m-macosx_10_9_x86_64.whl
Size 1.8 MB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
3ad4629a3d5e40e89dd0cdee32363d91a28810a7325c8d4275d137f861966ea5
BLAKE2b-256 checksum
How to use checksums
c8fb2fa505f02b2515c832341bcf5dcd3e9ff2bcbe61ab3d3a07b823d2f42cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release history Release notifications | RSS feed

2.0.0

16 release files

1.3.1

17 release files

This release

1.3 This release

17 release files

1.2

41 release files

1.1

61 release files

1.0

47 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page