@@ -406,13 +406,13 @@ def set_gp_params(self, **params: Any) -> None:
406406 params ["kernel" ] = wrap_kernel (kernel = params ["kernel" ], transform = self ._space .kernel_transform )
407407 self ._gp .set_params (** params )
408408
409- def save_state (self , path : str | PathLike [ str ] ) -> None :
410- """Save complete state for reconstruction of the optimizer .
409+ def _state_to_dict (self ) -> dict [ str , Any ] :
410+ """Convert optimizer state to a dictionary .
411411
412- Parameters
413- ----------
414- path : str or PathLike
415- Path to save the optimization state
412+ Returns
413+ -------
414+ dict
415+ Dictionary containing the complete optimizer state.
416416 """
417417 random_state = None
418418 if self ._random_state is not None :
@@ -428,7 +428,7 @@ def save_state(self, path: str | PathLike[str]) -> None:
428428 # Get constraint values if they exist
429429 constraint_values = self ._space ._constraint_values .tolist () if self .is_constrained else None
430430 acquisition_params = self ._acquisition_function .get_acquisition_params ()
431- state = {
431+ return {
432432 "pbounds" : {key : self ._space ._bounds [i ].tolist () for i , key in enumerate (self ._space .keys )},
433433 # Add current transformed bounds if using bounds transformer
434434 "transformed_bounds" : (self ._space .bounds .tolist () if self ._bounds_transformer else None ),
@@ -448,20 +448,14 @@ def save_state(self, path: str | PathLike[str]) -> None:
448448 "acquisition_params" : acquisition_params ,
449449 }
450450
451- with Path (path ).open ("w" ) as f :
452- json .dump (state , f , indent = 2 )
453-
454- def load_state (self , path : str | PathLike [str ]) -> None :
455- """Load optimizer state from a JSON file.
451+ def _load_state_dict (self , state : dict [str , Any ]) -> None :
452+ """Load optimizer state from a dictionary.
456453
457454 Parameters
458455 ----------
459- path : str or PathLike
460- Path to the JSON file containing the optimizer state.
456+ state : dict
457+ Dictionary containing the optimizer state.
461458 """
462- with Path (path ).open ("r" ) as file :
463- state = json .load (file )
464-
465459 params_array = np .asarray (state ["params" ], dtype = np .float64 )
466460 target_array = np .asarray (state ["target" ], dtype = np .float64 )
467461 constraint_array = (
@@ -504,3 +498,27 @@ def load_state(self, path: str | PathLike[str]) -> None:
504498 state ["random_state" ]["cached_gaussian" ],
505499 )
506500 self ._random_state .set_state (random_state_tuple )
501+
502+ def save_state (self , path : str | PathLike [str ]) -> None :
503+ """Save complete state for reconstruction of the optimizer.
504+
505+ Parameters
506+ ----------
507+ path : str or PathLike
508+ Path to save the optimization state
509+ """
510+ state = self ._state_to_dict ()
511+ with Path (path ).open ("w" ) as f :
512+ json .dump (state , f , indent = 2 )
513+
514+ def load_state (self , path : str | PathLike [str ]) -> None :
515+ """Load optimizer state from a JSON file.
516+
517+ Parameters
518+ ----------
519+ path : str or PathLike
520+ Path to the JSON file containing the optimizer state.
521+ """
522+ with Path (path ).open ("r" ) as file :
523+ state = json .load (file )
524+ self ._load_state_dict (state )
0 commit comments