Skip to content

Commit ac21479

Browse files
committed
Bugfix in restart throwing errors
1 parent c337582 commit ac21479

4 files changed

Lines changed: 14 additions & 2 deletions

File tree

dfols/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from __future__ import absolute_import, division, print_function, unicode_literals
4040

4141
# DFO-LS version
42-
__version__ = '1.6.4'
42+
__version__ = '1.6.5'
4343

4444
# Main solver & exit flags
4545
from .solver import *

dfols/controller.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,13 @@ def geometry_step(self, knew, adelt, number_of_samples, params, throw_error_on_n
609609
else:
610610
# Solve problem: bounds are sl <= xnew <= su, and ||xnew-xopt|| <= adelt
611611
xnew = trsbox_geometry(self.model.xopt(), c, g, np.minimum(self.model.sl, 0.0), np.maximum(self.model.su, 0.0), adelt)
612-
except LA.LinAlgError:
612+
except LA.LinAlgError as e:
613+
# This could come from throw_error_on_nans, in which case we actually want to throw properly
614+
if throw_error_on_nans and "NaN encountered in objective evaluations" in str(e):
615+
# Re-raise
616+
raise np.linalg.LinAlgError(str(e))
617+
618+
# Otherwise, handle silently
613619
exit_info = ExitInformation(EXIT_LINALG_ERROR, "Singular matrix encountered in geometry step")
614620
return exit_info # didn't fix geometry - return & quit
615621

dfols/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,8 @@ def lagrange_gradient(self, k=None, factorise_first=True, throw_error_on_nans=Fa
431431
if np.any(np.isnan(self.fval_v[fval_row_idx, :])): # check objective values
432432
if self.do_logging:
433433
module_logger.warning("model.lagrange_gradient: NaNs encountered in objective evaluations, raising error")
434+
# WARNING: Do not change this error message without checking controller.geometry_step
435+
# error handling/string matching
434436
raise np.linalg.LinAlgError("NaN encountered in objective evaluations during Lagrange polynomial construction")
435437

436438
soln = self.solve_geom_system(rhs)

docs/history.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,7 @@ Version 1.6.4 (23 Mar 2026)
107107
-------------------------
108108
* Add new parameter :code:`restarts.throw_error_on_nans` to customize handling of NaN objective values during restarts
109109

110+
Version 1.6.5 (23 Mar 2026)
111+
-------------------------
112+
* Bugfix in handling of :code:`restarts.throw_error_on_nans` from v1.6.4
113+

0 commit comments

Comments
 (0)