shark::HypervolumeSubsetSelection2D Struct Reference

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...
 

Detailed Description

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.

Member Function Documentation

◆ operator()() [1/2]

template<typename Set , typename SelectedSet , typename VectorType >
void shark::HypervolumeSubsetSelection2D::operator() ( Set const &  points,
SelectedSet &  selected,
std::size_t  k,
VectorType const &  refPoint 
)
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.

Parameters
[in]pointsThe set \(S\) of points to select
[out]selectedset of the same size as the set of points indicating whether the point is selected (1) or not (0)
[in]knumber of points to select. Must be lrger than 0
[in]refPointThe 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.

◆ operator()() [2/2]

template<typename Set , typename SelectedSet >
void shark::HypervolumeSubsetSelection2D::operator() ( Set const &  points,
SelectedSet &  selected,
std::size_t  k 
)
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.

Parameters
[in]pointsThe set \(S\) of points to select
[out]selectedset of the same size as the set of points indicating whether the point is selected (1) or not (0)
[in]knumber 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.


The documentation for this struct was generated from the following file: