@@ -213,6 +213,18 @@ def __init__(
213213 "seed" : 124 ,
214214 "use_cod_y" : False ,
215215 }
216+ # Logging information:
217+ self .counter = 0
218+ self .min_y = None
219+ self .min_X = None
220+ self .min_mean_X = None
221+ self .min_mean_y = None
222+ self .mean_X = None
223+ self .mean_y = None
224+ self .var_y = None
225+ logger .setLevel (self .log_level )
226+ logger .info (f"Starting the logger at level { self .log_level } for module { __name__ } :" )
227+
216228 self .surrogate_control .update (surrogate_control )
217229 # If no surrogate model is specified, use the internal
218230 # spotPython kriging surrogate:
@@ -233,24 +245,15 @@ def __init__(
233245 cod_type = self .surrogate_control ["cod_type" ],
234246 var_type = self .surrogate_control ["var_type" ],
235247 use_cod_y = self .surrogate_control ["use_cod_y" ],
248+ spot_writer = self .fun_control ["spot_writer" ],
249+ counter = self .design_control ["init_size" ] * self .design_control ["repeats" ] - 1 ,
236250 )
237251 # Optimizer related information:
238252 self .optimizer = optimizer
239253 self .optimizer_control = {"max_iter" : 1000 , "seed" : 125 }
240254 self .optimizer_control .update (optimizer_control )
241255 if self .optimizer is None :
242256 self .optimizer = optimize .differential_evolution
243- # Logging information:
244- self .counter = 0
245- self .min_y = None
246- self .min_X = None
247- self .min_mean_X = None
248- self .min_mean_y = None
249- self .mean_X = None
250- self .mean_y = None
251- self .var_y = None
252- logger .setLevel (self .log_level )
253- logger .info (f"Starting the logger at level { self .log_level } for module { __name__ } :" )
254257
255258 def to_red_dim (self ):
256259 self .all_lower = self .lower
@@ -334,6 +337,9 @@ def run(self, X_start=None):
334337 self .fit_surrogate ()
335338 # progress bar:
336339 self .show_progress_if_needed (timeout_start )
340+ if self .fun_control ["spot_writer" ] is not None :
341+ writer = self .fun_control ["spot_writer" ]
342+ writer .close ()
337343 return self
338344
339345 def initialize_design (self , X_start = None ):
@@ -404,6 +410,8 @@ def update_stats(self):
404410
405411 """
406412 self .min_y = min (self .y )
413+ # get the last y value:
414+ self .last_y = self .y [- 1 ]
407415 self .min_X = self .X [argmin (self .y )]
408416 self .counter = self .y .size
409417 # Update aggregated x and y values (if noise):
@@ -414,6 +422,14 @@ def update_stats(self):
414422 self .var_y = Z [2 ]
415423 self .min_mean_y = min (self .mean_y )
416424 self .min_mean_X = self .mean_X [argmin (self .mean_y )]
425+ if self .fun_control ["spot_writer" ] is not None :
426+ writer = self .fun_control ["spot_writer" ]
427+ y_min = self .min_y .copy ()
428+ y_last = self .last_y .copy ()
429+ X_min = self .min_X .copy ()
430+ writer .add_scalars ("spot_y" , {"min" : y_min , "last" : y_last }, self .counter )
431+ writer .add_scalars ("spot_X" , {f"X_{ i } " : X_min [i ] for i in range (self .k )}, self .counter )
432+ writer .flush ()
417433
418434 def suggest_new_X_old (self ):
419435 """
0 commit comments