Source code for dragon.search_operators.addons

from abc import ABC, abstractmethod
from dragon.utils.tools import logger

[docs] class Addon(ABC): """Addon Abstract class describing what an addon is. An `Addon` is an additionnal feature that can be added to a :code:`target` object. Parameters ---------- target : Object, default=None Object targeted by the addons Attributes ---------- target : Object, default=None Object targeted by the addons """ def __init__(self, object=None): self.target = object @property def target(self): return self._target @target.setter def target(self, object): self._target = object
[docs] class VarAddon(Addon): """VarAddon `Addons` where the target must be of type `Variable`. Parameters ---------- target : `Variable`, default=None Object targeted by the addons Attributes ---------- target : `Variable`, default=None Object targeted by the addons """ def __init__(self, variable=None): super(VarAddon, self).__init__(variable) @property def target(self): return self._target @target.setter def target(self, variable): from dragon.search_space.base_variables import Variable if variable: assert isinstance(variable, Variable), logger.error( f"Object must be a `Variable` for {self.__class__.__name__}, got {variable}" ) self._target = variable
[docs] class VarNeighborhood(VarAddon): """VarNeighborhood `Addon` where the target must be of type `Variable`. Describes what a neighborhood is for a `Variable. Parameters ---------- target : `Variable`, default=None Object targeted by the addons Attributes ---------- target : `Variable`, default=None Object targeted by the addons """ def __init__(self, neighborhood, variable=None): super(VarAddon, self).__init__(variable) self.neighborhood = neighborhood @property def neighborhood(self): return self._neighborhood @abstractmethod def __call__(self, point, size=1): pass