Esempio n. 1
0
 def __call__(self, optimizer: base.Optimizer, candidate: p.Parameter, value: float) -> None:
     data = {"#instrumentation": optimizer.instrumentation.name,
             "#optimizer": optimizer.name,
             "#session": self._session,
             "#num-ask": optimizer.num_ask,
             "#num-tell": optimizer.num_tell,
             "#num-tell-not-asked": optimizer.num_tell_not_asked,
             "#uid": candidate.uid,
             "#generation": candidate.generation,
             "#parents_uids": [],
             "#loss": value}
     if hasattr(optimizer, "_parameters"):
         configopt = optimizer._parameters  # type: ignore
         if isinstance(configopt, base.ParametrizedFamily):
             data.update({"#optimizer#" + x: y for x, y in configopt.config().items()})
     if candidate.generation > 1:
         data["#parents_uids"] = candidate.parents_uids
     for name, param in helpers.flatten_parameter(candidate, with_containers=False, order=1).items():
         val = param.value
         data[name if name else "0"] = val.tolist() if isinstance(val, np.ndarray) else val
         if isinstance(param, p.Array):
             val = param.sigma.value
             data[(name if name else "0") + "#sigma"] = val.tolist() if isinstance(val, np.ndarray) else val
     try:  # avoid bugging as much as possible
         with self._filepath.open("a") as f:
             f.write(json.dumps(data) + "\n")
     except Exception:  # pylint: disable=broad-except
         warnings.warn("Failing to json data")
Esempio n. 2
0
 def __call__(self, optimizer: base.Optimizer, candidate: p.Parameter, value: float) -> None:
     data = {"#parametrization": optimizer.parametrization.name,
             "#optimizer": optimizer.name,
             "#session": self._session,
             "#num-ask": optimizer.num_ask,
             "#num-tell": optimizer.num_tell,
             "#num-tell-not-asked": optimizer.num_tell_not_asked,
             "#uid": candidate.uid,
             "#lineage": candidate.heritage["lineage"],
             "#generation": candidate.generation,
             "#parents_uids": [],
             "#loss": value}
     if hasattr(optimizer, "_configured_optimizer"):
         configopt = optimizer._configured_optimizer  # type: ignore
         if isinstance(configopt, base.ConfiguredOptimizer):
             data.update({"#optimizer#" + x: y for x, y in configopt.config().items()})
     if isinstance(candidate._meta.get("sigma"), float):
         data["#meta-sigma"] = candidate._meta["sigma"]  # for TBPSA-like algorithms
     if candidate.generation > 1:
         data["#parents_uids"] = candidate.parents_uids
     for name, param in helpers.flatten_parameter(candidate, with_containers=False, order=1).items():
         val = param.value
         if inspect.ismethod(val):
             val = repr(val.__self__)  # show mutation class
         data[name if name else "0"] = val.tolist() if isinstance(val, np.ndarray) else val
         if isinstance(param, p.Array):
             val = param.sigma.value
             data[(name if name else "0") + "#sigma"] = val.tolist() if isinstance(val, np.ndarray) else val
     try:  # avoid bugging as much as possible
         with self._filepath.open("a") as f:
             f.write(json.dumps(data) + "\n")
     except Exception as e:  # pylint: disable=broad-except
         warnings.warn(f"Failing to json data: {e}")