|
41 | 41 |
|
42 | 42 | __all__ = ['Controller', 'ExitInformation', 'EXIT_SLOW_WARNING', 'EXIT_MAXFUN_WARNING', 'EXIT_SUCCESS',
|
43 | 43 | 'EXIT_INPUT_ERROR', 'EXIT_TR_INCREASE_ERROR', 'EXIT_LINALG_ERROR', 'EXIT_FALSE_SUCCESS_WARNING',
|
44 |
| - 'EXIT_AUTO_DETECT_RESTART_WARNING'] |
| 44 | + 'EXIT_AUTO_DETECT_RESTART_WARNING', 'EXIT_EVAL_ERROR'] |
45 | 45 |
|
46 | 46 | module_logger = logging.getLogger(__name__)
|
47 | 47 |
|
|
54 | 54 | EXIT_INPUT_ERROR = -1 # error, bad inputs
|
55 | 55 | EXIT_TR_INCREASE_ERROR = -2 # error, trust region step increased model value
|
56 | 56 | EXIT_LINALG_ERROR = -3 # error, linalg error (singular matrix encountered)
|
| 57 | +EXIT_EVAL_ERROR = -4 # error, objective evaluation error (e.g. nan result received) |
57 | 58 |
|
58 | 59 |
|
59 | 60 | class ExitInformation(object):
|
@@ -83,11 +84,13 @@ def message(self, with_stem=True):
|
83 | 84 | return "Error (linear algebra): " + self.msg
|
84 | 85 | elif self.flag == EXIT_FALSE_SUCCESS_WARNING:
|
85 | 86 | return "Warning (max false good steps): " + self.msg
|
| 87 | + elif self.flag == EXIT_EVAL_ERROR: |
| 88 | + return "Error (function evaluation): " + self.msg |
86 | 89 | else:
|
87 | 90 | return "Unknown exit flag: " + self.msg
|
88 | 91 |
|
89 | 92 | def able_to_do_restart(self):
|
90 |
| - if self.flag in [EXIT_TR_INCREASE_ERROR, EXIT_TR_INCREASE_WARNING, EXIT_LINALG_ERROR, EXIT_SLOW_WARNING, EXIT_AUTO_DETECT_RESTART_WARNING]: |
| 93 | + if self.flag in [EXIT_TR_INCREASE_ERROR, EXIT_TR_INCREASE_WARNING, EXIT_LINALG_ERROR, EXIT_SLOW_WARNING, EXIT_AUTO_DETECT_RESTART_WARNING, EXIT_EVAL_ERROR]: |
91 | 94 | return True
|
92 | 95 | elif self.flag in [EXIT_MAXFUN_WARNING, EXIT_INPUT_ERROR]:
|
93 | 96 | return False
|
|
0 commit comments