@@ -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