All notable changes to the PDFO project will be documented in this file.
Public beta release of PDFO.
- Add the
honour_x0
option when the solver is BOBYQA to indicate whether the user-providedx0
can be changed. - Include
rosenbrock_example
to illustrate the usage. - Python version:
Bounds
,LinearConstraint
andNonlinearConstraint
more flexible withNone
and[]
. - Python version: the
constr_value
output when there are constraints other than bounds. - MATLAB version: add
uninstall
andclean
options tosetup.m
.
- Licence modified from GNU GPLv3+ to GNU LGPLv3+.
- The Fortran source code is refactored to remove the obsolete non-block
DO
loops and comparison operators. - All constraint violations are computed absolutely (instead of relatively)
- Modify the scaling behavior. Scaling is performed only if all variables have both upper and lower bounds.
- Change the default
rhobeg
to0.5
when the problem is scaled. - Change the default
rhobeg
tomin(ub-lb)/4
when the solver is BOBYQA. - Previously, if
rhobeg
is revised to be different from the default value, thenrhoend
is set tomin(rhobeg\*rhoend_default/rhobeg_default, rhoend)
, whererhobeg_default = 1
andrhoend_default = 1e-6
; now it is set tomin(0.1\*rhobeg, rhoend)
. - Revise
x0
orrhobeg
for BOBYQA to make sure that the distance betweenx0
and inactive bounds is at leastrhobeg
. - Python version: make PDFO available on PyPI.
- Python version: test files for PDFO have been added as a subpackage of
pdfo
. - MATLAB version: improve the interfaces of
prepdfo
andpostpdfo
.
- Warning about scaling.
- The
fhist
output when PDFO receives a feasibility problem. - Python version:
numpy.set_printoptions
statement in__init__.py
. - MATLAB version: interactions when modifying the user's startup script.
- In last version, the linear constraints passed to the Fortran backend can have zero gradients due to reduction when some variables are fixed by the bound constraints. Constraint validation and reduction are merged in order to avoid such a situation.
- In last version, the user-specified
npt
,rhobeg
, andrhoend
are ignored if the solver selection function is invoked. They are taken into account now. - Python version: previously, the nonlinear constraints defined as a dictionary cannot include NumPy functions of type
<ufunc>
. It is fixed now.
- Python version: the linear equality constraints are now eliminated explicitly using a QR factorization with column pivoting (or an SVD factorization if SciPy is not installed).
- Python version: wheel distributions of the package are now available on PyPI to ease the installation. The wheel distributions are generated automatically using GitHub Actions.
- If
rhobeg
is not provided butrhoend
is available, the default value ofrhobeg
is set to10\*rhoend
. Previously, it wasrhoend
. - Python version: undefined constraint bounds for
Bounds
,LinearConstraint
, andNonlinearConstraint
can now be declared asnumpy.inf
with an appropriate sign.
- Python version: Replaced deprecated
numpy.bool
calls bynumpy.bool_
.
- Python version: the call to the objective function during the debugging mechanism did not include the extra arguments, which are added now.
- The license is changed from GNU LGPLv3+ to the 3-clause BSD license.
- Python version: compilation of the Fortran backend is now performed using Meson instead of
numpy.distutils
. - Python version: the
uobyqa
,newuoa
,bobyqa
,lincoa
, andcobyla
functions are deprecated. Only thepdfo
function is now supported.
- Python version: Python 3.12 is now supported.
- The
rhobeg
andrhoend
options now becomeradius_init
andradius_final
, respectively. - Python version: the package does not provide the
Bounds
,LinearConstraint
, andNonlinearConstraint
classes anymore. Only those provided by thescipy.optimize
module are now supported. - Python version: the
pdfo
function now returns an instance ofscipy.optimize.OptimizeResult
. The names of the returned fields are changed, and are now documented. - Python version:
scipy>=1.10.0
is now required and Python 3.7 is not supported anymore.