Skip to content

Commit 09cace9

Browse files
Merge pull request #32 from numericalalgorithmsgroup/convex_constraints
Convex constraints
2 parents 3a3bd50 + 88c5a80 commit 09cace9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+2574
-1213
lines changed

README.rst

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ More details about Py-BOBYQA and its enhancements over BOBYQA can be found in ou
2828

2929
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>`_]
3030
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).
3132

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.
3334

3435
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>`_.
3536

@@ -41,13 +42,13 @@ See manual.pdf or the `online manual <https://numericalalgorithmsgroup.github.io
4142

4243
Citation
4344
--------
44-
If you use Py-BOBYQA in a paper, please cite:
45+
Full details of the Py-BOBYQA algorithm are given in our papers:
4546

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

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.
5152

5253
Requirements
5354
------------
@@ -65,31 +66,17 @@ Additionally, the following python packages should be installed (these will be i
6566

6667
Installation using pip
6768
----------------------
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/>`_:
8170

8271
.. code-block:: bash
8372
84-
$ pip install --user Py-BOBYQA
85-
86-
which will install Py-BOBYQA in your home directory.
73+
$ pip install Py-BOBYQA
8774
8875
Note that if an older install of Py-BOBYQA is present on your system you can use:
8976

9077
.. code-block:: bash
9178
92-
$ [sudo] pip install --upgrade Py-BOBYQA
79+
$ pip install --upgrade Py-BOBYQA
9380
9481
to upgrade Py-BOBYQA to the latest version.
9582

@@ -106,13 +93,7 @@ Py-BOBYQA is written in pure Python and requires no compilation. It can be insta
10693

10794
.. code-block:: bash
10895
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 .
11697
11798
instead.
11899

@@ -121,7 +102,7 @@ To upgrade Py-BOBYQA to the latest version, navigate to the top-level directory
121102
.. code-block:: bash
122103
123104
$ git pull
124-
$ [sudo] pip install . # with admin privileges
105+
$ pip install .
125106
126107
Testing
127108
-------
@@ -144,7 +125,7 @@ If Py-BOBYQA was installed using *pip* you can uninstall as follows:
144125

145126
.. code-block:: bash
146127
147-
$ [sudo] pip uninstall Py-BOBYQA
128+
$ pip uninstall Py-BOBYQA
148129
149130
If Py-BOBYQA was installed manually you have to remove the installed files by hand (located in your python site-packages directory).
150131

docs/advanced.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ Logging and Output
2121

2222
Initialization of Points
2323
------------------------
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.
2727

2828
Trust Region Management
2929
-----------------------
@@ -74,6 +74,12 @@ Multiple Restarts
7474
* :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.
7575
* :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.
7676

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}`.
7783

7884
References
7985
----------

docs/build/doctrees/advanced.doctree

3.7 KB
Binary file not shown.
12 Bytes
Binary file not shown.
-275 KB
Binary file not shown.

docs/build/doctrees/history.doctree

-205 Bytes
Binary file not shown.

docs/build/doctrees/index.doctree

2.1 KB
Binary file not shown.

docs/build/doctrees/info.doctree

202 Bytes
Binary file not shown.

docs/build/doctrees/install.doctree

-1.68 KB
Binary file not shown.

docs/build/doctrees/userguide.doctree

18.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)