diff --git a/src/popt/loop/optimize.py b/src/popt/loop/optimize.py index c1ff1e78..55d171d9 100644 --- a/src/popt/loop/optimize.py +++ b/src/popt/loop/optimize.py @@ -170,7 +170,7 @@ def run_loop(self): self.msg = 'Optimization stopped due to maximum iterations reached!' self.optimize_result['message'] = self.msg else: - if not isinstance(self.msg, str): self.msg = '' + self.msg = 'No further improvement possible, optimization converged!' self.optimize_result['message'] = self.msg # Logging some info to screen diff --git a/src/popt/misc_tools/optim_tools.py b/src/popt/misc_tools/optim_tools.py index 5a8bdc37..558be1d5 100644 --- a/src/popt/misc_tools/optim_tools.py +++ b/src/popt/misc_tools/optim_tools.py @@ -330,6 +330,12 @@ def get_optimize_result(obj): 'nit': obj.iteration, 'nfev': obj.nfev, 'njev': obj.njev}) if hasattr(obj, 'epf') and obj.epf: save_dict['epf_iteration'] = obj.epf_iteration + if hasattr(obj, 'method') and obj.method: + save_dict['method'] = obj.method + elif 'method' in obj.options: + save_dict['method'] = obj.options['method'] + if 'save_folder' in obj.options: + save_dict['save_folder'] = obj.options['save_folder'] if 'savedata' in obj.options: @@ -354,9 +360,6 @@ def get_optimize_result(obj): else: print(f'Cannot save {save_typ}!\n\n') - if 'save_folder' in obj.options: - save_dict['save_folder'] = obj.options['save_folder'] - return save_dict diff --git a/src/popt/update_schemes/linesearch.py b/src/popt/update_schemes/linesearch.py index 9c9fe3fd..69e060e1 100644 --- a/src/popt/update_schemes/linesearch.py +++ b/src/popt/update_schemes/linesearch.py @@ -268,7 +268,7 @@ def __init__(self, fun, x, jac, method='GD', hess=None, args=(), bounds=None, c self.p_old = None # Initial results - self.optimize_result = self.get_intermediate_results() + self.optimize_result = ot.get_optimize_results() if self.saveit: ot.save_optimize_results(self.optimize_result) if self.logger is not None: @@ -432,7 +432,7 @@ def calc_update(self, iter_resamp=0): success = True # Save Results - self.optimize_result = self.get_intermediate_results() + self.optimize_result = ot.get_optimize_result() if self.saveit: ot.save_optimize_results(self.optimize_result) @@ -492,6 +492,8 @@ def calc_update(self, iter_resamp=0): def get_intermediate_results(self): + # Obsolete: use get_optimize_results in optim_tools + # Define default results results = { 'fun': self._fk,