module documentation
        
        This module contains various utility functions and classes for the MOArchiving package.
| Class |  | A class to represent a sorted list of nodes, together with additional methods that follow the definition in the paper. | 
| Class |  | A class to represent a node in a doubly linked list. | 
| Function | add | Add a new node to the list sorted by z | 
| Function | compute | Computes the area as described in the paper | 
| Function | hv3dplus | Computes the hypervolume indicator in d=3 in linear time | 
| Function | hv4dplus | Compute the hypervolume indicator in d=4 by iteratively computing the hypervolume indicator in d=3 (using hv3d+) | 
| Function | hv4dplus | Compute the hypervolume indicator in d=4 by iteratively computing the one contribution problem in d=3. | 
| Function | init | Initialize the sentinel nodes for the list of nodes given the reference point and the dimensionality | 
| Function | lexicographic | Returns True if a is lexicographically less than b, False otherwise | 
| Function | my | Sort an array of keys in lexicographic order and return the indices. Equivalent to np.lexsort | 
| Function | one | Computes the contribution of adding a new point to the archive in three dimensions | 
| Function | remove | Remove a node from the list sorted by z | 
| Function | restart | Undocumented | 
| Function | restart | Resets the cnext pointers for the y-dimension. | 
| Function | setup | Set up a circular doubly linked list from the given data and reference point | 
| Function | setup | Sets up the closest[0] and closest[1] pointers for the new node | 
| Function | strictly | Return True if a strictly dominates b, False otherwise | 
| Function | update | Undocumented | 
| Function | weakly | Return True if a weakly dominates b, False otherwise | 
Compute the hypervolume indicator in d=4 by iteratively computing the hypervolume indicator in d=3 (using hv3d+)
Compute the hypervolume indicator in d=4 by iteratively computing the one contribution problem in d=3.
Initialize the sentinel nodes for the list of nodes given the reference point and the dimensionality
Return True if a strictly dominates b, False otherwise
>>> strictly_dominates([1, 2, 3], [2, 3, 3], n_obj=3) True >>> strictly_dominates([1, 2, 3], [2, 2, 2], n_obj=3) False >>> strictly_dominates([1, 2, 3], [1, 2, 3], n_obj=3) False