|
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