Capacity and Reference Points
Method |
---|
MultimapContainer |
Check size |
[[nodiscard]] bool empty() const noexcept; |
[[nodiscard]] size_type size() const noexcept; |
[[nodiscard]] size_type max_size() const noexcept; |
SpatialContainer |
Check dimensions |
[[nodiscard]] size_type dimensions() const noexcept; |
Get max/min values |
dimension_type max_value(size_type dimension) const; |
dimension_type min_value(size_type dimension) const; |
FrontContainer |
Reference points |
key_type ideal() const; |
dimension_type ideal(size_type dimension) const; |
key_type nadir() const; |
dimension_type nadir(size_type dimension) const; |
key_type worst() const; |
dimension_type worst(size_type dimension) const; |
Target directions |
[[nodiscard]] bool is_minimization() const noexcept |
[[nodiscard]] bool is_maximization() const noexcept |
[[nodiscard]] bool is_minimization(size_t dimension) const noexcept |
[[nodiscard]] bool is_maximization(size_t dimension) const noexcept |
Parameters
dimension
- index of the dimension for which we want the minimum or maximum value
Return value
empty()
-true
if and only if container (equivalent but more efficient thanbegin() == end()
)size()
- The number of elements in the containermax_size()
- An upper bound on the maximum number of elements the container can holddimensions()
- Number of dimensions in the container (same asM
, whenM != 0
)max_value(d)
- Maximum value in a given dimensiond
min_value(d)
- Minimum value in a given dimensiond
ideal()
- Key with best value possible in each dimensionideal(d)
- Best value possible in a given dimensiond
nadir()
- Key with worst value possible in each dimensionnadir(d)
- Worst value possible in a given dimensiond
worst()
- Key with worst value possible in each dimensionworst(d)
- Worst value possible in a given dimensiond
is_minimization()
,is_maximization()
: true if and only if all directions are minimization / maximizationis_minimization(i)
,is_maximization(i)
: true if and only if dimensioni
is minimization / maximization
Complexity
Notes
Because all container nodes keep their minimum bounding rectangles, we can find these values in constant time. These reference points are important components of other queries and indicators for fronts, so it's useful to obtain these values in constant time.
The nadir point
Although nadir
and worst
return the same values for fronts, they are semantically different and, do not return the same values for archives. The nadir point refers to the worst objective values over the efficient set of values in a multiobjective optimization problem, while the worst point simply refers to the worst values in a container.
The nadir point approximation is usually obtained by iteratively optimizing a problem as \(m\) uni-dimensional problems. The best estimate of the nadir point happens to be the worst point here because the front container doesn't have enough information about the underlying problem. This, however, is not the case for the archive container, which is the reason why we keep this distinction here.
Example
Continuing from the previous example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|