Distribution
Method |
---|
FrontContainer |
Front Distribution |
[[nodiscard]] double uniformity() const |
[[nodiscard]] double average_distance() const |
[[nodiscard]] double average_nearest_distance(size_t k = 5) const |
[[nodiscard]] double average_crowding_distance() const |
Point Distribution |
double crowding_distance(const_iterator element, key_type worst_point, key_type ideal_point) const |
double crowding_distance(const_iterator element) const |
double crowding_distance(const key_type &point) const |
Parameters
k
- number of nearest elements to considerelement
- element for which we want the crowding distance (see below)key_type
- point for which we want the crowding distance (see below)worst_point
,ideal_point
- reference extreme points for the crowding distance
Return value
uniformity
: minimal distance between two points in the frontaverage_distance
: average distance between points in the frontaverage_nearest_distance
: average distance between points and their nearest pointsaverage_crowding_distance
: average crowding distance (see below) between points in the frontcrowding_distance
: the crowding distance of a single element
Complexity
uniformity
: \(O(m n \log n)\)average_distance
: \(O(m n^2)\)average_nearest_distance
: \(O(k m n \log n)\)average_crowding_distance
: \(O(m n \log n)\)crowding_distance
: \(O(m \log n)\)
Notes
Distribution indicators measure how uniformly the points are distributed on the front. This is useful for a better approximation of the target front.
The Crowding Distance
The crowding distance indicator replaces the usual euclidean distance between points (\(\sqrt{\sum_{i=1}^m (p_i - q_i)^2}\)) with the coordinate distance between the nearest points in each dimension (\(\sum_{i=1}^m | p_i - nearest_{1}(p_i, m) | + | p_i - nearest_2(p_i, m)|\)).
Example
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
1 2 3 4 5 |
|