Source code for paref.pareto_reflections.find_maximal_pareto_point

import numpy as np

from paref.interfaces.moo_algorithms.blackbox_function import BlackboxFunction
from paref.interfaces.pareto_reflections.pareto_reflection import ParetoReflection


[docs] class FindMaximalParetoPoint(ParetoReflection): """Find a Pareto point which represents a trade-off in all components When to use ----------- This Pareto reflection should be used if a Pareto point is desired which represents a trade-off in all components. What it does ------------ The Pareto points of this map are the ones which are closest to the theoretical global optimum after normalization. .. warning:: This Pareto reflection assumes that the minima of components was already (approximately) found. Use the ``Find1ParetoPoints`` Pareto reflection to find the minima of components. """ def __init__(self, blackbox_function: BlackboxFunction, potency: int = 4, ): """ Parameters ---------- blackbox_function : BlackboxFunction blackbox function to which this reflection is applied potency : int p rank of the underlying p-norm """ self._dimension_domain = blackbox_function.dimension_target_space self.potency = potency self._counter = 0 self.bbf = blackbox_function
[docs] def __call__(self, x: np.ndarray) -> np.ndarray: if self._counter < 2: self._counter += 1 if len(self.bbf.y) == 0: self.m = 0 else: self.m = np.min(self.bbf.y, axis=0) return np.linalg.norm(x - self.m, ord=self.potency)
@property def dimension_codomain(self) -> int: return 1 @property def dimension_domain(self) -> int: return self._dimension_domain