hypervolume

Module Contents

Classes

Attributes

class HyperVolume(referencePoint)[source]

Hypervolume computation based on variant 3 of the algorithm in the paper: C. M. Fonseca, L. Paquete, and M. Lopez-Ibanez. An improved dimension-sweep algorithm for the hypervolume indicator. In IEEE Congress on Evolutionary Computation, pages 1157-1163, Vancouver, Canada, July 2006.

Minimization is implicitly assumed here!

compute(front)[source]

Returns the hypervolume that is dominated by a non-dominated front.

Before the HV computation, front and reference point are translated, so that the reference point is [0, …, 0].

hvRecursive(dimIndex, length, bounds)[source]

Recursive call to hypervolume calculation.

In contrast to the paper, the code assumes that the reference point is [0, …, 0]. This allows the avoidance of a few operations.

preProcess(front)[source]

Sets up the list data structure needed for calculation.

sortByDimension(nodes, i)[source]

Sorts the list of nodes by the i-th value of the contained points.

class MultiList(numberLists)[source]

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.

class Node(numberLists, cargo=None)[source]
__str__()[source]

Return str(self).

__str__()[source]

Return str(self).

__len__()[source]

Returns the number of lists that are included in this MultiList.

getLength(i)[source]

Returns the length of the i-th list.

append(node, index)[source]

Appends a node to the end of the list at the given index.

extend(nodes, index)[source]

Extends the list at the given index with the nodes.

remove(node, index, bounds)[source]

Removes and returns ‘node’ from all lists in [0, ‘index’[.

reinsert(node, index, bounds)[source]

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.