'Success criteria for trust-constr
The trust-constr algorithm from scipy.optimize.minimize defines 4 stop criteria:
Termination status:
0 : The maximum number of function evaluations is exceeded.
1 : gtol termination condition is satisfied.
2 : xtol termination condition is satisfied.
3 : callback function requested termination.
From here
The OptimizeResult object returned also contains a field success, which is filled in as follows:
# Status 3 occurs when the callback function requests termination,
# this is assumed to not be a success.
result.success = True if result.status in (1, 2) else False
From here
I understand why status 1 is considered success (infinity norm of Lagrangian gradient and the constraint violation are smaller than gtol), but why is status 2 also considered success? The xtol criterium is satisfied when the trust region radius drops below xtol, 1e-8 by default, but it doesn't check the Lagrangian gradient to see if an extremum was reached or the constraint violation to see if the constraints are satisfied. It seems this criterium stops the algorithm because it doesn't make sense to iterate further, not because it reached a solution. What am I missing?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
