5 Star 15 Fork 9

PDFO / pdfo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

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

Recommended 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, or clone it from GitHub or Gitee. 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

@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
}

In addition, Powell’s methods can be cited as follows.

  • 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).

BSD 3-Clause License Copyright (c) 2020--2023, Tom M. RAGONNEAU and Zaikun ZHANG Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

Powell 无导数优化求解器。可求解黑箱优化,用于机器学习超参数调节。详情见项目主页 https://www.pdfo.net 。 展开 收起
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/pdfo/pdfo.git
git@gitee.com:pdfo/pdfo.git
pdfo
pdfo
pdfo
main

搜索帮助