Added
- Add the `honour_x0` option when the solver is BOBYQA to indicate whether the user-provided `x0` can be changed.
- Include `rosenbrock_example` to illustrate the usage.
- Python version: `Bounds`, `LinearConstraint` and `NonlinearConstraint` more flexible with `None` and `[]`.
- Python version: the `constr_value` output when there are constraints other than bounds.
- MATLAB version: add `uninstall` and `clean` options to `setup.m`.
Changed
- 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` to `0.5` when the problem is scaled.
- Change the default `rhobeg` to `min(ub-lb)/4` when the solver is BOBYQA.
- Previously, if `rhobeg` is revised to be different from the default value, then `rhoend` is set to `min(rhobeg\*rhoend_default/rhobeg_default, rhoend)`, where `rhobeg_default = 1` and `rhoend_default = 1e-6`; now it is set to `min(0.1\*rhobeg, rhoend)`.
- Revise `x0` or `rhobeg` for BOBYQA to make sure that the distance between `x0` and inactive bounds is at least `rhobeg`.
- 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` and `postpdfo`.
Removed
- 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.
Fixed
- 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`, and `rhoend` 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.