Source code for fragile.callbacks.oobs

import judo

from fragile.core.api_classes import Callback


[docs]class KillWorstWalkers(Callback): name = "oobs_kill_worst" default_inputs = {"oobs": {}, "scores": {}} def __init__(self, stds: float = 1.0, **kwargs): super(KillWorstWalkers, self).__init__(**kwargs) self._stds = stds
[docs] def oob_condition(self): scores = self.get("scores") if self.swarm.minimize: return scores > (scores.min() + scores.std() * self._stds) else: return scores < (scores.max() - scores.std() * self._stds)
[docs] def after_env(self): oobs = judo.logical_or(self.get("oobs"), self.oob_condition()) self.update(oobs=oobs)