Skip to content

Commit 6d97c7a

Browse files
author
Rolf Johan Lorentzen
committed
Fix error in optimization loop
1 parent 3252b0c commit 6d97c7a

1 file changed

Lines changed: 36 additions & 36 deletions

File tree

popt/loop/optimize.py

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -172,42 +172,42 @@ def run_loop(self):
172172
if not isinstance(self.msg, str): self.msg = ''
173173
self.optimize_result['message'] = self.msg
174174

175-
# Logging some info to screen
176-
logger.info(' Optimization converged in %d iterations ', self.iteration-1)
177-
logger.info(' Optimization converged with final obj_func = %.4f',
178-
np.mean(self.optimize_result['fun']))
179-
logger.info(' Total number of function evaluations = %d', self.optimize_result['nfev'])
180-
logger.info(' Total number of jacobi evaluations = %d', self.optimize_result['njev'])
181-
if self.start_time is not None:
182-
logger.info(' Total elapsed time = %.2f minutes', (time.perf_counter()-self.start_time)/60)
183-
logger.info(' ============================================')
184-
185-
# Test for convergence of outer epf loop
186-
epf_not_converged = False
187-
if self.epf:
188-
if self.epf_iteration > self.epf['max_epf_iter']: # max epf_iterations set to 10
189-
logger.info(f' -----> EPF-EnOpt: maximum epf iterations reached') # print epf info
190-
break
191-
p = np.abs(previous_state-self.mean_state) / (np.abs(previous_state) + 1.0e-9)
192-
conv_crit = self.epf['conv_crit']
193-
if np.any(p > conv_crit):
194-
epf_not_converged = True
195-
previous_state = self.mean_state
196-
self.epf['r'] *= self.epf['r_factor'] # increase penalty factor
197-
self.obj_func_tol *= self.epf['tol_factor'] # decrease tolerance
198-
self.obj_func_values = self.fun(self.mean_state, **self.epf)
199-
self.iteration = 0
200-
self.epf_iteration += 1
201-
optimize_result = ot.get_optimize_result(self)
202-
ot.save_optimize_results(optimize_result)
203-
self.nfev += 1
204-
self.iteration = +1
205-
r = self.epf['r']
206-
logger.info(f' -----> EPF-EnOpt: {self.epf_iteration}, {r} (outer iteration, penalty factor)') # print epf info
207-
else:
208-
logger.info(f' -----> EPF-EnOpt: converged, no variables changed more than {conv_crit*100} %') # print epf info
209-
final_obj_no_penalty = str(round(float(self.fun(self.mean_state)),4))
210-
logger.info(f' -----> EPF-EnOpt: objective value without penalty = {final_obj_no_penalty}') # print epf info
175+
# Logging some info to screen
176+
logger.info(' Optimization converged in %d iterations ', self.iteration-1)
177+
logger.info(' Optimization converged with final obj_func = %.4f',
178+
np.mean(self.optimize_result['fun']))
179+
logger.info(' Total number of function evaluations = %d', self.optimize_result['nfev'])
180+
logger.info(' Total number of jacobi evaluations = %d', self.optimize_result['njev'])
181+
if self.start_time is not None:
182+
logger.info(' Total elapsed time = %.2f minutes', (time.perf_counter()-self.start_time)/60)
183+
logger.info(' ============================================')
184+
185+
# Test for convergence of outer epf loop
186+
epf_not_converged = False
187+
if self.epf:
188+
if self.epf_iteration > self.epf['max_epf_iter']: # max epf_iterations set to 10
189+
logger.info(f' -----> EPF-EnOpt: maximum epf iterations reached') # print epf info
190+
break
191+
p = np.abs(previous_state-self.mean_state) / (np.abs(previous_state) + 1.0e-9)
192+
conv_crit = self.epf['conv_crit']
193+
if np.any(p > conv_crit):
194+
epf_not_converged = True
195+
previous_state = self.mean_state
196+
self.epf['r'] *= self.epf['r_factor'] # increase penalty factor
197+
self.obj_func_tol *= self.epf['tol_factor'] # decrease tolerance
198+
self.obj_func_values = self.fun(self.mean_state, **self.epf)
199+
self.iteration = 0
200+
self.epf_iteration += 1
201+
optimize_result = ot.get_optimize_result(self)
202+
ot.save_optimize_results(optimize_result)
203+
self.nfev += 1
204+
self.iteration = +1
205+
r = self.epf['r']
206+
logger.info(f' -----> EPF-EnOpt: {self.epf_iteration}, {r} (outer iteration, penalty factor)') # print epf info
207+
else:
208+
logger.info(f' -----> EPF-EnOpt: converged, no variables changed more than {conv_crit*100} %') # print epf info
209+
final_obj_no_penalty = str(round(float(self.fun(self.mean_state)),4))
210+
logger.info(f' -----> EPF-EnOpt: objective value without penalty = {final_obj_no_penalty}') # print epf info
211211

212212
def save(self):
213213
"""

0 commit comments

Comments
 (0)