performance
— Performance Measurement¶
Measures for the evaluation of algorithm performance.

class
evoalgos.performance.
QualityIndicator
¶ Abstract base class for quality indicators.

__str__
()¶ Return the indicator’s name.

assess
(population)¶ Assess a set of individuals.
This is an abstract method.
Parameters: population (sequence of Individual) – The individuals to assess.

assess_non_dom_front
(front)¶ Assess a nondominated front.
This is an abstract method.
Parameters: front (iterable) – An iterable of points or individuals with the special property that no one is dominated by any other regarding Paretodominance.


class
evoalgos.performance.
PeakRatio
(reference_set, required_dist=0.0, dist_matrix_function=None)¶ The fraction of optima approximated to a certain precision.

__init__
(reference_set, required_dist=0.0, dist_matrix_function=None)¶ Constructor.
Parameters:  reference_set (sequence of Individual) – The known optima of an artificial optimization problem.
 required_dist (float, optional) – An optimum is considered to be approximated if a solution has a distance smaller than this value.
 dist_matrix_function (callable, optional) – Defines which distance function to use. Default is Euclidean.


class
evoalgos.performance.
PeakDistance
(reference_set, dist_matrix_function=None)¶ Mean distance between optima and their nearest neighbor.

__init__
(reference_set, dist_matrix_function=None)¶ Constructor.
Parameters:  reference_set (sequence of Individual) – The known optima of an artificial optimization problem.
 dist_matrix_function (callable, optional) – Defines which distance function to use. Default is Euclidean.


class
evoalgos.performance.
PeakInaccuracy
(reference_set, dist_matrix_function=None)¶ Mean deviation in objectives between optima and their nearest neighbor.

__init__
(reference_set, dist_matrix_function=None)¶ Constructor.
Parameters:  reference_set (sequence of Individual) – The known optima of an artificial optimization problem.
 dist_matrix_function (callable, optional) – Defines which distance function to use. Default is Euclidean.


class
evoalgos.performance.
AveragedHausdorffDistance
(reference_set, p=1.0, dist_matrix_function=None)¶ Averaged Hausdorff distance (AHD).
As defined in the paper [Schuetze2012].
References
[Schuetze2012] Schütze, O.; Esquivel, X.; Lara, A.; Coello Coello, Carlos A. (2012). Using the Averaged Hausdorff Distance as a Performance Measure in Evolutionary Multiobjective Optimization. IEEE Transactions on Evolutionary Computation, Vol.16, No.4, pp. 504522. https://dx.doi.org/10.1109/TEVC.2011.2161872 
__init__
(reference_set, p=1.0, dist_matrix_function=None)¶ Constructor.
Parameters:  reference_set (sequence of Individual) – The known optima of an artificial optimization problem.
 p (float, optional) – The exponent in the AHD definition (not for the distance).
 dist_matrix_function (callable, optional) – Defines which distance function to use. Default is Euclidean.


class
evoalgos.performance.
HyperVolumeIndicator
(reference_point)¶ Abstract base class for hypervolume indicators.
Measures the dominated hypervolume with regard to a reference point. Such indicators are Paretocompliant.
Warning
The time for calculating the hypervolume is exponential in the number of objectives.

assess
(population)¶ Assess a set of individuals.
This method identifies the nondominated front of the population and then assesses it with
assess_non_dom_front()
.Parameters: population (sequence of Individual) – The individuals to assess. Returns: indicator_value – A scalar evaluating this population. Return type: float

calc_contributions
(population, others=None, all_non_dominated=False, prefer_boundary_points=False)¶ Calculate the exclusive contribution of each individual.
This code internally calls the methods
assess()
orassess_non_dom_front()
.Parameters:  population (sequence of Individual) – The individuals to assess.
 others (sequence of Individual, optional) – Other individuals that may decrease the exclusive hypervolume contribution of individuals in the assessed population, but which are not assessed themselves.
 all_non_dominated (bool, optional) – A flag indicating if population is an antichain.
 prefer_boundary_points (bool, optional) – Only exists for compatibility with
calc_contributions_2d()
. Must be false.
Returns: hv_contributions – A dict with the exclusive hypervolume contribution for each individual.
Return type:

calc_contributions_2d
(population, others=None, all_non_dominated=False, prefer_boundary_points=False)¶ Calculate contributions in the special case of 2 objectives.
This code does not call the methods
assess()
orassess_non_dom_front()
. Only call directly if you are absolutely sure you have two objectives.Parameters:  population (sequence of Individual) – The individuals to assess.
 others (sequence of Individual, optional) – Other individuals that may decrease the exclusive hypervolume contribution of the assessed population, but which are not assessed themselves.
 all_non_dominated (bool, optional) – A flag indicating if population is an antichain.
 prefer_boundary_points (bool, optional) – If true, the two boundary points are assigned an infinite contribution.
Returns: hv_contributions – A dict with the exclusive hypervolume contribution for each individual.
Return type:


class
evoalgos.performance.
FonsecaHyperVolume
(reference_point)¶ A hypervolume indicator implementation.
The code is based on variant 3, version 1.2 of the C implementation of the algorithm in [Fonseca2006]. A translation of the points was added so that the reference point is the origin, to obtain a slight speed improvement.
References
[Fonseca2006] (1, 2) C. M. Fonseca, L. Paquete, M. LopezIbanez. An improved dimensionsweep algorithm for the hypervolume indicator. In IEEE Congress on Evolutionary Computation, pages 11571163, Vancouver, Canada, July 2006. 
__init__
(reference_point)¶ Constructor.
Parameters: reference_point (iterable) – The reference point needed for the hypervolume computation.

assess_non_dom_front
(front)¶ Return the hypervolume dominated by a nondominated front.
Prior to the HV computation, front and reference point are translated so that the reference point is [0, ..., 0].
Parameters: front (iterable) – An iterable of points or individuals with the special property that no one is dominated by any other regarding Paretodominance. Returns: hypervolume – The hypervolume dominated by these points. Return type: float

hv_recursive
(dim_index, length, bounds)¶ Recursive call to hypervolume calculation.
This method should not be called directly. In contrast to [Fonseca2006], the code assumes that the reference point is [0, ..., 0]. This allows the avoidance of a few operations.

preprocess
(front)¶ Set up the list data structure needed for calculation.

static
sort_by_dim
(nodes, i)¶ Sort the list of nodes by the ith value of the contained points.


class
evoalgos.performance.
MultiList
(num_lists)¶ A special data structure needed by
FonsecaHyperVolume
.It consists of several doubly linked lists that share common nodes. So, every node has multiple predecessors and successors, one in every list.

__init__
(num_lists)¶ Constructor.
Builds num_lists doubly linked lists.

__len__
()¶ Return the number of lists that are included in this MultiList.

__str__
()¶ Return a string representation of this data structure.

append
(node, index)¶ Append a node to the end of the list at the given index.

extend
(nodes, index)¶ Extend the list at the given index with the nodes.

get_length
(i)¶ Return the length of the ith list.

reinsert
(node, index, bounds)¶ Reinsert a node back into its previous position.
Inserts node at the position it had in all lists in [0, index[ before it was removed. This method assumes that the next and previous nodes of the node that is reinserted are in the list.

remove
(node, index, bounds)¶ Remove and return node from all lists in [0, index[.
