You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.rst
+13-32
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,9 @@ More details about Py-BOBYQA and its enhancements over BOBYQA can be found in ou
28
28
29
29
1. Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers <https://doi.org/10.1145/3338517>`_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`arXiv preprint: 1804.00154 <https://arxiv.org/abs/1804.00154>`_]
30
30
2. Coralia Cartis, Lindon Roberts and Oliver Sheridan-Methven, `Escaping local minima with derivative-free methods: a numerical investigation <https://doi.org/10.1080/02331934.2021.1883015>`_, *Optimization*, 71:8 (2022), pp. 2343-2373. [`arXiv preprint: 1812.11343 <https://arxiv.org/abs/1812.11343>`_]
31
+
3. Lindon Roberts, `Model Construction for Convex-Constrained Derivative-Free Optimization <https://arxiv.org/abs/2403.14960>`_, *arXiv preprint arXiv:2403.14960* (2024).
31
32
32
-
Please cite [1] when using Py-BOBYQA for local optimization, and [1,2] when using Py-BOBYQA's global optimization heuristic functionality. For reproducibility of all figures, please feel free to contact the authors.
33
+
Please cite [1] when using Py-BOBYQA for local optimization, [1,2] when using Py-BOBYQA's global optimization heuristic functionality, and [1,3] if using the general convex constraints functionality.
33
34
34
35
The original paper by Powell is: M. J. D. Powell, The BOBYQA algorithm for bound constrained optimization without derivatives, technical report DAMTP 2009/NA06, University of Cambridge (2009), and the original Fortran implementation is available `here <http://mat.uc.pt/~zhang/software.html>`_.
35
36
@@ -41,13 +42,13 @@ See manual.pdf or the `online manual <https://numericalalgorithmsgroup.github.io
41
42
42
43
Citation
43
44
--------
44
-
If you use Py-BOBYQA in a paper, please cite:
45
+
Full details of the Py-BOBYQA algorithm are given in our papers:
45
46
46
-
Cartis, C., Fiala, J., Marteau, B. and Roberts, L., Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41.
47
+
1. Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers <https://doi.org/10.1145/3338517>`_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`preprint <https://arxiv.org/abs/1804.00154>`_]
48
+
2. Coralia Cartis, Lindon Roberts and Oliver Sheridan-Methven, `Escaping local minima with derivative-free methods: a numerical investigation <https://doi.org/10.1080/02331934.2021.1883015>`_, *Optimization*, 71:8 (2022), pp. 2343-2373. [`arXiv preprint: 1812.11343 <https://arxiv.org/abs/1812.11343>`_]
49
+
3. Lindon Roberts, `Model Construction for Convex-Constrained Derivative-Free Optimization <https://arxiv.org/abs/2403.14960>`_, *arXiv preprint arXiv:2403.14960* (2024).
47
50
48
-
If you use Py-BOBYQA's global optimization heuristic, please cite the above and also
49
-
50
-
Cartis, C., Roberts, L. and Sheridan-Methven, O., Escaping local minima with derivative-free methods: a numerical investigation, Optimization, 71:8 (2022), pp. 2343-2373.
51
+
Please cite [1] when using Py-BOBYQA for local optimization, [1,2] when using Py-BOBYQA's global optimization heuristic functionality, and [1,3] if using the general convex constraints functionality.
51
52
52
53
Requirements
53
54
------------
@@ -65,31 +66,17 @@ Additionally, the following python packages should be installed (these will be i
65
66
66
67
Installation using pip
67
68
----------------------
68
-
For easy installation, use `pip <http://www.pip-installer.org/>`_ as root:
69
-
70
-
.. code-block:: bash
71
-
72
-
$ [sudo] pip install Py-BOBYQA
73
-
74
-
or alternatively *easy_install*:
75
-
76
-
.. code-block:: bash
77
-
78
-
$ [sudo] easy_install Py-BOBYQA
79
-
80
-
If you do not have root privileges or you want to install Py-BOBYQA for your private use, you can use:
69
+
For easy installation, use `pip <http://www.pip-installer.org/>`_:
81
70
82
71
.. code-block:: bash
83
72
84
-
$ pip install --user Py-BOBYQA
85
-
86
-
which will install Py-BOBYQA in your home directory.
73
+
$ pip install Py-BOBYQA
87
74
88
75
Note that if an older install of Py-BOBYQA is present on your system you can use:
89
76
90
77
.. code-block:: bash
91
78
92
-
$ [sudo] pip install --upgrade Py-BOBYQA
79
+
$ pip install --upgrade Py-BOBYQA
93
80
94
81
to upgrade Py-BOBYQA to the latest version.
95
82
@@ -106,13 +93,7 @@ Py-BOBYQA is written in pure Python and requires no compilation. It can be insta
106
93
107
94
.. code-block:: bash
108
95
109
-
$ [sudo] pip install .
110
-
111
-
If you do not have root privileges or you want to install Py-BOBYQA for your private use, you can use:
112
-
113
-
.. code-block:: bash
114
-
115
-
$ pip install --user .
96
+
$ pip install .
116
97
117
98
instead.
118
99
@@ -121,7 +102,7 @@ To upgrade Py-BOBYQA to the latest version, navigate to the top-level directory
121
102
.. code-block:: bash
122
103
123
104
$ git pull
124
-
$ [sudo] pip install .# with admin privileges
105
+
$ pip install .
125
106
126
107
Testing
127
108
-------
@@ -144,7 +125,7 @@ If Py-BOBYQA was installed using *pip* you can uninstall as follows:
144
125
145
126
.. code-block:: bash
146
127
147
-
$ [sudo] pip uninstall Py-BOBYQA
128
+
$ pip uninstall Py-BOBYQA
148
129
149
130
If Py-BOBYQA was installed manually you have to remove the installed files by hand (located in your python site-packages directory).
Copy file name to clipboardExpand all lines: docs/advanced.rst
+9-3
Original file line number
Diff line number
Diff line change
@@ -21,9 +21,9 @@ Logging and Output
21
21
22
22
Initialization of Points
23
23
------------------------
24
-
* :code:`init.random_initial_directions` - Build the initial interpolation set using random directions (as opposed to coordinate directions). Default is :code:`True`.
25
-
* :code:`init.random_directions_make_orthogonal` - If building initial interpolation set with random directions, whether or not these should be orthogonalized. Default is :code:`True`.
26
-
* :code:`init.run_in_parallel` - If using random directions, whether or not to ask for all :code:`objfun` to be evaluated at all points without any intermediate processing. Default is :code:`False`.
24
+
* :code:`init.random_initial_directions` - Build the initial interpolation set using random directions (as opposed to coordinate directions). Default is :code:`True`. Not used if general convex constraints provided.
25
+
* :code:`init.random_directions_make_orthogonal` - If building initial interpolation set with random directions, whether or not these should be orthogonalized. Default is :code:`True`. Not used if general convex constraints provided.
26
+
* :code:`init.run_in_parallel` - If using random directions, whether or not to ask for all :code:`objfun` to be evaluated at all points without any intermediate processing. Default is :code:`False`. Not used if general convex constraints provided.
27
27
28
28
Trust Region Management
29
29
-----------------------
@@ -74,6 +74,12 @@ Multiple Restarts
74
74
* :code:`restarts.auto_detect.min_chg_model_slope` - Minimum rate of increase of :math:`\log(\|g_k-g_{k-1}\|)` and :math:`\log(\|H_k-H_{k-1}\|_F)` over the past iterations to cause a restart. Default is 0.015.
75
75
* :code:`restarts.auto_detect.min_correl` - Minimum correlation of the data sets :math:`(k, \log(\|g_k-g_{k-1}\|))` and :math:`(k, \log(\|H_k-H_{k-1}\|_F))` required to cause a restart. Default is 0.1.
76
76
77
+
General Convex Constraints
78
+
--------------------------
79
+
* :code:`projections.dykstra.d_tol` - termination tolerance for Dykstra's algorithm for computing the projection onto the intersection of all convex constraints. Default is :math:`10^{-10}`.
80
+
* :code:`projections.dykstra.max_iters` - maximum iterations of Dykstra's algorithm for computing the projection onto the intersection of all convex constraints. Default is 100.
81
+
* :code:`projections.feasible_tol` - tolerance for checking feasibility of initial points with respect to general convex constraints. Default is :math:`10^{-10}`.
82
+
* :code:`projections.pgd_tol` - termination tolerance for trust-region and geometry-improving subproblems. Default is :math:`10^{-8}`.
Copy file name to clipboardExpand all lines: docs/build/html/_sources/advanced.rst.txt
+9-3
Original file line number
Diff line number
Diff line change
@@ -21,9 +21,9 @@ Logging and Output
21
21
22
22
Initialization of Points
23
23
------------------------
24
-
* :code:`init.random_initial_directions` - Build the initial interpolation set using random directions (as opposed to coordinate directions). Default is :code:`True`.
25
-
* :code:`init.random_directions_make_orthogonal` - If building initial interpolation set with random directions, whether or not these should be orthogonalized. Default is :code:`True`.
26
-
* :code:`init.run_in_parallel` - If using random directions, whether or not to ask for all :code:`objfun` to be evaluated at all points without any intermediate processing. Default is :code:`False`.
24
+
* :code:`init.random_initial_directions` - Build the initial interpolation set using random directions (as opposed to coordinate directions). Default is :code:`True`. Not used if general convex constraints provided.
25
+
* :code:`init.random_directions_make_orthogonal` - If building initial interpolation set with random directions, whether or not these should be orthogonalized. Default is :code:`True`. Not used if general convex constraints provided.
26
+
* :code:`init.run_in_parallel` - If using random directions, whether or not to ask for all :code:`objfun` to be evaluated at all points without any intermediate processing. Default is :code:`False`. Not used if general convex constraints provided.
27
27
28
28
Trust Region Management
29
29
-----------------------
@@ -74,6 +74,12 @@ Multiple Restarts
74
74
* :code:`restarts.auto_detect.min_chg_model_slope` - Minimum rate of increase of :math:`\log(\|g_k-g_{k-1}\|)` and :math:`\log(\|H_k-H_{k-1}\|_F)` over the past iterations to cause a restart. Default is 0.015.
75
75
* :code:`restarts.auto_detect.min_correl` - Minimum correlation of the data sets :math:`(k, \log(\|g_k-g_{k-1}\|))` and :math:`(k, \log(\|H_k-H_{k-1}\|_F))` required to cause a restart. Default is 0.1.
76
76
77
+
General Convex Constraints
78
+
--------------------------
79
+
* :code:`projections.dykstra.d_tol` - termination tolerance for Dykstra's algorithm for computing the projection onto the intersection of all convex constraints. Default is :math:`10^{-10}`.
80
+
* :code:`projections.dykstra.max_iters` - maximum iterations of Dykstra's algorithm for computing the projection onto the intersection of all convex constraints. Default is 100.
81
+
* :code:`projections.feasible_tol` - tolerance for checking feasibility of initial points with respect to general convex constraints. Default is :math:`10^{-10}`.
82
+
* :code:`projections.pgd_tol` - termination tolerance for trust-region and geometry-improving subproblems. Default is :math:`10^{-8}`.
Copy file name to clipboardExpand all lines: docs/build/html/_sources/index.rst.txt
+10-6
Original file line number
Diff line number
Diff line change
@@ -12,23 +12,26 @@ Py-BOBYQA: Derivative-Free Optimizer for Bound-Constrained Minimization
12
12
13
13
**Author:** `Lindon Roberts <lindon.roberts@sydney.edu.au>`_
14
14
15
-
Py-BOBYQA is a flexible package for finding local solutions to nonlinear, nonconvex minimization problems (with optional bound constraints), without requiring any derivatives of the objective. Py-BOBYQA is a Python implementation of the `BOBYQA <http://mat.uc.pt/~zhang/software.html#powell_software>`_ solver by Powell (documentation `here <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf>`_). It is particularly useful when evaluations of the objective function are expensive and/or noisy.
15
+
Py-BOBYQA is a flexible package for finding local solutions to nonlinear, nonconvex minimization problems (with optional bound and other convex constraints), without requiring any derivatives of the objective. Py-BOBYQA is a Python implementation of the `BOBYQA <http://mat.uc.pt/~zhang/software.html#powell_software>`_ solver by Powell (documentation `here <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf>`_). It is particularly useful when evaluations of the objective function are expensive and/or noisy.
16
16
17
17
That is, Py-BOBYQA solves
18
18
19
19
.. math::
20
20
21
21
\min_{x\in\mathbb{R}^n} &\quad f(x)\\
22
-
\text{s.t.} &\quad a \leq x \leq b
22
+
\text{s.t.} &\quad a \leq x \leq b \\
23
+
&\quad x \in C := C_1\cap\cdots\cap C_n, \quad\text{all $C_i$ convex}
23
24
24
-
The upper and lower bounds on the variables are non-relaxable (i.e. Py-BOBYQA will never ask to evaluate a point outside the bounds).
25
+
If provided, the constraints the variables are non-relaxable (i.e. Py-BOBYQA will never ask to evaluate a point outside the bounds),
26
+
although the general :math:`x \in C` constraint may be slightly violated from rounding errors.
25
27
26
28
Full details of the Py-BOBYQA algorithm are given in our papers:
27
29
28
30
1. Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers <https://doi.org/10.1145/3338517>`_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`preprint <https://arxiv.org/abs/1804.00154>`_]
29
-
2. Coralia Cartis, Lindon Roberts and Oliver Sheridan-Methven, `Escaping local minima with derivative-free methods: a numerical investigation <https://doi.org/10.1080/02331934.2021.1883015>`_, *Optimization*, 71:8 (2022), pp. 2343-2373. [`arXiv preprint: 1812.11343 <https://arxiv.org/abs/1812.11343>`_]
31
+
2. Coralia Cartis, Lindon Roberts and Oliver Sheridan-Methven, `Escaping local minima with derivative-free methods: a numerical investigation <https://doi.org/10.1080/02331934.2021.1883015>`_, *Optimization*, 71:8 (2022), pp. 2343-2373. [`arXiv preprint: 1812.11343 <https://arxiv.org/abs/1812.11343>`_]
32
+
3. Lindon Roberts, `Model Construction for Convex-Constrained Derivative-Free Optimization <https://arxiv.org/abs/2403.14960>`_, *arXiv preprint arXiv:2403.14960* (2024).
30
33
31
-
Please cite [1] when using Py-BOBYQA for local optimization, and [1,2] when using Py-BOBYQA's global optimization heuristic functionality.
34
+
Please cite [1] when using Py-BOBYQA for local optimization, [1,2] when using Py-BOBYQA's global optimization heuristic functionality, and [1,3] if using the general convex constraints :math:`x \in C` functionality.
32
35
33
36
If you are interested in solving least-squares minimization problems, you may wish to try `DFO-LS <https://github.com/numericalalgorithmsgroup/dfols>`_, which has the same features as Py-BOBYQA (plus some more), and exploits the least-squares problem structure, so performs better on such problems.
34
37
@@ -49,5 +52,6 @@ Py-BOBYQA is released under the GNU General Public License. Please `contact NAG
49
52
50
53
Acknowledgements
51
54
----------------
52
-
This software was developed under the supervision of `Coralia Cartis <https://www.maths.ox.ac.uk/people/coralia.cartis>`_, and was supported by the EPSRC Centre For Doctoral Training in `Industrially Focused Mathematical Modelling <https://www.maths.ox.ac.uk/study-here/postgraduate-study/industrially-focused-mathematical-modelling-epsrc-cdt>`_ (EP/L015803/1) in collaboration with the `Numerical Algorithms Group <http://www.nag.com/>`_.
55
+
This software was initially developed under the supervision of `Coralia Cartis <https://www.maths.ox.ac.uk/people/coralia.cartis>`_, and was supported by the EPSRC Centre For Doctoral Training in `Industrially Focused Mathematical Modelling <https://www.maths.ox.ac.uk/study-here/postgraduate-study/industrially-focused-mathematical-modelling-epsrc-cdt>`_ (EP/L015803/1) in collaboration with the `Numerical Algorithms Group <http://www.nag.com/>`_.
56
+
Development of Py-BOBYQA has also been supported by the Australian Research Council (DE240100006).
Copy file name to clipboardExpand all lines: docs/build/html/_sources/install.rst.txt
+6-22
Original file line number
Diff line number
Diff line change
@@ -17,25 +17,17 @@ Additionally, the following python packages should be installed (these will be i
17
17
18
18
Installation using pip
19
19
----------------------
20
-
For easy installation, use `pip <http://www.pip-installer.org/>`_ as root:
20
+
For easy installation, use `pip <http://www.pip-installer.org/>`_:
21
21
22
22
.. code-block:: bash
23
23
24
-
$ [sudo] pip install Py-BOBYQA
25
-
26
-
If you do not have root privileges or you want to install Py-BOBYQA for your private use, you can use:
27
-
28
-
.. code-block:: bash
29
-
30
-
$ pip install --user Py-BOBYQA
31
-
32
-
which will install Py-BOBYQA in your home directory.
24
+
$ pip install Py-BOBYQA
33
25
34
26
Note that if an older install of Py-BOBYQA is present on your system you can use:
35
27
36
28
.. code-block:: bash
37
29
38
-
$ [sudo] pip install --upgrade Py-BOBYQA
30
+
$ pip install --upgrade Py-BOBYQA
39
31
40
32
to upgrade Py-BOBYQA to the latest version.
41
33
@@ -52,22 +44,14 @@ Py-BOBYQA is written in pure Python and requires no compilation. It can be insta
52
44
53
45
.. code-block:: bash
54
46
55
-
$ [sudo] pip install .
56
-
57
-
If you do not have root privileges or you want to install Py-BOBYQA for your private use, you can use:
58
-
59
-
.. code-block:: bash
60
-
61
-
$ pip install --user .
62
-
63
-
instead.
47
+
$ pip install .
64
48
65
49
To upgrade Py-BOBYQA to the latest version, navigate to the top-level directory (i.e. the one containing :code:`setup.py`) and rerun the installation using :code:`pip`, as above:
66
50
67
51
.. code-block:: bash
68
52
69
53
$ git pull
70
-
$ [sudo] pip install .# with admin privileges
54
+
$ pip install .
71
55
72
56
Testing
73
57
-------
@@ -84,7 +68,7 @@ If Py-BOBYQA was installed using `pip <http://www.pip-installer.org/>`_ you can
84
68
85
69
.. code-block:: bash
86
70
87
-
$ [sudo] pip uninstall Py-BOBYQA
71
+
$ pip uninstall Py-BOBYQA
88
72
89
73
If Py-BOBYQA was installed manually you have to remove the installed files by hand (located in your python site-packages directory).
0 commit comments