Implementation of the exact hypervolume subset selection algorithm in 2 dimensions. More...
#include <shark/Algorithms/DirectSearch/Operators/Hypervolume/HypervolumeSubsetSelection2D.h>
Public Member Functions | |
template<typename Set , typename SelectedSet , typename VectorType > | |
void | operator() (Set const &points, SelectedSet &selected, std::size_t k, VectorType const &refPoint) |
Executes the algorithm. While this algorithm in general accepts fronts with dominated points in it, the caller has to ensure that after domination checks there are at least as many points left as there are to select. The Algorithm will throw an exception otherwise. More... | |
template<typename Set , typename SelectedSet > | |
void | operator() (Set const &points, SelectedSet &selected, std::size_t k) |
Executes the algorithm. More... | |
Implementation of the exact hypervolume subset selection algorithm in 2 dimensions.
This algorithm solves the problem of selecting a subset of points with largest hypervolume in 2D. The algorithm has complexity n (k+log(n))
While this algorithm accepts fronts with dominated points in it, the caller has to ensure that after domination checks there are at least as many points left as there are to select. The Algorithm will throw an exception otherwise.
This can easily be ensured by removing the nondominated points prior to calling this function.
The algorithm is described in: Bringmann, Karl, Tobias Friedrich, and Patrick Klitzke. "Two-dimensional subset selection for hypervolume and epsilon-indicator." Proceedings of the 2014 conference on Genetic and evolutionary computation. ACM, 2014. (although it is not very helpful)
Definition at line 54 of file HypervolumeSubsetSelection2D.h.
|
inline |
Executes the algorithm. While this algorithm in general accepts fronts with dominated points in it, the caller has to ensure that after domination checks there are at least as many points left as there are to select. The Algorithm will throw an exception otherwise.
This can easily be ensured by removing the nondominated points prior to calling this function.
[in] | points | The set \(S\) of points to select |
[out] | selected | set of the same size as the set of points indicating whether the point is selected (1) or not (0) |
[in] | k | number of points to select. Must be lrger than 0 |
[in] | refPoint | The reference point \(\vec{r} \in \mathbb{R}^2\) for the hypervolume calculation, needs to fulfill: \( \forall s \in S: s \preceq \vec{r}\). . |
Definition at line 256 of file HypervolumeSubsetSelection2D.h.
References SHARK_RUNTIME_CHECK, and SIZE_CHECK.
|
inline |
Executes the algorithm.
This version does not use a reference point. instead the extreme points are always kept which implicitely defines a reference point that after domination checks there are at least as many points left as there are to select. The Algorithm will throw an exception otherwise.
This can easily be ensured by removing the nondominated points prior to calling this function.
[in] | points | The set \(S\) of points to select |
[out] | selected | set of the same size as the set of points indicating whether the point is selected (1) or not (0) |
[in] | k | number of points to select, must be larger or equal 2 |
Definition at line 290 of file HypervolumeSubsetSelection2D.h.
References SHARK_RUNTIME_CHECK, and SIZE_CHECK.