Source code for paref.pareto_reflections.find_edge_points
import numpy as np
from paref.interfaces.moo_algorithms.blackbox_function import BlackboxFunction
from paref.pareto_reflections.minimize_g import MinGParetoReflection
[docs]
class FindEdgePoints(MinGParetoReflection):
"""Find the edge points of the Pareto front
.. warning::
This Pareto reflection assumes that there exist edge points
When to use
-----------
This Pareto reflection should be used if the edge points of the Pareto front are searched.
.. note::
In two dimensions, the edge points of the Pareto correspond to the Pareto points which are
minimal in one component, i.e. to the one Pareto points.
What it does
------------
The Pareto points of this map are the ones which minimize the weighted sum where one component
is given much smaller weight than the others.
Mathematical formula
--------------------
.. math::
p(x) = \sum_{i=1,...,n,i\\neq j}\\epsilon x_{i}+ x_j
where :math:`j` is the component to which the edge corresponds.
"""
def __init__(self,
dimension: int,
blackbox_function: BlackboxFunction, ):
"""
Parameters
----------
dimension :
component to which the edge corresponds
blackbox_function :
blackbox function to which this reflection is applied
"""
self.dimension = dimension
super().__init__(blackbox_function=blackbox_function)
@property
def g(self):
return lambda x: np.sum(x) - x[self.dimension]