From 3de823c1d821d592e5cba760446376f1085701db Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Wed, 23 Sep 2026 13:59:44 +0100 Subject: [PATCH 1/9] c/ Replace AVL-tree with Treap in most places. * treap2d.h: New. * treap2d_dlnode.h: New. * treap2d_fixed_size.c: New. * treap2d_fixed_size.h: New. * pareto.c (pareto_rank_3d): Replace AVL-tree with Treap. * nondominated_kung.h (find_nondominated_3d_impl_sorted, kung_merge_dim3): Likewise. * hv3d_priv.h (hv3d_preprocessing): Likewise. --- c/Makefile | 29 +- c/hv3d_priv.h | 55 ++- c/libhv.mk | 2 +- c/nondominated.c | 105 ++++- c/pareto.c | 26 ++ c/treap2d.h | 684 +++++++++++++++++++++++++++++++ c/treap2d_dlnode.h | 74 ++++ c/treap2d_fixed_size.c | 77 ++++ c/treap2d_fixed_size.h | 20 + python/src/moocore/_ffi_build.py | 1 + r/src/Makevars | 1 + 11 files changed, 1053 insertions(+), 21 deletions(-) create mode 100644 c/treap2d.h create mode 100644 c/treap2d_dlnode.h create mode 100644 c/treap2d_fixed_size.c create mode 100644 c/treap2d_fixed_size.h diff --git a/c/Makefile b/c/Makefile index 81922b8d6..f105a3fdd 100644 --- a/c/Makefile +++ b/c/Makefile @@ -81,11 +81,11 @@ SRCS = avl.c \ pareto.c \ rng.c \ timer.c \ + treap2d_fixed_size.c \ whv.c \ whv_hype.c HDRS = avl.h \ - avl_tiny.h \ bit_array.h \ cmdline.h \ common.h \ @@ -112,6 +112,9 @@ HDRS = avl.h \ rng.h \ sort.h \ timer.h \ + treap2d.h \ + treap2d_dlnode.h \ + treap2d_fixed_size.h \ whv.h \ whv_hype.h \ ziggurat_constants.h @@ -192,14 +195,14 @@ $(ALL_NAMES): %: $(BINDIR)/%$(EXE) include libhv.mk -$(BINDIR)/dominatedsets$(EXE): dominatedsets.o nondominated.o +$(BINDIR)/dominatedsets$(EXE): dominatedsets.o nondominated.o treap2d_fixed_size.o $(BINDIR)/eaf$(EXE): eaf.o eaf_main.o eaf3d.o avl.o -$(BINDIR)/epsilon$(EXE): epsilon.o nondominated.o +$(BINDIR)/epsilon$(EXE): epsilon.o nondominated.o treap2d_fixed_size.o $(BINDIR)/hv$(EXE): main-hv.o timer.o $(LIBHV_OBJS) -$(BINDIR)/hvapprox$(EXE): main-hvapprox.o timer.o hvapprox.o rng.o mt19937/mt19937.o nondominated.o -$(BINDIR)/igd$(EXE): igd.o nondominated.o -$(BINDIR)/ndsort$(EXE): ndsort.o pareto.o nondominated.o $(LIBHV_OBJS) -$(BINDIR)/nondominated$(EXE): main-nondominated.o timer.o nondominated.o +$(BINDIR)/hvapprox$(EXE): main-hvapprox.o timer.o hvapprox.o rng.o mt19937/mt19937.o nondominated.o treap2d_fixed_size.o +$(BINDIR)/igd$(EXE): igd.o nondominated.o treap2d_fixed_size.o +$(BINDIR)/ndsort$(EXE): ndsort.o pareto.o $(LIBHV_OBJS) +$(BINDIR)/nondominated$(EXE): main-nondominated.o timer.o nondominated.o treap2d_fixed_size.o $(EXE_FILES): cmdline.o io.o $(call MKDIR, $(BINDIR)/) @@ -214,22 +217,24 @@ eaf3d.o: eaf.h io.h bit_array.h cvector.h avl.h eaf_main.o: cmdline.h io.h eaf.h bit_array.h cvector.h epsilon.o: cmdline.h io.h nondominated.h epsilon.h hv.o: hv.h hv_priv.h hvc4d_priv.h sort.h libmoocore-config.h -hv3dplus.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h +hv3dplus.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h treap2d.h hv4d.o: hv4d_priv.h hv_priv.h sort.h hv_contrib.o: hv.h libmoocore-config.h nondominated.h hvapprox.o: hvapprox.h pow_int.h rng.h mt19937/mt19937.h -hvc3d.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h +hvc3d.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h treap2d.h igd.o: cmdline.h io.h nondominated.h igd.h pow_int.h io.o: io.h io_priv.h main-hv.o: cmdline.h io.h hv.h timer.h libmoocore-config.h nondominated.h hvapprox.h main-hvapprox.o: cmdline.h io.h hvapprox.h main-nondominated.o : cmdline.h io.h nondominated.h nondominated_kung.h ndsort.o: cmdline.h io.h nondominated.h hv.h -nondominated.h: avl_tiny.h nondominated_kung.h -nondominated.o: nondominated.h nondominated_kung.h -pareto.o: nondominated.h +nondominated.h: nondominated_kung.h +nondominated.o: nondominated.h nondominated_kung.h avl_tiny.h treap2d_fixed_size.h +pareto.o: nondominated.h treap2d_fixed_size.h rng.o: rng.h mt19937/mt19937.h ziggurat_constants.h timer.o: timer.h +treap2d_fixed_size.o: treap2d_fixed_size.h +treap2d_fixed_size.h: treap2d.h $(OBJS): common.h gcc_attribs.h config.h maxminclamp.h shlibs: clean $(SHLIB) $(CXXSHLIB) diff --git a/c/hv3d_priv.h b/c/hv3d_priv.h index 4168a0779..60611e2d3 100644 --- a/c/hv3d_priv.h +++ b/c/hv3d_priv.h @@ -1,6 +1,7 @@ #ifndef _HV3D_PRIV_H #define _HV3D_PRIV_H +#ifdef USE_AVL typedef const double avl_item_t; typedef struct avl_node_t { struct avl_node_t *next; @@ -28,6 +29,9 @@ new_avl_node(dlnode_t * restrict p, avl_node_t * restrict node) node->item = p->x; return node; } +#else +#include "treap2d_dlnode.h" +#endif /* Used by hvc3d.c and hv3dplus.c. @@ -61,6 +65,7 @@ hv3d_preprocessing(dlnode_t * restrict list, size_t n) assert(list+1 == list->next[0]); assert(list+2 == list->prev[0]); +#ifdef USE_AVL avl_tree_t tree; avl_init_tree(&tree, qsort_cmp_pdouble_asc_y_des_x_nonzero); avl_node_t * tnodes = malloc((n+2) * sizeof(*tnodes)); @@ -78,7 +83,6 @@ hv3d_preprocessing(dlnode_t * restrict list, size_t n) node = new_avl_node(list + 1, tnodes + 2); avl_insert_before(&tree, nodeaux, node); set_delimiters(p, nodeaux->prev->dlnode, nodeaux->next->dlnode); - const dlnode_t * stop = list+2; p = p->next[0]; while (p != stop) { @@ -132,6 +136,55 @@ hv3d_preprocessing(dlnode_t * restrict list, size_t n) p = p->next[0]; } free(tnodes); +#else + Treap2D * tree = treap2d_new(n+2); + assert(tree != NULL); + // At the top we insert the first point, which is never dominated. + dlnode_t * p = (list+1)->next[0]; + // Before the top node, we insert list + 1, sentinel 2 (ref[0], -INF), + // After the top node, we insert list, sentinel 1 (-INF, ref[1]) + treap2d_init_with_sentinels(tree, p, list+1, list); + set_delimiters(p, list+1, list); + + _attr_maybe_unused dlnode_t * prev_p = p; + double pk0 = p->x[0], pk1 = p->x[1], _attr_maybe_unused pk2 = p->x[2]; + const dlnode_t * stop = list+2; + for (p = p->next[0]; p != stop; p = p->next[0]) { + const double pj0 = p->x[0], pj1 = p->x[1], pj2 = p->x[2]; + if ((pk0 > pj0) | (pk1 > pj1)) { + TreapNode *pred = treap2d_find_le(tree, pj1); + assert(pred != NULL); + const double * prev_x = treap2d_get_dlnode(pred)->x; + if (prev_x[0] <= pj0) { + // pj is dominated by a point in the tree. +#ifdef HVC_ONLY + if (all_equal_double(prev_x, p->x, 3)) + treap2d_get_dlnode(pred)->ignore = true; // It will have zero hvc. +#endif + remove_from_z(p); + continue; + } + // pj is NOT dominated + TreapNode * prev, *next; + treap2d_insert_and_displace_get_bounds(tree, p, &prev, &next); + // Check that the data structure is properly setup. + assert(treap2d_get_dlnode(prev)->x[0] > pj0 && treap2d_get_dlnode(prev)->x[1] < pj1); + assert(treap2d_get_dlnode(next)->x[0] < pj0 && treap2d_get_dlnode(next)->x[1] > pj1); + set_delimiters(p, treap2d_get_dlnode(prev), treap2d_get_dlnode(next)); + + pk0 = pj0; pk1 = pj1; pk2 = pj2; + prev_p = p; + } else { + // pj is dominated by a previous point. +#ifdef HVC_ONLY + if (pk0 == pj0 && pk1 == pj1 && pk2 == pj2) + prev_p->ignore = true; // It will have zero hvc. +#endif + remove_from_z(p); + } + } + treap2d_free(tree); +#endif #undef set_delimiters } diff --git a/c/libhv.mk b/c/libhv.mk index 7e63a566b..4dcea48d0 100644 --- a/c/libhv.mk +++ b/c/libhv.mk @@ -1,5 +1,5 @@ # -*- Makefile-gmake -*- -LIBHV_SRCS = hv.c hv3dplus.c hv4d.c hvc3d.c hv_contrib.c nondominated.o +LIBHV_SRCS = hv.c hv3dplus.c hv4d.c hvc3d.c hv_contrib.c nondominated.o treap2d_fixed_size.o LIBHV_HDRS = hv.h hv_priv.h hv3d_priv.h hv4d_priv.h hvc4d_priv.h libmoocore-config.h LIBHV_OBJS = $(LIBHV_SRCS:.c=.o) HV_LIB = fpli_hv.a diff --git a/c/nondominated.c b/c/nondominated.c index 112458daf..8a0d784f0 100644 --- a/c/nondominated.c +++ b/c/nondominated.c @@ -6,6 +6,7 @@ *****************************************************************************/ #include "nondominated.h" +#ifdef USE_AVL typedef const double avl_item_t; typedef struct avl_node_t { struct avl_node_t *next; @@ -18,6 +19,9 @@ typedef struct avl_node_t { } avl_node_t; #include "avl_tiny.h" +#else +#include "treap2d_fixed_size.h" +#endif /** 3D dimension-sweep algorithm by H. T. Kung, F. Luccio, and F. P. Preparata. @@ -38,6 +42,7 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, const bool find_dominated) { ASSUME(size > 1); +#ifdef USE_AVL /* FIXME: The AVL-tree is the bottleneck of this algorithm. A Treap [R. Seidel and C. R. Aragon. Randomized search trees. Algorithmica, 16:464–497, 1996] may be far more efficient by allowing to remove a @@ -55,17 +60,23 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, const double sentinel[] = { INFINITY, -INFINITY }; (++node)->item = sentinel; avl_insert_after(&tree, node - 1, node); - + double pk0 = rows[0][0], pk1 = rows[0][1], pk2 = rows[0][2]; +#else + Treap2D * tree = treap2d_new(size); + assert(tree != NULL); + double pk0 = rows[0][0], pk1 = rows[0][1], pk2 = rows[0][2]; + treap2d_init_with_single_node(tree, pk0, pk1); +#endif // In this context, size means "no dominated solution found". size_t new_size = size; size_t prev_dominated = false; - double pk0 = rows[0][0], pk1 = rows[0][1], pk2 = rows[0][2]; for (size_t j = 1; j < size; j++) { const double * restrict pj = rows[j]; DEBUG2(printf_point("pj = [ ", pj, 3, " ], ")); const double pj0 = pj[0], pj1 = pj[1], pj2 = pj[2]; if ((pk0 > pj0) | (pk1 > pj1)) { // Check if pj is dominated by a point in the tree. +#ifdef USE_AVL avl_node_t * nodeaux; int res = avl_search_closest(&tree, pj, &nodeaux); assert(res != 0); @@ -105,6 +116,23 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, : printf_point("insert before point: ", point, 3, "\n")); (++node)->item = pj; avl_insert_before(&tree, nodeaux, node); +#else + /* In a valid 2-D frontier, x increases and y decreases. Therefore + the only existing point that can dominate pj is the frontier + predecessor with the largest key <= pj0. */ + TreapNode *pred = treap2d_find_le(tree, pj0); + if (pred != NULL && treap2d_node_get_y(pred) <= pj1) + goto j_is_dominated; + + /* pj is not dominated by an existing frontier point. + + Insert it and detach every existing point dominated by it. + + The returned treap contains exactly those displaced nodes, but + we do not need to traverse it here because those nodes will + never again participate in dominance queries. */ + treap2d_insert(tree, pj0, pj1); +#endif // Fall-through to j_is_NOT_dominated. } // Handle duplicates and points that are dominated by the immediate previous one. else if (!keep_weakly // Don't keep duplicates. @@ -135,11 +163,15 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, } early_end: +#ifdef USE_AVL free(tnodes); +#else + treap2d_free(tree); +#endif return new_size; } - +#ifdef USE_AVL /** Returns NULL if point is dominated by a different point in the tree. */ @@ -169,6 +201,46 @@ dominated_by_tree_3d(const avl_tree_t * restrict tree, assert(nodeaux != NULL); return nodeaux; // point is not dominated } +#else +static inline bool +dominated_by_tree_3d(Treap2D *tree, const double *point) +{ + DEBUG1(treap2d_validate_tree(tree)); + point++; // Ignore dim [0] + // Find the rightmost point with prev->key <= point[0]. + TreapNode *prev_node = treap2d_find_le(tree, point[0]); + if (prev_node != NULL && treap2d_node_get_y(prev_node) <= point[1]) { + assert(treap2d_node_get_x(prev_node) <= point[0]); + return true; // p is dominated + } + return false; // p is not dominated +} + +// FIXME: How to merge this function and the one above? +static inline bool +insert_if_not_dominated_by_tree_3d(Treap2D *tree, const double *point) +{ + DEBUG1(treap2d_validate_tree(tree)); + point++; // Ignore dim [0] + // Find the rightmost point with prev->key <= point[0]. + TreapNode **prev_link = treap2d_find_le_link(tree, point[0]); + if (prev_link != NULL) { + const double prev[2] = { treap2d_node_get_x(*prev_link), treap2d_node_get_y(*prev_link) }; + if (prev[1] <= point[1]) { + assert(prev[0] <= point[0]); + return false; // p is dominated + } else if (prev[0] == point[0]) { + // p dominates prev. Remove the already found node. + treap2d_erase_at(prev_link); + DEBUG1(treap2d_validate_tree(tree)); + } + } + // FIXME: This will call split_lt, but we just called find_le above, so can + // we avoid one of them? + treap2d_insert(tree, point[0], point[1]); + return true; // p was inserted. +} +#endif /** ALGORITHM 5.1. This algorithm accepts two sets R and S of 3-dimensional @@ -192,6 +264,7 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, DEBUG1(for (size_t j = 0; j < k; j++) assert(s[j][0] < r0)); DEBUG1(for (size_t j = k; j < s_size; j++) assert(r0 <= s[j][0])); +#ifdef USE_AVL avl_tree_t tree; avl_init_tree(&tree, qsort_cmp_pdouble_asc_y_asc_z); // FIXME: Use a workspace to allocate this once and re-alloc only if a larger number is needed. @@ -203,7 +276,12 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, const double sentinel[] = { INFINITY, INFINITY, -INFINITY}; (++node)->item = sentinel; avl_insert_after(&tree, node - 1, node); - +#else + Treap2D * tree = treap2d_new(r_size); + assert(tree != NULL); + treap2d_init_with_single_node(tree, r[0][1], r[0][2]); + DEBUG2(printf_point("insert in tree: r=[ ", r[0], 3, " ]\n")); +#endif size_t i = 1, new_size = s_size; do { const double * restrict v = s[k]; @@ -212,9 +290,9 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, while (i < r_size) { // Add to the tree all points in R that could dominate v. const double * restrict u = r[i]; - if (u[0] > v[0]) { + if (u[0] > v[0]) break; - } +#ifdef USE_AVL avl_node_t * nodeaux = dominated_by_tree_3d(&tree, u); if (nodeaux != NULL) { // u is NOT dominated by a point in the tree. const double * restrict point = nodeaux->item; @@ -235,16 +313,29 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, (++node)->item = u; avl_insert_before(&tree, nodeaux, node); } +#else + if (insert_if_not_dominated_by_tree_3d(tree, u)) { + // u is NOT dominated by a point in the tree. + DEBUG2(printf_point("!dominated_by_tree_3d: u=[ ", u, 3, " ]\n")); + } +#endif i++; } +#ifdef USE_AVL if (dominated_by_tree_3d(&tree, v) == NULL) { +#else + if (dominated_by_tree_3d(tree, v)) { +#endif DEBUG2(printf_point("dominated_by_tree_3d: v=[ ", v, 3, " ]\n")); s[k] = NULL; // dominated new_size--; } k++; } while (k < s_size); - +#ifdef USE_AVL free(tnodes); +#else + treap2d_free(tree); +#endif return new_size; } diff --git a/c/pareto.c b/c/pareto.c index 42e7dbf67..e23e9bd7a 100644 --- a/c/pareto.c +++ b/c/pareto.c @@ -4,6 +4,7 @@ #include "io.h" #endif +#ifdef USE_AVL typedef const double avl_item_t; typedef struct avl_node_t { struct avl_node_t *next; @@ -16,6 +17,9 @@ typedef struct avl_node_t { } avl_node_t; #include "avl_tiny.h" +#else +#include "treap2d_fixed_size.h" +#endif /** Nondominated sorting in 3D in O(k * n log n), where k is the number of fronts. @@ -33,21 +37,30 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) const bool keep_weakly = true; const double ** p = generate_row_pointers_asc_rev_3d(points, size); +#ifdef USE_AVL avl_tree_t tree; avl_init_tree(&tree, qsort_cmp_pdouble_asc_x_nonzero); avl_node_t * tnodes = malloc((size+1) * sizeof(*tnodes)); const double sentinel[] = { INFINITY, -INFINITY }; tnodes->item = sentinel; +#else + Treap2D * tree = treap2d_new(size); + assert(tree != NULL); +#endif int front = 0; while (true) { ASSUME(size >= 2); const double * restrict pk = p[0]; +#ifdef USE_AVL avl_node_t * node = tnodes + 1; node->item = pk; avl_insert_top(&tree, node); // Insert sentinel. avl_insert_after(&tree, node, tnodes); +#else + treap2d_init_with_single_node(tree, pk[0], pk[1]); +#endif // In this context, size means "no dominated solution found". size_t n_nondom = size, j = 1; @@ -56,6 +69,7 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) const double * restrict pj = p[j]; bool dominated; if (pk[0] > pj[0] || pk[1] > pj[1]) { +#ifdef USE_AVL avl_node_t * nodeaux; int res = avl_search_closest(&tree, pj, &nodeaux); assert(res != 0); @@ -91,6 +105,12 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) (++node)->item = pj; avl_insert_before(&tree, nodeaux, node); } +#else + TreapNode *pred = treap2d_find_le(tree, pj[0]); + dominated = (pred != NULL && treap2d_node_get_y(pred) <= pj[1]); + if (!dominated) + treap2d_insert(tree, pj[0], pj[1]); +#endif } else { // Handle duplicates and points that are dominated by the immediate // previous one. @@ -126,7 +146,11 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) // we can stop. size -= n_nondom; if (size <= 1) { +#ifdef USE_AVL free(tnodes); +#else + treap2d_free(tree); +#endif free(p); return; } @@ -147,7 +171,9 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) k, p[k][0], p[k][1], p[k][2]); front++; +#ifdef USE_AVL avl_clear_tree(&tree); +#endif } } diff --git a/c/treap2d.h b/c/treap2d.h new file mode 100644 index 000000000..c500a3d9e --- /dev/null +++ b/c/treap2d.h @@ -0,0 +1,684 @@ +/***************************************************************************** + + treap.h: Randomised binary search tree (Treap) for a 2D mutually nondominated + frontier. + + --------------------------------------------------------------------- + Copyright (C) 2026 + Manuel Lopez-Ibanez + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + --------------------------------------------------------------------- + + [1] R. Seidel and C. R. Aragon. Randomized search trees. Algorithmica, + 16:464-497, 1996 + +******************************************************************************/ +#include "common.h" + +/** + + Randomized binary search tree for a 2-D mutually non-dominated + minimization frontier. + + Frontier invariant: + + x increases strictly from left to right + y decreases strictly from left to right + + Consequently, for a new point (x,y), the old frontier points + dominated by the new point form a contiguous range in key order. + This allows the whole dominated range to be detached with + split/merge operations instead of deleting its nodes individually. + + Nodes are externally owned. The treap does not allocate or free them. + + Expected complexity: + + search O(log n) + split O(log n) + merge O(log n) + insert O(log n) + insert+displace O(log n) + + Worst-case complexity of a treap operation is O(n), as for any + randomized BST. +*/ +#include +#include +#include +#include + +struct TreapNode { + double x, y; + uint64_t priority; // Parents should have a higher priority than children. + struct TreapNode *left; + struct TreapNode *right; +#ifndef TREAP_ITEM_IS_EMPTY + TreapItem item; +#endif +}; +typedef struct TreapNode TreapNode; + +struct Treap { + TreapNode *root; + uint64_t rng_state; +}; +typedef struct Treap Treap; + + +/** + PRNG is xorshift64*, which is not cryptographically safe but it is fast. +*/ +static inline uint64_t +treap_random(Treap *tree) +{ + uint64_t x = tree->rng_state; + assert(x != 0); // State must never be zero. + + x ^= x >> 12; + x ^= x << 25; + x ^= x >> 27; + + tree->rng_state = x; + return x * UINT64_C(0x2545F4914F6CDD1D); +} + + +/** + Treap Seed generation + + Use the address of the Treap object as process-dependent entropy, then + thoroughly mix it with SplitMix64's mixing function. + + This is not intended as cryptographic randomness. Its purpose is simply + to give separately allocated treaps normally different PRNG streams, + without requiring global mutable state or an OS RNG call. +*/ +static inline uint64_t +treap_seed(const Treap *tree) +{ + // Cast to uintptr_t to use the pointer value as an integer. + uint64_t x = (uint64_t)(uintptr_t)tree; + /* Mix the address. The addition is useful even though a fixed constant + would ultimately be mixed anyway. */ + x += UINT64_C(0x9e3779b97f4a7c15); + + x = (x ^ (x >> 30)) * UINT64_C(0xbf58476d1ce4e5b9); + x = (x ^ (x >> 27)) * UINT64_C(0x94d049bb133111eb); + x ^= x >> 31; + // xorshift64* cannot leave the zero state. + return x ? x : UINT64_C(0x9e3779b97f4a7c15); +} + + +/** + (Re)-Initializes the tree structure. Nothing is free()d. + + Complexity: O(1) +*/ +static inline void +treap_init(Treap *tree) +{ + tree->root = NULL; + tree->rng_state = treap_seed(tree); +} + +static inline void +treap_init_with_single_node(Treap *tree, TreapNode * node) +{ + assert(node->left == NULL); + assert(node->right == NULL); + treap_init(tree); + tree->root = node; + node->priority = treap_random(tree); +} + +static inline void +treap_node_init_empty(TreapNode *node, double x, double y) +{ + assert(node != NULL); + node->x = x; + node->y = y; + node->left = NULL; + node->right = NULL; +} + +#ifndef TREAP_ITEM_IS_EMPTY +/** + Initialize a node before inserting it. + + The node does not receive a priority until insertion because the + priority should come from the destination treap's RNG. +*/ +static inline void +treap_node_init(TreapNode *node, double x, double y, TreapItem item) +{ + treap_node_init_empty(node, x, y); + node->item = item; +} + +static inline void +treap_init_with_singleton(Treap *tree, TreapNode * node, double x, double y, TreapItem item) +{ + treap_node_init(node, x, y, item); + treap_init_with_single_node(tree, node); +} +#else +static inline void +treap_node_init(TreapNode *node, double x, double y) +{ + treap_node_init_empty(node, x, y); +} + +static inline void +treap_init_with_singleton(Treap *tree, TreapNode * node, double x, double y) +{ + treap_node_init(node, x, y); + treap_init_with_single_node(tree, node); +} +#endif + + + + +static inline void +treap_split_lt_with_max(TreapNode *root, double key, + TreapNode **left, TreapNode **right, + TreapNode **left_max) +{ + if (root == NULL) { + *left = NULL; + *right = NULL; + if (left_max) + *left_max = NULL; + return; + } + + if (root->x < key) { + *left = root; + if (left_max) { + TreapNode *sub_left_max; + treap_split_lt_with_max(root->right, key, &root->right, right, + &sub_left_max); + /* If anything remained in root->right, its maximum is the maximum of + the whole left result. Otherwise root is the max. */ + *left_max = sub_left_max != NULL ? sub_left_max : root; + } else { + treap_split_lt_with_max(root->right, key, &root->right, right, NULL); + } + } else { + *right = root; + treap_split_lt_with_max(root->left, key, left, &root->left, left_max); + } +} + +/** + Split by x. + + On return: + + *left contains every node with x < key + *right contains every node with x >= key + + The frontier and treap invariants are preserved. + + Expected complexity: O(log n). +*/ +static inline void +treap_split_lt(TreapNode *root, double key, + TreapNode **left, TreapNode **right) +{ + treap_split_lt_with_max(root, key, left, right, NULL); +} + + +/** + Split by key. + + On return: + + *left contains every node with x <= key + *right contains every node with x > key + + The frontier and treap invariants are preserved. + + Expected complexity: O(log n). +*/ +static inline void +treap_split_le(TreapNode *root, double key, + TreapNode **left, TreapNode **right) +{ + if (root == NULL) { + *left = NULL; + *right = NULL; + return; + } + + if (root->x <= key) { + // root belongs to the left result. + *left = root; + treap_split_le(root->right, key, &root->right, right); + } else { + // root belongs to the right result. + *right = root; + treap_split_le(root->left, key, left, &root->left); + } +} + +static inline void +treap_split_z1_ge_with_min(TreapNode *root, double y, + TreapNode **high_y, TreapNode **low_y, + TreapNode **low_y_min) +{ + if (root == NULL) { + *high_y = NULL; + *low_y = NULL; + if (low_y_min) + *low_y_min = NULL; + return; + } + + if (root->y >= y) { + *high_y = root; + treap_split_z1_ge_with_min(root->right, y, &root->right, low_y, low_y_min); + } else { + *low_y = root; + if (low_y_min) { + TreapNode *sub_low_min; + treap_split_z1_ge_with_min(root->left, y, high_y, &root->left, &sub_low_min); + /* If root has a left part remaining, its minimum is the minimum of + that part. Otherwise root is the minimum. */ + if (low_y_min) + *low_y_min = sub_low_min != NULL ? sub_low_min : root; + } else { + treap_split_z1_ge_with_min(root->left, y, high_y, &root->left, NULL); + } + } +} + +/** + Split a frontier by y. + + PRECONDITION: + + root is a valid mutually non-dominated frontier. + + Since y strictly decreases as x increases: + + *high_y contains every node with node->y >= y + *low_y contains every node with node->y < y + + Therefore *high_y is a prefix in x order. + + This is the operation used to detach all nodes dominated by a new + frontier point. + + Expected complexity: O(log n). +*/ +static inline void +treap_split_z1_ge(TreapNode *root, double y, + TreapNode **high_y, TreapNode **low_y) +{ + treap_split_z1_ge_with_min(root, y, high_y, low_y, NULL); +} + +static TreapNode * +treap_rotate_left(TreapNode *node) +{ + TreapNode *right = node->right; + node->right = right->left; + right->left = node; + return right; +} + +static TreapNode * +treap_rotate_right(TreapNode *node) +{ + TreapNode *left = node->left; + node->left = left->right; + left->right = node; + return left; +} + +static TreapNode * +treap_insert_node_and_rotate(TreapNode * root, TreapNode *node) +{ + if (!root) + return node; + + if (node->x < root->x) { + root->left = treap_insert_node_and_rotate(root->left, node); + assert(root->left != NULL); + if (root->left->priority > root->priority) + root = treap_rotate_right(root); + } else { + root->right = treap_insert_node_and_rotate(root->right, node); + assert(root->right != NULL); + if (root->right->priority > root->priority) + root = treap_rotate_left(root); + } + return root; +} + +/** + Merge two treaps. + + PRECONDITION: + + Every x in left is less than every x in right. + + Returns the merged treap. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_merge(TreapNode *left, TreapNode *right) +{ + if (!left) + return right; + + if (!right) + return left; + + if (left->priority > right->priority) { + left->right = treap_merge(left->right, right); + return left; + } + + right->left = treap_merge(left, right->left); + return right; +} + +static inline void +treap_validate_tree(TreapNode * node) +{ + if (!node) + return; + + if (node->left) { + assert(node->left->x < node->x); + assert(node->priority > node->left->priority); + treap_validate_tree(node->left); + } + if (node->right) { + assert(node->right->x > node->x); + assert(node->priority > node->right->priority); + treap_validate_tree(node->right); + } +} +/** + Find the node with the largest x such that x <= key. + + Returns NULL if no such node exists. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_find_le(const Treap *tree, double key) +{ + TreapNode *node = tree->root, *best = NULL; + + while (node != NULL) { + if (node->x <= key) { + best = node; + node = node->right; + } else { + node = node->left; + } + } + return best; +} + +static inline TreapNode ** +treap_find_le_link(Treap *tree, double key) +{ + TreapNode **link = &tree->root, **best = NULL; + + while (*link != NULL) { + TreapNode *node = *link; + + if (node->x <= key) { + best = link; + link = &node->right; + } else { + link = &node->left; + } + } + + return best; +} + +/** + Find the node with the largest x such that x < key. + + Returns NULL if no such node exists. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_find_lt(const Treap *tree, double key) +{ + TreapNode *node = tree->root, *best = NULL; + + while (node != NULL) { + if (node->x < key) { + best = node; + node = node->right; + } else { + node = node->left; + } + } + return best; +} +/** + Find the node with the smallest x such that x >= key. + + Returns NULL if no such node exists. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_find_ge(const Treap *tree, double key) +{ + TreapNode *node = tree->root, *best = NULL; + + while (node != NULL) { + if (node->x >= key) { + best = node; + node = node->left; + } else { + node = node->right; + } + } + return best; +} + +/** + Find the node with the smallest x such that x > key. + + Returns NULL if no such node exists. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_find_gt(const Treap *tree, double key) +{ + TreapNode *node = tree->root, *best = NULL; + + while (node != NULL) { + if (node->x > key) { + best = node; + node = node->left; + } else { + node = node->right; + } + } + return best; +} + + +/** + Find a node with exactly x == key. + + Returns NULL if absent. + + Expected complexity: O(log n). + */ +static inline TreapNode * +treap_find(const Treap *tree, double key) +{ + TreapNode *node = tree->root; + + while (node) { + if (key < node->x) + node = node->left; + else if (key > node->x) + node = node->right; + else + return node; + } + return NULL; +} + +/** + Insert a single node. + + PRECONDITIONS: + + - node is initialized with treap_node_init(). + - node->x does not already exist in the treap. + - node->left == NULL. + - node->right == NULL. + + This function does not check whether the resulting set is a valid + Pareto frontier. Use treap_insert_and_displace() when inserting + a new non-dominated point into an existing frontier. +*/ +static inline void +treap_insert_node(Treap *tree, TreapNode *node) +{ + assert(tree != NULL); + assert(node != NULL); + assert(node->left == NULL); + assert(node->right == NULL); + // node->x is not already in the tree. + assert(treap_find(tree, node->x) == NULL); + DEBUG1(treap_validate_tree(tree->root)); + + node->priority = treap_random(tree); + +#if 0 + TreapNode *left; + TreapNode *right; + /* Since keys are guaranteed unique by the caller, there is no need to + search for an existing x before doing the split. */ + treap_split_lt(tree->root, node->x, &left, &right); + tree->root = treap_merge(treap_merge(left, node), right); +#else + tree->root = treap_insert_node_and_rotate(tree->root, node); +#endif + DEBUG1(treap_validate_tree(tree->root)); +} + +static inline TreapNode * +treap_erase_at(TreapNode **link) +{ + assert(link != NULL); + assert(*link != NULL); + + TreapNode *node = *link; + *link = treap_merge(node->left, node->right); + node->left = NULL; + node->right = NULL; + return node; +} + +/** + Inserts node into tree and detaches all nodes dominated by node. + + On return: + + *prev = node's predecessor in the resulting tree + *next = node's successor in the resulting tree + + Returns the root of a separate treap containing the displaced nodes. + + Expected complexity: O(log n). + + FIXME: This function performs 4 tree traversals. It may be possible to do + it faster while rotating nodes as needed. +*/ +static inline TreapNode * +treap_insert_and_displace_get_bounds(Treap *tree, TreapNode *node, + TreapNode **prev, TreapNode **next) +{ + assert(tree != NULL); + assert(node != NULL); + assert(node->left == NULL); + assert(node->right == NULL); + + const double x = node->x; + const double y = node->y; + TreapNode *left, *right; + if (prev) { + TreapNode *left_max; + treap_split_lt_with_max(tree->root, x, &left, &right, &left_max); + *prev = left_max; + } else { + treap_split_lt(tree->root, x, &left, &right); + } + + /* On the frontier, z[1] decreases with increasing x. Therefore the + nodes in right with z[1] >= y are exactly the nodes dominated by + node, and they form a contiguous prefix. */ + TreapNode *displaced, *keep; + if (next) { + TreapNode *keep_min; + treap_split_z1_ge_with_min(right, y, &displaced, &keep, &keep_min); + *next = keep_min; + } else { + treap_split_z1_ge(right, y, &displaced, &keep); + } + + // Insert the new node between left and keep. + node->priority = treap_random(tree); + node->left = NULL; + node->right = NULL; + // key ordering is: left < node < keep + tree->root = treap_merge(treap_merge(left, node), keep); + DEBUG1(treap_validate_tree(tree->root)); + return displaced; +} + +/** + Insert a new point into a mutually non-dominated frontier and detach all + existing nodes dominated by it. + + PRECONDITIONS: + + - tree is a valid mutually non-dominated frontier. + - node is not already in tree. + - node->x is unique in tree. + - no node in tree weakly dominates node. + - node->left == NULL. + - node->right == NULL. + + POSTCONDITIONS: + + - node belongs to tree. + - the returned root is a separate treap containing exactly the nodes + removed from tree. + - every returned node is dominated by node. + - no node other than those dominated by node is removed. + + Expected complexity: O(log n). +*/ +static inline TreapNode * +treap_insert_and_displace(Treap *tree, TreapNode *node) +{ + return treap_insert_and_displace_get_bounds(tree, node, NULL, NULL); +} diff --git a/c/treap2d_dlnode.h b/c/treap2d_dlnode.h new file mode 100644 index 000000000..b596a0b3e --- /dev/null +++ b/c/treap2d_dlnode.h @@ -0,0 +1,74 @@ +#ifndef TREAP_2D_DLNODE_H +#define TREAP_2D_DLNODE_H + +#include +#include "gcc_attribs.h" + +typedef dlnode_t * TreapItem; +static inline void treap_item_free(TreapItem item _attr_maybe_unused) { return; } + +#include "treap2d.h" + +typedef struct Treap2D { + Treap treap; + TreapNode * last_node; + TreapNode node_pool[]; // Flexible array +} Treap2D; + +static Treap2D * +treap2d_new(size_t n) +{ + Treap2D * tree = malloc(sizeof(Treap2D) + n * sizeof(TreapNode)); + tree->last_node = tree->node_pool; + return tree; +} + +static void +treap2d_free(Treap2D * tree) +{ + free(tree); +} + +static inline void +treap2d_init_node(TreapNode * restrict node, dlnode_t * restrict p) +{ + // The treap is sorted in ascending p->x[1] and descending p->x[0]. + treap_node_init(node, p->x[1], p->x[0], p); +} + +static inline dlnode_t * +treap2d_get_dlnode(TreapNode * node) +{ + return node->item; +} + +static void +treap2d_init_with_sentinels(Treap2D *tree, dlnode_t * restrict p, dlnode_t * restrict s2, dlnode_t * restrict s1) +{ + TreapNode * node = tree->last_node; + treap2d_init_node(node, p); + treap2d_init_node(node + 1, s2); + (node+1)->priority = 0; // Push to the bottom. + treap2d_init_node(node + 2, s1); + (node+2)->priority = 0; // Push to the bottom. + treap_init_with_single_node(&tree->treap, node); + node->left = node + 1; + node->right = node + 2; + tree->last_node += 3; +} + +static TreapNode * +treap2d_find_le(const Treap2D *tree, double value) +{ + return treap_find_le(&tree->treap, value); +} + +static inline void +treap2d_insert_and_displace_get_bounds(Treap2D *tree, dlnode_t * restrict p, TreapNode **prev, TreapNode **next) +{ + treap2d_init_node(tree->last_node, p); + (void)treap_insert_and_displace_get_bounds(&tree->treap, tree->last_node, prev, next); + tree->last_node++; +} + +#endif // TREAP_2D_DLNODE_H diff --git a/c/treap2d_fixed_size.c b/c/treap2d_fixed_size.c new file mode 100644 index 000000000..54080dec6 --- /dev/null +++ b/c/treap2d_fixed_size.c @@ -0,0 +1,77 @@ +#include "treap2d_fixed_size.h" + +#define TREAP_ITEM_IS_EMPTY +#include "treap2d.h" + +typedef struct Treap2D { + Treap treap; + TreapNode * last_node; + TreapNode node_pool[]; // Flexible array +} Treap2D; + + +Treap2D * +treap2d_new(size_t n) +{ + Treap2D * tree = malloc(sizeof(Treap2D) + n * sizeof(TreapNode)); + tree->last_node = tree->node_pool; + return tree; +} + +void +treap2d_free(Treap2D * tree) +{ + free(tree); +} + +void +treap2d_init_with_single_node(Treap2D *tree, double x, double y) +{ + treap_node_init(tree->last_node, x, y); + treap_init_with_single_node(&tree->treap, tree->last_node); + tree->last_node++; +} + +TreapNode * +treap2d_find_le(const Treap2D *tree, double value) +{ + return treap_find_le(&tree->treap, value); +} + +TreapNode ** +treap2d_find_le_link(Treap2D *tree, double value) +{ + return treap_find_le_link(&tree->treap, value); +} + +double +treap2d_node_get_x(const TreapNode *node) +{ + return node->x; +} + +double +treap2d_node_get_y(const TreapNode *node) +{ + return node->y; +} + +void +treap2d_validate_tree(Treap2D * tree) +{ + treap_validate_tree(tree->treap.root); +} + +TreapNode * +treap2d_erase_at(TreapNode **link) +{ + return treap_erase_at(link); +} + +void +treap2d_insert(Treap2D *tree, double x, double y) +{ + treap_node_init(tree->last_node, x, y); + treap_insert_and_displace(&tree->treap, tree->last_node); + tree->last_node++; +} diff --git a/c/treap2d_fixed_size.h b/c/treap2d_fixed_size.h new file mode 100644 index 000000000..2f9b66877 --- /dev/null +++ b/c/treap2d_fixed_size.h @@ -0,0 +1,20 @@ +#ifndef TREAP_2D_FIXED_SIZE_H_ +#define TREAP_2D_FIXED_SIZE_H_ + +#include + +typedef struct Treap2D Treap2D; +typedef struct TreapNode TreapNode; + +Treap2D * treap2d_new(size_t n); +void treap2d_free(Treap2D * tree); +void treap2d_init_with_single_node(Treap2D *tree, double x, double y); +TreapNode * treap2d_find_le(const Treap2D *tree, double value); +TreapNode ** treap2d_find_le_link(Treap2D *tree, double value); +double treap2d_node_get_x(const TreapNode *node); +double treap2d_node_get_y(const TreapNode *node); +void treap2d_validate_tree(Treap2D * tree); +TreapNode * treap2d_erase_at(TreapNode **link); +void treap2d_insert(Treap2D *tree, double x, double y); + +#endif // TREAP_2D_FIXED_SIZE_H_ diff --git a/python/src/moocore/_ffi_build.py b/python/src/moocore/_ffi_build.py index 87e32fff0..3b6bf0a71 100644 --- a/python/src/moocore/_ffi_build.py +++ b/python/src/moocore/_ffi_build.py @@ -49,6 +49,7 @@ "nondominated.c", "pareto.c", "rng.c", + "treap2d_fixed_size.c", "whv.c", "whv_hype.c", ] diff --git a/r/src/Makevars b/r/src/Makevars index 8164b3bdd..9a6ee258b 100644 --- a/r/src/Makevars +++ b/r/src/Makevars @@ -24,6 +24,7 @@ MOOCORE_SRC_FILES = \ pareto.c \ r2_exact.c \ rng.c \ + treap2d_fixed_size.c \ whv.c \ whv_hype.c From 29749fdfc0a5c4f8d1752c7ee6b211f3f52a69de Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Wed, 23 Sep 2026 14:17:29 +0100 Subject: [PATCH 2/9] c/ Remove AVL-tree code where Treap is used. * avl_tiny.h: Delete. * Makefile: Update. * NEWS.md: Update. * hv3d_priv.h: Delete AVL-tree code. * nondominated.c: Likewise. * pareto.c: Likewise. --- c/Makefile | 6 +- c/NEWS.md | 3 + c/avl_tiny.h | 375 ----------------------------------------------- c/hv3d_priv.h | 103 ------------- c/nondominated.c | 160 +------------------- c/pareto.c | 76 ---------- 6 files changed, 9 insertions(+), 714 deletions(-) delete mode 100644 c/avl_tiny.h diff --git a/c/Makefile b/c/Makefile index f105a3fdd..33c7cd870 100644 --- a/c/Makefile +++ b/c/Makefile @@ -217,11 +217,11 @@ eaf3d.o: eaf.h io.h bit_array.h cvector.h avl.h eaf_main.o: cmdline.h io.h eaf.h bit_array.h cvector.h epsilon.o: cmdline.h io.h nondominated.h epsilon.h hv.o: hv.h hv_priv.h hvc4d_priv.h sort.h libmoocore-config.h -hv3dplus.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h treap2d.h +hv3dplus.o: hv_priv.h sort.h hv3d_priv.h treap2d.h hv4d.o: hv4d_priv.h hv_priv.h sort.h hv_contrib.o: hv.h libmoocore-config.h nondominated.h hvapprox.o: hvapprox.h pow_int.h rng.h mt19937/mt19937.h -hvc3d.o: hv_priv.h sort.h hv3d_priv.h avl_tiny.h treap2d.h +hvc3d.o: hv_priv.h sort.h hv3d_priv.h treap2d.h igd.o: cmdline.h io.h nondominated.h igd.h pow_int.h io.o: io.h io_priv.h main-hv.o: cmdline.h io.h hv.h timer.h libmoocore-config.h nondominated.h hvapprox.h @@ -229,7 +229,7 @@ main-hvapprox.o: cmdline.h io.h hvapprox.h main-nondominated.o : cmdline.h io.h nondominated.h nondominated_kung.h ndsort.o: cmdline.h io.h nondominated.h hv.h nondominated.h: nondominated_kung.h -nondominated.o: nondominated.h nondominated_kung.h avl_tiny.h treap2d_fixed_size.h +nondominated.o: nondominated.h nondominated_kung.h treap2d_fixed_size.h pareto.o: nondominated.h treap2d_fixed_size.h rng.o: rng.h mt19937/mt19937.h ziggurat_constants.h timer.o: timer.h diff --git a/c/NEWS.md b/c/NEWS.md index 317b10c1d..c1aa478ff 100644 --- a/c/NEWS.md +++ b/c/NEWS.md @@ -6,6 +6,9 @@ * main-nondominated.c: Renamed from nondominated.c. * hv and hvapprox executables now use -U instead of -u for --union to be consistent with nondominated. + * treap2d.h: New. + * pareto.c, nondominated.c, hv3d_priv.h: Use Treap instead of AVL-tree. + * avl_tiny.h: Delete. ## 0.19.2 diff --git a/c/avl_tiny.h b/c/avl_tiny.h deleted file mode 100644 index 94b64d6c5..000000000 --- a/c/avl_tiny.h +++ /dev/null @@ -1,375 +0,0 @@ -#ifndef _AVL_TINY_H_ -#define _AVL_TINY_H_ -/*----------------------------------------------------------------------------- - - The following is a reduced version of the AVL-tree library used here - according to the terms of the LGPL-2.1-or-later. See the copyright notice - below. - -*/ - -/***************************************************************************** - - avl.h - Source code for the AVL-tree library. - - Copyright (C) 1998 Michael H. Buselli - Copyright (C) 2000-2002 Wessel Dankers - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Augmented AVL-tree. Original by Michael H. Buselli . - - Modified by Wessel Dankers to add a bunch of bloat to - the sourcecode, change the interface and squash a few bugs. - Mail him if you find new bugs. - -*****************************************************************************/ - -/* User supplied function to compare two items like strcmp() does. - * For example: cmp(a,b) will return: - * -1 if a < b - * 0 if a = b - * 1 if a > b - */ -// "const void" here is actually "const avl_item_t" -typedef int (*avl_compare_t)(const void *, const void *); - -typedef struct avl_tree_t { - avl_node_t *head; - avl_node_t *tail; - avl_node_t *top; - avl_compare_t cmp; -} avl_tree_t; - - -/***************************************************************************** - - avl.c - Source code for the AVL-tree library. - -*****************************************************************************/ - -static void avl_rebalance(avl_tree_t *, avl_node_t *); - -#define NODE_DEPTH(n) ((n) ? (n)->depth : 0) -#define L_DEPTH(n) (NODE_DEPTH((n)->left)) -#define R_DEPTH(n) (NODE_DEPTH((n)->right)) -#define CALC_DEPTH(n) (unsigned char)((L_DEPTH(n)>R_DEPTH(n)?L_DEPTH(n):R_DEPTH(n)) + 1) - -static int avl_check_balance(const avl_node_t * restrict avlnode) { - int d = R_DEPTH(avlnode) - L_DEPTH(avlnode); - return d < -1 ? -1 : d > 1 ? 1 : 0; -} - -/* Searches for a node with the key closest (or equal) to the given item. - If avlnode is not NULL, *avlnode will be set to the node found or NULL - if the tree is empty. Return values: - -1 if the returned node is greater - 0 if the returned node is equal or if the tree is empty - 1 if the returned node is smaller - O(lg n) */ -static int -avl_search_closest(const avl_tree_t *avltree, const avl_item_t *item, avl_node_t **avlnode) -{ - avl_node_t *node = avltree->top; - assert(node); - avl_compare_t cmp = avltree->cmp; - while(true) { - int c = cmp(item, node->item); - if(c < 0) { - if(node->left) - node = node->left; - else - return *avlnode = node, -1; - } else if(c > 0) { - if(node->right) - node = node->right; - else - return *avlnode = node, 1; - } else { - return *avlnode = node, 0; - } - } -} - -/* Initializes a new tree for elements that will be ordered using - * the supplied strcmp()-like function. - * Returns the value of avltree (even if it's NULL). - * O(1) */ -static avl_tree_t * -avl_init_tree(avl_tree_t *rc, avl_compare_t cmp) { - rc->head = NULL; - rc->tail = NULL; - rc->top = NULL; - rc->cmp = cmp; - return rc; -} - -/* Reinitializes the tree structure for reuse. Nothing is free()d. - * Compare and freeitem functions are left alone. - * O(1) */ -static inline void -avl_clear_tree(avl_tree_t *avltree) { - avltree->top = avltree->head = avltree->tail = NULL; -} - -static void -avl_clear_node(avl_node_t *newnode) { - newnode->left = newnode->right = NULL; - newnode->depth = 1; -} - -/* Insert a node in an empty tree. If avlnode is NULL, the tree will be - * cleared and ready for re-use. - * If the tree is not empty, the old nodes are left dangling. - * O(1) */ -static avl_node_t * -avl_insert_top(avl_tree_t *avltree, avl_node_t *newnode) { - avl_clear_node(newnode); - newnode->prev = newnode->next = newnode->parent = NULL; - avltree->head = avltree->tail = avltree->top = newnode; - return newnode; -} - -static avl_node_t * -avl_insert_after(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode); - -/* Insert a node before another node. Returns the new node. - * If old is NULL, the item is appended to the tree. - * O(lg n) */ -static avl_node_t * -avl_insert_before(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { - if(!node) - return avltree->tail - ? avl_insert_after(avltree, avltree->tail, newnode) - : avl_insert_top(avltree, newnode); - - if(node->left) - return avl_insert_after(avltree, node->prev, newnode); - - assert (node); - assert (!node->left); - - avl_clear_node(newnode); - - newnode->next = node; - newnode->parent = node; - - newnode->prev = node->prev; - if(node->prev) - node->prev->next = newnode; - else - avltree->head = newnode; - node->prev = newnode; - - node->left = newnode; - avl_rebalance(avltree, node); - return newnode; -} - -/* Insert a node after another node. Returns the new node. - * If old is NULL, the item is prepended to the tree. - * O(lg n) */ -static avl_node_t * -avl_insert_after(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { - if(!node) - return avltree->head - ? avl_insert_before(avltree, avltree->head, newnode) - : avl_insert_top(avltree, newnode); - - if(node->right) - return avl_insert_before(avltree, node->next, newnode); - - assert (node); - assert (!node->right); - - avl_clear_node(newnode); - - newnode->prev = node; - newnode->parent = node; - - newnode->next = node->next; - if(node->next) - node->next->prev = newnode; - else - avltree->tail = newnode; - node->next = newnode; - - node->right = newnode; - avl_rebalance(avltree, node); - return newnode; -} - -/* Deletes the node from the tree. Does not delete the item at that node. - * The item of the node may be freed before calling avl_unlink_node. - * (In other words, it is not referenced by this function.) - * O(lg n) */ -static void -avl_unlink_node(avl_tree_t *avltree, avl_node_t *avlnode) { - avl_node_t *parent; - avl_node_t **superparent; - avl_node_t *subst, *left, *right; - avl_node_t *balnode; - - if(avlnode->prev) - avlnode->prev->next = avlnode->next; - else - avltree->head = avlnode->next; - - if(avlnode->next) - avlnode->next->prev = avlnode->prev; - else - avltree->tail = avlnode->prev; - - parent = avlnode->parent; - - superparent = parent - ? avlnode == parent->left ? &parent->left : &parent->right - : &avltree->top; - - left = avlnode->left; - right = avlnode->right; - if(!left) { - *superparent = right; - if(right) - right->parent = parent; - balnode = parent; - } else if(!right) { - *superparent = left; - left->parent = parent; - balnode = parent; - } else { - subst = avlnode->prev; - if(subst == left) { - balnode = subst; - } else { - balnode = subst->parent; - balnode->right = subst->left; - if(balnode->right) - balnode->right->parent = balnode; - subst->left = left; - left->parent = subst; - } - subst->right = right; - subst->parent = parent; - right->parent = subst; - *superparent = subst; - } - - avl_rebalance(avltree, balnode); -} - -/* - * avl_rebalance: - * Rebalances the tree if one side becomes too heavy. This function - * assumes that both subtrees are AVL-trees with consistant data. The - * function has the additional side effect of recalculating the count of - * the tree at this node. It should be noted that at the return of this - * function, if a rebalance takes place, the top of this subtree is no - * longer going to be the same node. - */ -static void -avl_rebalance(avl_tree_t *avltree, avl_node_t *avlnode) { - avl_node_t *child; - avl_node_t *gchild; - avl_node_t *parent; - avl_node_t **superparent; - - parent = avlnode; - - while(avlnode) { - parent = avlnode->parent; - - superparent = parent - ? avlnode == parent->left ? &parent->left : &parent->right - : &avltree->top; - - switch(avl_check_balance(avlnode)) { - case -1: - child = avlnode->left; - if(L_DEPTH(child) >= R_DEPTH(child)) { - avlnode->left = child->right; - if(avlnode->left) - avlnode->left->parent = avlnode; - child->right = avlnode; - avlnode->parent = child; - *superparent = child; - child->parent = parent; - avlnode->depth = CALC_DEPTH(avlnode); - child->depth = CALC_DEPTH(child); - } else { - gchild = child->right; - avlnode->left = gchild->right; - if(avlnode->left) - avlnode->left->parent = avlnode; - child->right = gchild->left; - if(child->right) - child->right->parent = child; - gchild->right = avlnode; - if(gchild->right) - gchild->right->parent = gchild; - gchild->left = child; - if(gchild->left) - gchild->left->parent = gchild; - *superparent = gchild; - gchild->parent = parent; - avlnode->depth = CALC_DEPTH(avlnode); - child->depth = CALC_DEPTH(child); - gchild->depth = CALC_DEPTH(gchild); - } - break; - case 1: - child = avlnode->right; - if(R_DEPTH(child) >= L_DEPTH(child)) { - avlnode->right = child->left; - if(avlnode->right) - avlnode->right->parent = avlnode; - child->left = avlnode; - avlnode->parent = child; - *superparent = child; - child->parent = parent; - avlnode->depth = CALC_DEPTH(avlnode); - child->depth = CALC_DEPTH(child); - } else { - gchild = child->left; - avlnode->right = gchild->left; - if(avlnode->right) - avlnode->right->parent = avlnode; - child->left = gchild->right; - if(child->left) - child->left->parent = child; - gchild->left = avlnode; - if(gchild->left) - gchild->left->parent = gchild; - gchild->right = child; - if(gchild->right) - gchild->right->parent = gchild; - *superparent = gchild; - gchild->parent = parent; - avlnode->depth = CALC_DEPTH(avlnode); - child->depth = CALC_DEPTH(child); - gchild->depth = CALC_DEPTH(gchild); - } - break; - default: - avlnode->depth = CALC_DEPTH(avlnode); - } - avlnode = parent; - } -} - -/*----------------------------------------------------------------------------- - end of functions from AVL-tree library. -******************************************************************************/ -#endif diff --git a/c/hv3d_priv.h b/c/hv3d_priv.h index 60611e2d3..32f677ccc 100644 --- a/c/hv3d_priv.h +++ b/c/hv3d_priv.h @@ -1,37 +1,7 @@ #ifndef _HV3D_PRIV_H #define _HV3D_PRIV_H -#ifdef USE_AVL -typedef const double avl_item_t; -typedef struct avl_node_t { - struct avl_node_t *next; - struct avl_node_t *prev; - struct avl_node_t *parent; - struct avl_node_t *left; - struct avl_node_t *right; - avl_item_t * item; - dlnode_t * dlnode; - unsigned char depth; -} avl_node_t; - -#include "avl_tiny.h" - -static inline const double * -node_point(const avl_node_t * restrict node) -{ - return node->item; -} - -static inline avl_node_t * -new_avl_node(dlnode_t * restrict p, avl_node_t * restrict node) -{ - node->dlnode = p; - node->item = p->x; - return node; -} -#else #include "treap2d_dlnode.h" -#endif /* Used by hvc3d.c and hv3dplus.c. @@ -65,78 +35,6 @@ hv3d_preprocessing(dlnode_t * restrict list, size_t n) assert(list+1 == list->next[0]); assert(list+2 == list->prev[0]); -#ifdef USE_AVL - avl_tree_t tree; - avl_init_tree(&tree, qsort_cmp_pdouble_asc_y_des_x_nonzero); - avl_node_t * tnodes = malloc((n+2) * sizeof(*tnodes)); - - // At the top we insert the first point, which is never dominated. - dlnode_t * p = (list+1)->next[0]; - avl_node_t * nodeaux = new_avl_node(p, tnodes); - avl_insert_top(&tree, nodeaux); - set_delimiters(p, list+1, list); - - // After the top node, we insert sentinel 1 (-INF, ref[1]) - avl_node_t * node = new_avl_node(list, tnodes + 1); - avl_insert_after(&tree, nodeaux, node); - // Before the top node, we insert sentinel 2 (ref[0], -INF) - node = new_avl_node(list + 1, tnodes + 2); - avl_insert_before(&tree, nodeaux, node); - set_delimiters(p, nodeaux->prev->dlnode, nodeaux->next->dlnode); - const dlnode_t * stop = list+2; - p = p->next[0]; - while (p != stop) { - const double * px = p->x; - const double * prev_x; - // == 1 means that nodeaux goes before p, so move to the next one. - if (avl_search_closest(&tree, px, &nodeaux) == 1) { - prev_x = node_point(nodeaux); - nodeaux = nodeaux->next; - } else { - prev_x = node_point(nodeaux->prev); - } - assert(node_point(nodeaux)[1] > px[1] // node_point(nodeaux) comes after px. - || (node_point(nodeaux)[1] == px[1] && node_point(nodeaux)[0] < px[0])); - assert(prev_x[1] <= px[1]); - assert(prev_x[2] <= px[2]); - if (prev_x[0] <= px[0]) { // px is dominated by a point in the tree. -#ifdef HVC_ONLY - if (all_equal_double(prev_x, px, 3)) - nodeaux->prev->dlnode->ignore = true; // It will have zero hvc. -#endif - remove_from_z(p); - } else if (node_point(nodeaux)[1] == px[1]) { // px is dominated by a point in the tree. - // FIXME: If the points were ordered by asc x we would only need the first condition. - assert(node_point(nodeaux)[0] < px[0]); - remove_from_z(p); - } else { - assert(node_point(nodeaux)[1] >= px[1]); - if (prev_x[1] == px[1]){ - nodeaux = nodeaux->prev; - prev_x = node_point(nodeaux->prev); - } - assert(prev_x[1] < px[1]); - // Delete everything in the tree that is dominated by p. - while (node_point(nodeaux)[0] >= px[0]) { - assert(node_point(nodeaux)[1] >= px[1]); - nodeaux = nodeaux->next; - /* FIXME: A possible speed up is to delete without rebalancing - the tree because avl_insert_before() will rebalance, but we - need to know which is the highest node that needs - rebalancing. */ - avl_unlink_node(&tree, nodeaux->prev); - } - node = new_avl_node(p, node + 1); - avl_insert_before(&tree, nodeaux, node); - // Check if the data structure is properly setup - assert(node->prev->dlnode->x[0] > p->x[0] && node->prev->dlnode->x[1] < p->x[1]); - assert(node->next->dlnode->x[0] < p->x[0] && node->next->dlnode->x[1] > p->x[1]); - set_delimiters(p, node->prev->dlnode, node->next->dlnode); - } - p = p->next[0]; - } - free(tnodes); -#else Treap2D * tree = treap2d_new(n+2); assert(tree != NULL); // At the top we insert the first point, which is never dominated. @@ -184,7 +82,6 @@ hv3d_preprocessing(dlnode_t * restrict list, size_t n) } } treap2d_free(tree); -#endif #undef set_delimiters } diff --git a/c/nondominated.c b/c/nondominated.c index 8a0d784f0..a947934fb 100644 --- a/c/nondominated.c +++ b/c/nondominated.c @@ -6,22 +6,7 @@ *****************************************************************************/ #include "nondominated.h" -#ifdef USE_AVL -typedef const double avl_item_t; -typedef struct avl_node_t { - struct avl_node_t *next; - struct avl_node_t *prev; - struct avl_node_t *parent; - struct avl_node_t *left; - struct avl_node_t *right; - avl_item_t *item; - unsigned char depth; -} avl_node_t; - -#include "avl_tiny.h" -#else #include "treap2d_fixed_size.h" -#endif /** 3D dimension-sweep algorithm by H. T. Kung, F. Luccio, and F. P. Preparata. @@ -42,31 +27,11 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, const bool find_dominated) { ASSUME(size > 1); -#ifdef USE_AVL - /* FIXME: The AVL-tree is the bottleneck of this algorithm. A Treap - [R. Seidel and C. R. Aragon. Randomized search trees. Algorithmica, - 16:464–497, 1996] may be far more efficient by allowing to remove a - range of items without rebalancing. See - https://alexdremov.me/treap-algorithm-explained/ - Instead of using randomized priorities, hash the node pointer or the node index. - */ - avl_tree_t tree; - avl_init_tree(&tree, qsort_cmp_pdouble_asc_x_nonzero); - avl_node_t * tnodes = malloc((size+1) * sizeof(*tnodes)); - avl_node_t * node = tnodes; - node->item = rows[0]; - avl_insert_top(&tree, node); - - const double sentinel[] = { INFINITY, -INFINITY }; - (++node)->item = sentinel; - avl_insert_after(&tree, node - 1, node); - double pk0 = rows[0][0], pk1 = rows[0][1], pk2 = rows[0][2]; -#else Treap2D * tree = treap2d_new(size); assert(tree != NULL); double pk0 = rows[0][0], pk1 = rows[0][1], pk2 = rows[0][2]; treap2d_init_with_single_node(tree, pk0, pk1); -#endif + // In this context, size means "no dominated solution found". size_t new_size = size; size_t prev_dominated = false; @@ -76,47 +41,6 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, const double pj0 = pj[0], pj1 = pj[1], pj2 = pj[2]; if ((pk0 > pj0) | (pk1 > pj1)) { // Check if pj is dominated by a point in the tree. -#ifdef USE_AVL - avl_node_t * nodeaux; - int res = avl_search_closest(&tree, pj, &nodeaux); - assert(res != 0); - if (res > 0 || nodeaux->prev) { - const double * restrict prev; - if (res > 0) { // nodeaux goes before pj - prev = nodeaux->item; - nodeaux = nodeaux->next; - DEBUG2(printf_point("res > 0: prev: ", prev, 3, "\n")); - } else { // nodeaux goes after pj, so move to the previous one. - prev = nodeaux->prev->item; - DEBUG2(printf_point("res < 0: prev: ", prev, 3, "\n")); - } - assert(prev[0] != sentinel[0]); - assert(prev[0] <= pj0); - if (prev[1] <= pj1) - goto j_is_dominated; - } - - // pj is NOT dominated by a point in the tree. - const double * restrict point = nodeaux->item; - assert(pj0 <= point[0]); - // Delete everything in the tree that is dominated by pj. - while (pj1 <= point[1]) { - DEBUG2(printf_point("delete point: ", point, 3, "\n")); - assert(pj0 <= point[0]); - nodeaux = nodeaux->next; - point = nodeaux->item; - /* FIXME: A possible speed up is to delete without rebalancing - the tree because avl_insert_before() will rebalance, but we - need to know which is the highest node that needs - rebalancing. */ - avl_unlink_node(&tree, nodeaux->prev); - } - DEBUG2((point == sentinel) - ? printf_point("insert before sentinel: ", sentinel, 2, "\n") - : printf_point("insert before point: ", point, 3, "\n")); - (++node)->item = pj; - avl_insert_before(&tree, nodeaux, node); -#else /* In a valid 2-D frontier, x increases and y decreases. Therefore the only existing point that can dominate pj is the frontier predecessor with the largest key <= pj0. */ @@ -132,7 +56,6 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, we do not need to traverse it here because those nodes will never again participate in dominance queries. */ treap2d_insert(tree, pj0, pj1); -#endif // Fall-through to j_is_NOT_dominated. } // Handle duplicates and points that are dominated by the immediate previous one. else if (!keep_weakly // Don't keep duplicates. @@ -163,45 +86,13 @@ find_nondominated_3d_impl_sorted(const double ** restrict rows, size_t size, } early_end: -#ifdef USE_AVL - free(tnodes); -#else treap2d_free(tree); -#endif return new_size; } -#ifdef USE_AVL /** - Returns NULL if point is dominated by a different point in the tree. + Return true if point is dominated by a different point in the tree. */ -static avl_node_t * -dominated_by_tree_3d(const avl_tree_t * restrict tree, - const double * restrict point) -{ - avl_node_t * nodeaux; - int res = avl_search_closest(tree, point, &nodeaux); - if (res >= 0) { // nodeaux goes before point - const double * restrict prev = nodeaux->item; - DEBUG2(printf_point("res > 0: prev = [ ", prev, 3, " ], ")); - DEBUG2(printf_point("point = [ ", point, 3, " ]\n")); - assert(prev[0] != INFINITY); - assert(prev[0] <= point[0]); - assert(prev[1] <= point[1]); - return prev[2] <= point[2] ? NULL : nodeaux->next; - } else if (nodeaux->prev) { // nodeaux goes after point, so move to the next one. - const double * restrict prev = nodeaux->prev->item; - DEBUG2(printf_point("res <= 0: prev = [ ", prev, 3, " ], ")); - DEBUG2(printf_point("point = [ ", point, 3, " ]\n")); - assert(prev[0] != INFINITY); - assert(prev[0] <= point[0]); - assert(prev[1] <= point[1]); - return prev[2] <= point[2] ? NULL : nodeaux; - } - assert(nodeaux != NULL); - return nodeaux; // point is not dominated -} -#else static inline bool dominated_by_tree_3d(Treap2D *tree, const double *point) { @@ -240,7 +131,6 @@ insert_if_not_dominated_by_tree_3d(Treap2D *tree, const double *point) treap2d_insert(tree, point[0], point[1]); return true; // p was inserted. } -#endif /** ALGORITHM 5.1. This algorithm accepts two sets R and S of 3-dimensional @@ -264,24 +154,11 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, DEBUG1(for (size_t j = 0; j < k; j++) assert(s[j][0] < r0)); DEBUG1(for (size_t j = k; j < s_size; j++) assert(r0 <= s[j][0])); -#ifdef USE_AVL - avl_tree_t tree; - avl_init_tree(&tree, qsort_cmp_pdouble_asc_y_asc_z); - // FIXME: Use a workspace to allocate this once and re-alloc only if a larger number is needed. - avl_node_t * tnodes = malloc((r_size + 1) * sizeof(*tnodes)); - avl_node_t * node = tnodes; - node->item = r[0]; - avl_insert_top(&tree, node); - - const double sentinel[] = { INFINITY, INFINITY, -INFINITY}; - (++node)->item = sentinel; - avl_insert_after(&tree, node - 1, node); -#else Treap2D * tree = treap2d_new(r_size); assert(tree != NULL); treap2d_init_with_single_node(tree, r[0][1], r[0][2]); DEBUG2(printf_point("insert in tree: r=[ ", r[0], 3, " ]\n")); -#endif + size_t i = 1, new_size = s_size; do { const double * restrict v = s[k]; @@ -292,50 +169,19 @@ kung_merge_dim3(const double ** restrict r, size_t r_size, const double * restrict u = r[i]; if (u[0] > v[0]) break; -#ifdef USE_AVL - avl_node_t * nodeaux = dominated_by_tree_3d(&tree, u); - if (nodeaux != NULL) { // u is NOT dominated by a point in the tree. - const double * restrict point = nodeaux->item; - assert(u[1] <= point[1]); - // Delete everything in the tree that is dominated by u. - while (u[2] <= point[2]) { - // printf("delete point: "); print_point(point); printf("\n"); - assert(u[1] <= point[1]); - nodeaux = nodeaux->next; - point = nodeaux->item; - /* FIXME: A possible speed up is to delete without - rebalancing the tree because avl_insert_before() will - rebalance, but we need to know which is the highest node - that needs rebalancing. */ - avl_unlink_node(&tree, nodeaux->prev); - } - // printf("insert before point: "); print_point(point); printf("\n"); - (++node)->item = u; - avl_insert_before(&tree, nodeaux, node); - } -#else if (insert_if_not_dominated_by_tree_3d(tree, u)) { // u is NOT dominated by a point in the tree. DEBUG2(printf_point("!dominated_by_tree_3d: u=[ ", u, 3, " ]\n")); } -#endif i++; } -#ifdef USE_AVL - if (dominated_by_tree_3d(&tree, v) == NULL) { -#else if (dominated_by_tree_3d(tree, v)) { -#endif DEBUG2(printf_point("dominated_by_tree_3d: v=[ ", v, 3, " ]\n")); s[k] = NULL; // dominated new_size--; } k++; } while (k < s_size); -#ifdef USE_AVL - free(tnodes); -#else treap2d_free(tree); -#endif return new_size; } diff --git a/c/pareto.c b/c/pareto.c index e23e9bd7a..b1e1a27f6 100644 --- a/c/pareto.c +++ b/c/pareto.c @@ -4,22 +4,7 @@ #include "io.h" #endif -#ifdef USE_AVL -typedef const double avl_item_t; -typedef struct avl_node_t { - struct avl_node_t *next; - struct avl_node_t *prev; - struct avl_node_t *parent; - struct avl_node_t *left; - struct avl_node_t *right; - avl_item_t *item; - unsigned char depth; -} avl_node_t; - -#include "avl_tiny.h" -#else #include "treap2d_fixed_size.h" -#endif /** Nondominated sorting in 3D in O(k * n log n), where k is the number of fronts. @@ -37,30 +22,14 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) const bool keep_weakly = true; const double ** p = generate_row_pointers_asc_rev_3d(points, size); -#ifdef USE_AVL - avl_tree_t tree; - avl_init_tree(&tree, qsort_cmp_pdouble_asc_x_nonzero); - avl_node_t * tnodes = malloc((size+1) * sizeof(*tnodes)); - const double sentinel[] = { INFINITY, -INFINITY }; - tnodes->item = sentinel; -#else Treap2D * tree = treap2d_new(size); assert(tree != NULL); -#endif int front = 0; while (true) { ASSUME(size >= 2); const double * restrict pk = p[0]; -#ifdef USE_AVL - avl_node_t * node = tnodes + 1; - node->item = pk; - avl_insert_top(&tree, node); - // Insert sentinel. - avl_insert_after(&tree, node, tnodes); -#else treap2d_init_with_single_node(tree, pk[0], pk[1]); -#endif // In this context, size means "no dominated solution found". size_t n_nondom = size, j = 1; @@ -69,48 +38,10 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) const double * restrict pj = p[j]; bool dominated; if (pk[0] > pj[0] || pk[1] > pj[1]) { -#ifdef USE_AVL - avl_node_t * nodeaux; - int res = avl_search_closest(&tree, pj, &nodeaux); - assert(res != 0); - if (res > 0) { // nodeaux goes before pj - const double * restrict prev = nodeaux->item; - assert(prev[0] != sentinel[0]); - assert(prev[0] <= pj[0]); - dominated = prev[1] <= pj[1]; - nodeaux = nodeaux->next; - } else if (nodeaux->prev) {// nodeaux goes after pj, so move to the next one. - const double * restrict prev = nodeaux->prev->item; - assert(prev[0] != sentinel[0]); - assert(prev[0] <= pj[0]); - dominated = prev[1] <= pj[1]; - } else { - dominated = false; - } - - if (!dominated) { // pj is NOT dominated by a point in the tree. - const double * restrict point = nodeaux->item; - assert(pj[0] <= point[0]); - // Delete everything in the tree that is dominated by pj. - while (pj[1] <= point[1]) { - assert(pj[0] <= point[0]); - nodeaux = nodeaux->next; - point = nodeaux->item; - /* FIXME: A possible speed up is to delete without - rebalancing the tree because avl_insert_before() - will rebalance, but we need to know which is the - highest node that needs rebalancing. */ - avl_unlink_node(&tree, nodeaux->prev); - } - (++node)->item = pj; - avl_insert_before(&tree, nodeaux, node); - } -#else TreapNode *pred = treap2d_find_le(tree, pj[0]); dominated = (pred != NULL && treap2d_node_get_y(pred) <= pj[1]); if (!dominated) treap2d_insert(tree, pj[0], pj[1]); -#endif } else { // Handle duplicates and points that are dominated by the immediate // previous one. @@ -146,11 +77,7 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) // we can stop. size -= n_nondom; if (size <= 1) { -#ifdef USE_AVL - free(tnodes); -#else treap2d_free(tree); -#endif free(p); return; } @@ -171,9 +98,6 @@ pareto_rank_3d(int * restrict rank, const double * restrict points, size_t size) k, p[k][0], p[k][1], p[k][2]); front++; -#ifdef USE_AVL - avl_clear_tree(&tree); -#endif } } From 9f15961cbd1e936a3e0243578d47b4b5d35fbb56 Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Wed, 28 Oct 2026 09:02:06 +0000 Subject: [PATCH 3/9] python/Makefile (fulldoc): New target. --- python/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/Makefile b/python/Makefile index 322850c70..1ffadd103 100644 --- a/python/Makefile +++ b/python/Makefile @@ -34,6 +34,9 @@ doc: fastdoc: $(MAKE) -C doc html-noplot +fulldoc: + $(MAKE) -C doc clean html + clean: $(MAKE) -C doc clean $(MAKE) -C src/moocore/libmoocore/ clean From 5f2736333458a711343ec771493d6c05d3466dc9 Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:06:59 +0100 Subject: [PATCH 4/9] * bibkeys.txt (AraSei1989rst, JasLus2018ndtree): New. * r/inst/REFERENCES.bib: Regenerate. * python/doc/source/REFERENCES.bib: Regenerate. --- bibkeys.txt | 2 ++ python/doc/source/REFERENCES.bib | 46 ++++++++++++++++++++++++++++++++ r/inst/REFERENCES.bib | 46 ++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) diff --git a/bibkeys.txt b/bibkeys.txt index 0a0ff5285..e9e8edff5 100644 --- a/bibkeys.txt +++ b/bibkeys.txt @@ -1,3 +1,4 @@ +AraSei1989rst AugBadBroZit2009gecco BeuFonLopPaqVah09:tec BezLopStu2017assessment @@ -27,6 +28,7 @@ HanJas1998 HerWer1987tabucol IshHeSha2019regular IshMasTanNoj2015igd +JasLus2018ndtree Jen03 JohAraMcGSch1991 KnoCor2002cec diff --git a/python/doc/source/REFERENCES.bib b/python/doc/source/REFERENCES.bib index b752aab29..871755195 100644 --- a/python/doc/source/REFERENCES.bib +++ b/python/doc/source/REFERENCES.bib @@ -298,6 +298,42 @@ @article{HerWer1987tabucol pages = {345--351} } +@article{JasLus2018ndtree, + author = { Andrzej Jaszkiewicz and Thibaut Lust }, + title = {{ND}-Tree-Based Update: A Fast Algorithm for the Dynamic + Nondominance Problem}, + journal = {IEEE Transactions on Evolutionary Computation}, + year = 2018, + volume = 22, + number = 5, + pages = {778--791}, + doi = {10.1109/TEVC.2018.2799684}, + publisher = {IEEE}, + abstract = {In this paper, we propose a new method called ND-Tree-based + update (ND-Tree) for the dynamic nondominance problem, i.e., + the problem of online update of a Pareto archive composed of + mutually nondominated points. It uses a new ND-Tree data + structure in which each node represents a subset of points + contained in a hyperrectangle defined by its local + approximate ideal and nadir points. By building subsets + containing points located close in the objective space and + using basic properties of the local ideal and nadir points we + can efficiently avoid searching many branches in the + tree. ND-Tree may be used in multiobjective evolutionary + algorithms and other multiobjective metaheuristics to update + an archive of potentially nondominated points. We prove that + the proposed algorithm has sublinear time complexity under + mild assumptions. We experimentally compare ND-Tree to the + simple list, Quad-tree, and M-Front methods using artificial + and realistic benchmarks with up to ten objectives and show + that with this new method substantial reduction of the number + of point comparisons and computational time can be + obtained. Furthermore, we apply the method to the + nondominated sorting problem showing that it is highly + competitive to some recently proposed algorithms dedicated to + this problem.} +} + @article{Jen03, author = {M. T. Jensen}, title = {Reducing the run-time complexity of multiobjective {EA}s: The @@ -455,6 +491,16 @@ @article{ZitThiLauFon2003:tec doi = {10.1109/TEVC.2003.810758} } +@inproceedings{AraSei1989rst, + author = {Aragon, C. R. and Seidel, R. G.}, + title = {Randomized search trees}, + booktitle = {30th Annual Symposium on Foundations of Computer Science}, + year = 1989, + pages = {540--545}, + keywords = {Binary search trees, Treap, Dynamic programming}, + doi = {10.1109/SFCS.1989.63531} +} + @incollection{AugBadBroZit2009gecco, booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference, GECCO 2009}, address = { New York, NY}, diff --git a/r/inst/REFERENCES.bib b/r/inst/REFERENCES.bib index b752aab29..871755195 100644 --- a/r/inst/REFERENCES.bib +++ b/r/inst/REFERENCES.bib @@ -298,6 +298,42 @@ @article{HerWer1987tabucol pages = {345--351} } +@article{JasLus2018ndtree, + author = { Andrzej Jaszkiewicz and Thibaut Lust }, + title = {{ND}-Tree-Based Update: A Fast Algorithm for the Dynamic + Nondominance Problem}, + journal = {IEEE Transactions on Evolutionary Computation}, + year = 2018, + volume = 22, + number = 5, + pages = {778--791}, + doi = {10.1109/TEVC.2018.2799684}, + publisher = {IEEE}, + abstract = {In this paper, we propose a new method called ND-Tree-based + update (ND-Tree) for the dynamic nondominance problem, i.e., + the problem of online update of a Pareto archive composed of + mutually nondominated points. It uses a new ND-Tree data + structure in which each node represents a subset of points + contained in a hyperrectangle defined by its local + approximate ideal and nadir points. By building subsets + containing points located close in the objective space and + using basic properties of the local ideal and nadir points we + can efficiently avoid searching many branches in the + tree. ND-Tree may be used in multiobjective evolutionary + algorithms and other multiobjective metaheuristics to update + an archive of potentially nondominated points. We prove that + the proposed algorithm has sublinear time complexity under + mild assumptions. We experimentally compare ND-Tree to the + simple list, Quad-tree, and M-Front methods using artificial + and realistic benchmarks with up to ten objectives and show + that with this new method substantial reduction of the number + of point comparisons and computational time can be + obtained. Furthermore, we apply the method to the + nondominated sorting problem showing that it is highly + competitive to some recently proposed algorithms dedicated to + this problem.} +} + @article{Jen03, author = {M. T. Jensen}, title = {Reducing the run-time complexity of multiobjective {EA}s: The @@ -455,6 +491,16 @@ @article{ZitThiLauFon2003:tec doi = {10.1109/TEVC.2003.810758} } +@inproceedings{AraSei1989rst, + author = {Aragon, C. R. and Seidel, R. G.}, + title = {Randomized search trees}, + booktitle = {30th Annual Symposium on Foundations of Computer Science}, + year = 1989, + pages = {540--545}, + keywords = {Binary search trees, Treap, Dynamic programming}, + doi = {10.1109/SFCS.1989.63531} +} + @incollection{AugBadBroZit2009gecco, booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference, GECCO 2009}, address = { New York, NY}, From ed206e754d9da5cb09236d38828c6c4a9dc2f53f Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:11:12 +0100 Subject: [PATCH 5/9] * python/doc/source/_templates/autosummary/class.rst: Add __len__, __iter__ to special-members. --- python/doc/source/_templates/autosummary/class.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/doc/source/_templates/autosummary/class.rst b/python/doc/source/_templates/autosummary/class.rst index 4e2358f8b..f7bda6399 100644 --- a/python/doc/source/_templates/autosummary/class.rst +++ b/python/doc/source/_templates/autosummary/class.rst @@ -10,7 +10,7 @@ .. autoclass:: {{ objname }} :members: :inherited-members: - :special-members: __call__ + :special-members: __call__, __len__, __iter__ .. minigallery:: {{ module }}.{{ objname }} {% for meth in methods %}{{ module }}.{{ objname }}.{{ meth }} {% endfor %} :add-heading: Gallery examples From 0e7adb8eedc57dae719f89e352cbbad354d90262 Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:12:43 +0100 Subject: [PATCH 6/9] * python/doc/source/conf.py: Enable autodoc_inherit_docstrings and hide the class/module prefixes for objects in sidebar. --- python/doc/source/conf.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/doc/source/conf.py b/python/doc/source/conf.py index 4a80c3dd6..bb2c69c6d 100644 --- a/python/doc/source/conf.py +++ b/python/doc/source/conf.py @@ -97,6 +97,7 @@ # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True +autodoc_inherit_docstrings = True autodoc_typehints = "none" # Conflicts with sphinx_autodoc_typehints typehints_document_rtype = True typehints_use_rtype = False @@ -108,6 +109,8 @@ "ArrayLike": ":py:data:`~numpy.typing.ArrayLike`", "NDArray": ":py:data:`~numpy.typing.NDArray`", } +# Hide the class/module prefixes for objects in TOC entries (sidebar) +toc_object_entries_show_parents = "hide" nitpicky = True nitpick_ignore = { @@ -125,7 +128,6 @@ bibtex_bibliography_id = "bibliography-{bibliography_count}" bibtex_footbibliography_id = "footbibliography-{footbibliography_count}" - # FIXME: This is not working! logger = sphinx.util.logging.getLogger("sphinx.ext.autodoc") members_to_watch = ["class", "exception", "function", "method", "attribute"] From dadc9d64bd149603689acdd67f4d336f837c4100 Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:20:57 +0100 Subject: [PATCH 7/9] * c/sort.h (dominates_2d, dominates): New. --- c/sort.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/c/sort.h b/c/sort.h index c819c57a9..a16d297fe 100644 --- a/c/sort.h +++ b/c/sort.h @@ -91,6 +91,21 @@ all_equal_double(const double * restrict a, const double * restrict b, dimension return (bool) a_eq_b; } +/** + Return true if a <= b but a != b, false otherwise. +*/ +static inline bool +dominates_2d(const double * restrict a, const double * restrict b) +{ + return a[0] <= b[0] && a[1] <= b[1] && (a[0] != b[0] || a[1] != b[1]); +} + +static inline bool +dominates(const double * restrict a, const double * restrict b, dimension_t dim) +{ + return weakly_dominates(a, b, dim) && !all_equal_double(a, b, dim); +} + // ---------- Comparison functions (e.g, qsort). Return 'int' ---------------- // General type for comparison functions used in qsort() and qsort_r(). From bb166761f0ce76efbdc9f1acb6d60efa97d5ac3a Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:28:50 +0100 Subject: [PATCH 8/9] Implement Treap and ND-tree archivers for C and Python. * TODO-archiving: New. * c/archive.h: New. * c/archiving.h: New. * c/archiving_priv.h: New. * c/common.h (squared_distance, which_max): New. * c/main-archiver.c: New. * c/nd_tree.h: New. * c/nd_tree_iterator.h: New. * c/treap_archive.c: New. * c/treap_archive.h: New. * c/treap_iterator.h: New. * c/flex_bucket.h: New. * python/doc/source/reference/functions.archiving.rst: New. * python/doc/source/whatsnew/index.rst: Document it. * python/src/moocore/__init__.py: Export UnboundedArchive and BaseUnboundedArchive. * python/src/moocore/_archive.py: New. * python/src/moocore/_docsubstitute.py (COMMON_PARAMS): Add dim. * python/src/moocore/_moocore.py (_parse_maximise): Move to ... * python/src/moocore/_utils.py: ... here. (_as_1d_float_array, _as_2d_float_array): New. * python/tests/conftest.py (AutoIncrement): New class. (count): New fixture. * python/tests/test_archiving.py: New. * r/src/install.libs.R: Add archiver. --- README.md | 3 +- TODO-archiving | 14 + c/Makefile | 8 +- c/README.md | 1 + c/archive.h | 110 ++ c/archiving.h | 19 + c/archiving_priv.h | 26 + c/common.h | 27 + c/flex_bucket.h | 104 ++ c/io.c | 65 + c/io.h | 3 + c/main-archiver.c | 172 ++ c/nd_tree.h | 1603 +++++++++++++++++ c/nd_tree_iterator.h | 119 ++ c/solutions_list.h | 149 ++ c/treap2d.h | 206 ++- c/treap_archive.c | 390 ++++ c/treap_archive.h | 74 + c/treap_iterator.h | 126 ++ .../source/reference/functions.archiving.rst | 24 + python/doc/source/reference/index.rst | 1 + python/doc/source/whatsnew/index.rst | 1 + python/src/moocore/__init__.py | 5 + python/src/moocore/_archive.py | 696 +++++++ python/src/moocore/_docsubstitute.py | 2 + python/src/moocore/_ffi_build.py | 3 + python/src/moocore/_moocore.py | 13 +- python/src/moocore/_utils.py | 38 +- python/src/moocore/libmoocore.h | 77 + python/tests/conftest.py | 18 + python/tests/test_archiving.py | 468 +++++ r/src/install.libs.R | 1 + 32 files changed, 4550 insertions(+), 16 deletions(-) create mode 100644 TODO-archiving create mode 100644 c/archive.h create mode 100644 c/archiving.h create mode 100644 c/archiving_priv.h create mode 100644 c/flex_bucket.h create mode 100644 c/main-archiver.c create mode 100644 c/nd_tree.h create mode 100644 c/nd_tree_iterator.h create mode 100644 c/solutions_list.h create mode 100644 c/treap_archive.c create mode 100644 c/treap_archive.h create mode 100644 c/treap_iterator.h create mode 100644 python/doc/source/reference/functions.archiving.rst create mode 100644 python/src/moocore/_archive.py create mode 100644 python/tests/test_archiving.py diff --git a/README.md b/README.md index 423fa2e7d..532511fec 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ Mickaël Binois, Leonardo C.T. Bezerra, Fergus Rooney, - [Lennart Schäpermeier](https://schaepermeier.github.io). + [Lennart Schäpermeier](https://schaepermeier.github.io), + Jonathan Fieldsend. --------------------------------------- diff --git a/TODO-archiving b/TODO-archiving new file mode 100644 index 000000000..27a0f29de --- /dev/null +++ b/TODO-archiving @@ -0,0 +1,14 @@ + +# Unbounded Archive + - [ ] .add_many() is currently a loop in Python and it is not available in C. + First, it could loop in C. + Also, it could filter before adding unless the user specifies "nondominated=True". + If it is nondominated, it could do a faster merge operation. + + - Benchmark against: https://github.com/alandefreitas/pareto + + +# Bounded size archives. + + - [ ] Hypervolume archiver + - [ ] MGA diff --git a/c/Makefile b/c/Makefile index 33c7cd870..4f2780728 100644 --- a/c/Makefile +++ b/c/Makefile @@ -72,6 +72,7 @@ SRCS = avl.c \ igd.c \ io.c \ libutil.c \ + main-archiver.o \ main-hv.c \ main-hvapprox.c \ main-nondominated.c \ @@ -81,7 +82,8 @@ SRCS = avl.c \ pareto.c \ rng.c \ timer.c \ - treap2d_fixed_size.c \ + treap2d_fixed_size.c \ + treap_archive.c \ whv.c \ whv_hype.c @@ -163,7 +165,7 @@ EXE_CFLAGS += $(SANITIZERS) $(OPT_CFLAGS) $(MARCH_FLAGS) $(WARN_CFLAGS) \ # List of test target base names -TEST_NAMES := eaf nondominated hv hvapprox igd epsilon dominatedsets ndsort +TEST_NAMES := archiver eaf nondominated hv hvapprox igd epsilon dominatedsets ndsort ASAN_TARGETS := $(addprefix asan-,$(TEST_NAMES)) UBSAN_TARGETS:= $(addprefix ubsan-,$(TEST_NAMES)) TEST_TARGETS := $(addprefix test-,$(TEST_NAMES)) @@ -195,6 +197,7 @@ $(ALL_NAMES): %: $(BINDIR)/%$(EXE) include libhv.mk +$(BINDIR)/archiver$(EXE): main-archiver.o io.o treap_archive.o nondominated.o treap2d_fixed_size.o $(BINDIR)/dominatedsets$(EXE): dominatedsets.o nondominated.o treap2d_fixed_size.o $(BINDIR)/eaf$(EXE): eaf.o eaf_main.o eaf3d.o avl.o $(BINDIR)/epsilon$(EXE): epsilon.o nondominated.o treap2d_fixed_size.o @@ -224,6 +227,7 @@ hvapprox.o: hvapprox.h pow_int.h rng.h mt19937/mt19937.h hvc3d.o: hv_priv.h sort.h hv3d_priv.h treap2d.h igd.o: cmdline.h io.h nondominated.h igd.h pow_int.h io.o: io.h io_priv.h +main-archiver.o: cmdline.h io.h treap_archive.h treap2d.h nd_tree.h libmoocore-config.h main-hv.o: cmdline.h io.h hv.h timer.h libmoocore-config.h nondominated.h hvapprox.h main-hvapprox.o: cmdline.h io.h hvapprox.h main-nondominated.o : cmdline.h io.h nondominated.h nondominated_kung.h diff --git a/c/README.md b/c/README.md index 4dd10db26..ff31252e8 100644 --- a/c/README.md +++ b/c/README.md @@ -26,6 +26,7 @@ The [**moocore** project](https://github.com/multi-objective/moocore/) collects * Computation of the Empirical Attainment Function. The empirical attainment function (EAF) describes the probabilistic distribution of the outcomes obtained by a stochastic algorithm in the objective space. + * Archivers that allow efficiently storing a nondominated set from points given one-by-one as a sequence. The goal of **moocore** is to provide an implementation of these functions that is efficient, thoroughly tested, well-documented, multi-platform (Windows, Linux, MacOS), multi-language (C, R, and Python, so far), with minimal dependencies and reusable from other libraries and packages, thus providing an easy-to-use and high-performance building block. diff --git a/c/archive.h b/c/archive.h new file mode 100644 index 000000000..e79ea3eec --- /dev/null +++ b/c/archive.h @@ -0,0 +1,110 @@ +#ifndef _ARCHIVE_H_ +#define _ARCHIVE_H_ + +#include "treap_archive.h" +#include "nd_tree.h" + +enum unbounded_archive_type_t { + UNBOUNDED_ARCHIVE_TREAP, + UNBOUNDED_ARCHIVE_NDTREE, +}; + +typedef struct UnboundedArchive { + enum unbounded_archive_type_t archive_type; + union { + TreapArchive treap; + NDTreeArchive ndtree; + }; +} UnboundedArchive; + +#define UNBOUNDED_ARCHIVE_DISPATCH(SELF, TREAP_CODE, NDTREE_CODE) \ + switch ((SELF)->archive_type) { \ + case UNBOUNDED_ARCHIVE_TREAP: do { TREAP_CODE; } while(0); break; \ + case UNBOUNDED_ARCHIVE_NDTREE: do { NDTREE_CODE; } while(0); break; \ + default: unreachable(); \ + } + + +static inline UnboundedArchive * +archive_new(enum unbounded_archive_type_t type) +{ + UnboundedArchive * arch = malloc(sizeof(*arch)); + arch->archive_type = type; + return arch; + +} +static inline UnboundedArchive * +archive_ndtree_new(dimension_t dim, NDTreeConfig config) +{ + UnboundedArchive * archive = archive_new(UNBOUNDED_ARCHIVE_NDTREE); + ndtree_init(&archive->ndtree, dim, config.max_children, config.max_bucket_size, config.allow_duplicates); + return archive; +} + +static inline UnboundedArchive * +archive_treap_new(void) +{ + UnboundedArchive * archive = archive_new(UNBOUNDED_ARCHIVE_TREAP); + treap_archive_init(&archive->treap); + return archive; +} + +/** + +*/ +static inline int +archive_add(UnboundedArchive * restrict arch, const double * restrict z, const void * restrict x) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + return treap_archive_add_discard(&arch->treap, z, x), + return ndtree_add_discard(&arch->ndtree, z, x)); +} + +static inline size_t +archive_total_size(const UnboundedArchive *arch) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + return treap_archive_total_size(&arch->treap), + return ndtree_total_size(&arch->ndtree)); +} + +static inline size_t +archive_unique_size(const UnboundedArchive *arch) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + return treap_archive_unique_size(&arch->treap), + return ndtree_unique_size(&arch->ndtree)); +} + +static inline void +archive_get_contents(const UnboundedArchive *arch, double * z_list, const void ** x_list) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + treap_archive_get_contents(&arch->treap, z_list, x_list), + ndtree_get_contents(&arch->ndtree, z_list, x_list)); +} + +static inline void +archive_free(UnboundedArchive *arch) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + treap_archive_free_nodes(&arch->treap), + ndtree_free_nodes(&arch->ndtree)); + free(arch); +} + +static inline void +archive_print_stats(FILE * stream, const UnboundedArchive *arch) +{ + UNBOUNDED_ARCHIVE_DISPATCH( + arch, + (void)0, + ndtree_print_stats(stream, &arch->ndtree)); +} + +#endif // _ARCHIVE_H_ diff --git a/c/archiving.h b/c/archiving.h new file mode 100644 index 000000000..224770906 --- /dev/null +++ b/c/archiving.h @@ -0,0 +1,19 @@ +/***************************************************************************** + + Public definitions that are common to all types of archives. + + *****************************************************************************/ +#ifndef _ARCHIVING_H_ +#define _ARCHIVING_H_ + +enum archive_insert_result_t { + ARCHIVE_INSERT_UKNOWN_ERROR = -4, + ARCHIVE_INSERT_X_MUST_BE_NOT_NULL = -3, + ARCHIVE_INSERT_X_MUST_BE_NULL = -2, + ARCHIVE_INSERT_MEMORY_ERROR = -1, + ARCHIVE_INSERT_REJECTED = 0, + ARCHIVE_INSERT_ACCEPTED = 1, + ARCHIVE_INSERT_DUPLICATED = 2, +}; + +#endif // _ARCHIVING_H_ diff --git a/c/archiving_priv.h b/c/archiving_priv.h new file mode 100644 index 000000000..b60af703e --- /dev/null +++ b/c/archiving_priv.h @@ -0,0 +1,26 @@ +#ifndef _ARCHIVING_PRIV_H_ +#define _ARCHIVING_PRIV_H_ + +#include +#include +#include + +#include "archiving.h" + +/** + Returns 0 if OK, negative values if there is a problem. +*/ +static inline int +wrong_x_is_null(signed char * restrict x_is_null, const void * restrict x) +{ + if (*x_is_null == 0) + return x != NULL ? 0 : ARCHIVE_INSERT_X_MUST_BE_NOT_NULL; + if (*x_is_null == 1) + return x == NULL ? 0 : ARCHIVE_INSERT_X_MUST_BE_NULL; + + *x_is_null = (x == NULL); + return 0; +} + + +#endif // _ARCHIVING_PRIV_H_ diff --git a/c/common.h b/c/common.h index 4e9725bfd..c9d0a0cec 100644 --- a/c/common.h +++ b/c/common.h @@ -142,4 +142,31 @@ euclidean_norm(const double * restrict w, dimension_t dim) return sqrt(norm); } +_attr_pure_func static inline double +squared_distance(const double * restrict a, const double * restrict b, dimension_t dim) +{ + ASSUME(dim >= 2); + double distance = 0; + for (dimension_t i = 0; i < dim; i++) { + double diff = a[i] - b[i]; + distance += diff * diff; + } + ASSUME(distance >= 0); // GCC is not able to infer this. + return distance; +} + +static inline size_t +which_max(const double *v, size_t dim) +{ + double max = v[0]; + size_t pos = 0; + for (size_t i = 1; i < dim; i++) { + if (v[i] > max) { + max = v[i]; + pos = i; + } + } + return pos; +} + #endif /* !MOOCORE_COMMON_H_ */ diff --git a/c/flex_bucket.h b/c/flex_bucket.h new file mode 100644 index 000000000..eccf0ce5d --- /dev/null +++ b/c/flex_bucket.h @@ -0,0 +1,104 @@ +#ifndef FLEX_BUCKET_H_ +#define FLEX_BUCKET_H_ + +#include "solutions_list.h" + +typedef struct FlexBucket { + size_t n_unique; + size_t n_total; + size_t cap; + SolutionsList solutions[]; // List of solutions (each list tracks duplicates). +} FlexBucket; + +static FlexBucket * +flex_bucket_new(size_t cap) +{ + cap = cap > 0 ? cap : 4; + FlexBucket * bucket = malloc(sizeof*bucket + cap * sizeof(SolutionsList)); + if (bucket) { + bucket->cap = cap; + bucket->n_unique = 0; + bucket->n_total = 0; + } + return bucket; +} + +static FlexBucket * +flex_bucket_reserve(FlexBucket * bucket, size_t add_cap) +{ + if (bucket == NULL) + return flex_bucket_new(MAX(add_cap, (size_t)4)); // Use same default cap within flex_bucket_new() + + size_t new_cap = bucket->n_unique + add_cap; + if (new_cap <= bucket->cap) + return bucket; + new_cap = MAX(new_cap, bucket->cap * 2U); + FlexBucket * new_bucket = realloc(bucket, sizeof *bucket + new_cap * sizeof(SolutionsList)); + if (!new_bucket) + return NULL; + new_bucket->cap = new_cap; + return new_bucket; +} + +/** + Copy n_src elements of src to the bucket, possibly re-allocating its memory. + + On return, for each element of src, src.n=0, src[i].x.list = NULL. +*/ +static size_t +flex_bucket_append_move(FlexBucket ** bucket_p, SolutionsList *src, uint32_t n_src) +{ + FlexBucket * bucket = flex_bucket_reserve(*bucket_p, n_src); + if (!bucket) + return 0; + memcpy(&bucket->solutions[bucket->n_unique], src, n_src * sizeof *src); + size_t total = 0; + for (uint32_t i = 0; i < n_src; i++) { + total += src[i].x.n; + // Reset src to detect double copy/free. + src[i].x.n = 0; + src[i].z = NULL; + src[i].x.list = NULL; + } + bucket->n_total += total; + bucket->n_unique += n_src; + *bucket_p = bucket; + return total; +} + +static inline size_t +flex_bucket_unique_len(const FlexBucket * bucket) +{ + return bucket->n_unique; +} + +static inline size_t +flex_bucket_total_len(const FlexBucket * bucket) +{ + return bucket->n_total; +} + +static inline void +flex_bucket_get_unique_vectors(const FlexBucket * bucket, const double ** z_list) +{ + for (size_t i = 0; i < bucket->n_unique; i++, z_list++) + z_list[0] = bucket->solutions[i].z; +} + +static inline void +flex_bucket_get_x_values(const FlexBucket * bucket, const void ** x_list) +{ + for (size_t i = 0; i < bucket->n_unique; i++) + for (size_t j = 0; j < bucket->solutions[i].x.n; j++, x_list++) + x_list[0] = bucket->solutions[i].x.list[j]; +} + +static void +flex_bucket_free(FlexBucket * bucket) +{ + for (size_t i = 0; i < bucket->n_unique; i++) + solutions_list_free(&bucket->solutions[i]); + free(bucket); +} + +#endif // FLEX_BUCKET_H_ diff --git a/c/io.c b/c/io.c index 201dd679d..94e6ecba6 100644 --- a/c/io.c +++ b/c/io.c @@ -86,6 +86,7 @@ skip_comment_line(FILE *instream) return 0; } + int fread_double(FILE *instream, double *number) { @@ -163,6 +164,70 @@ fread_int(FILE *instream, int *number) return 1; // Success ! } +/** + This function is used to read one point at a time. + + When *dim == 0, any empty/comment lines are skipped. Then a complete line of + double values is read, stored in point, and *dim is set to the number of + values read, the function returns 1. + + When *dim > 0, if a sequence of empty/comment lines is found, it is skipped and the function returns 0. + Otherwise, a line of *dim double values is read and stored in point, and the function returns 1. + + If EOF is found, return READ_INPUT_FILE_EMPTY. + + If *dim > 0 but a different number of values is found, return READ_INPUT_WRONG_INITIAL_DIM. + + If something different from a number is found, return ERROR_CONVERSION. + + If the number to read is larger than 128 characters, return ERROR_COLUMNS. + +*/ +int +fread_next_double_point(FILE * restrict input, double * restrict point, dimension_t * restrict dim) +{ + assert(input != NULL && point != NULL && dim != NULL); + int status = skip_comment_line(input); + bool found_empty_line = (status == 1); + while (status == 1) + status = skip_comment_line(input); + + if (unlikely(status == EOF)) + return READ_INPUT_FILE_EMPTY; + + dimension_t expected = *dim; + if (expected > 0 && found_empty_line) + return 0; + + // A non-empty line starts here. + // skip_comment_line() has pushed its first character back. + dimension_t n = 0; + do { + if (unlikely(n == MOOCORE_DIMENSION_MAX)) + return ERROR_COLUMNS; + if (unlikely(expected > 0 && n == expected)) + return READ_INPUT_WRONG_INITIAL_DIM; + + double value; + status = fread_double(input, &value); + if (status == 0) + return ERROR_CONVERSION; + if (status == EOF) + break; // Completed line. + + point[n++] = value; + status = skip_comment_line(input); + } while (status == 0); + + if (expected > 0 && n != expected) + return READ_INPUT_WRONG_INITIAL_DIM; + + if (expected == 0) + *dim = n; + + return 1; +} + #define objective_t int #define fread_objective_t fread_int #define read_objective_t_data read_int_data diff --git a/c/io.h b/c/io.h index 5e09a755d..9e3652bfc 100644 --- a/c/io.h +++ b/c/io.h @@ -44,6 +44,9 @@ int write_sets(FILE *outfile, const double *data, int ncols, const int *cumsizes int write_sets_filtered (FILE * outfile, const double * data, int ncols, const int * cumsizes, int nruns, const boolvec * write_p); +int fread_double(FILE *instream, double *number); +int fread_next_double_point(FILE * restrict input, double * restrict point, dimension_t * restrict dim); + static inline const int * read_minmax (const char *str, int *nobj_p) diff --git a/c/main-archiver.c b/c/main-archiver.c new file mode 100644 index 000000000..47220b9c1 --- /dev/null +++ b/c/main-archiver.c @@ -0,0 +1,172 @@ +/************************************************************************* + + archiver: Archive one point at a time. + + --------------------------------------------------------------------- + + Copyright (c) 2026 + Manuel Lopez-Ibanez + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + ---------------------------------------------------------------------- + + Relevant literature: + +*************************************************************************/ +#include "config.h" +#include +#include +#include +#include +#include +#include // for getopt() +#include // for getopt_long() + +#include "io.h" +#include "archive.h" +#define CMDLINE_COPYRIGHT_YEARS "2026" +#define CMDLINE_AUTHORS "Manuel Lopez-Ibanez \n" +#include "cmdline.h" + +static bool union_flag = false; +static bool always_nd_tree_flag = false; +static int verbose_flag = 1; +static char *suffix = NULL; + +static void usage(void) +{ + printf("\n" + "Usage: %s [OPTIONS] [FILE...]\n\n", program_invocation_short_name); + + printf( +"Calculate the hypervolume of each input set of each FILE. \n" +"With no FILE, or when FILE is -, read standard input.\n\n" + +"Options:\n" +OPTION_HELP_STR +OPTION_VERSION_STR +" -v, --verbose print some information (time, maximum, etc). \n" +" --nd-tree Always use ND-Tree for any dimension.\n" +OPTION_UNION_STR +" -s, --suffix=STRING Create an output file for each input file by appending\n" +" this suffix. This is ignored when reading from stdin. \n" +" If missing, output is sent to stdout. \n" +"\n"); +} + +// FIXME: Add options to print quality metrics after archiving each input point. +static bool +read_and_archive(FILE * input) +{ + dimension_t dim = 0; + double point[MOOCORE_DIMENSION_MAX+1]; + // Read the first line as the dimension/template point. + int status = fread_next_double_point(input, point, &dim); + if (status != 1) + fatal_error("reading the first point"); + if (dim < 2) + fatal_error("At least 2 dimensions are required"); + + const NDTreeConfig config = { .max_children = 0, .max_bucket_size = 0, .allow_duplicates = true}; + const bool use_treap = (dim == 2 && !always_nd_tree_flag); + UnboundedArchive * archive = use_treap + ? archive_treap_new() + : archive_ndtree_new(dim, config); + + size_t points_read = 0; + // Read point until EOF or empty line. + do { + if (archive_add(archive, point, /*x=*/NULL) < 0) + fatal_error("Memory error!"); + // FIXME: check that the archive remains nondominated + points_read++; + status = fread_next_double_point(input, point, &dim); + } while (status == 1 || (union_flag && status == 0)); + + if (status != READ_INPUT_FILE_EMPTY && status != 0) + fatal_error("reading point from input"); + + // We completed one data set + size_t total_points = archive_total_size(archive); + // Print result + if (verbose_flag >= 2) { + fprintf(stdout, + "# Points read: %zu\n" + "# Total points: %zu\n" + "# Unique points: %zu\n", + points_read, + total_points, + archive_unique_size(archive)); + } + double * z_list = malloc(sizeof(*z_list) * dim * total_points); + archive_get_contents(archive, z_list, NULL); + // FIXME: Add an option to sort the output. + int n_points = (int) total_points; + // FIXME: write_sets should take size_t * or unsigned *; + write_sets(stdout, z_list, dim, &n_points, 1, /*prefix=*/NULL); + free(z_list); + if (verbose_flag >= 2) + archive_print_stats(stderr, archive); + archive_free(archive); + return (status == 0); +} + + +int main(int argc, char *argv[]) +{ + // See the man page for getopt_long for an explanation of these fields. + static const char short_options[] = "hVvqUs:N"; + static const struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, + {"verbose", no_argument, NULL, 'v'}, + {"quiet", no_argument, NULL, 'q'}, + {"union", no_argument, NULL, 'U'}, + {"suffix", required_argument, NULL, 's'}, + {"nd-tree", no_argument, NULL, 'N'}, + {NULL, 0, NULL, 0} /* marks end of list */ + }; + + set_program_invocation_short_name(argv[0]); + + int opt; /* it's actually going to hold a char. */ + int longopt_index; + while (0 < (opt = getopt_long (argc, argv, short_options, + long_options, &longopt_index))) { + switch (opt) { + case 'N': // --nd-tree + always_nd_tree_flag = true; + break; + + case 's': // --suffix + suffix = optarg; + break; + + case 'q': // --quiet + verbose_flag = 0; + break; + + case 'v': // --verbose + verbose_flag = 2; + break; + + case 'U': // --union + union_flag = true; + break; + + default: + default_cmdline_handler(opt); + } + } + + int numfiles = argc - optind; + if (numfiles < 1) { // Read stdin. + while (read_and_archive(stdin)) { + fprintf(stdout, "\n"); + } + } + return EXIT_SUCCESS; +} diff --git a/c/nd_tree.h b/c/nd_tree.h new file mode 100644 index 000000000..369d15288 --- /dev/null +++ b/c/nd_tree.h @@ -0,0 +1,1603 @@ +/****************************************************************************** + + nd_tree.h: ND-Tree Nondominated Archive. + + --------------------------------------------------------------------- + Copyright (C) 2026 + Jonathan Fieldsend + Manuel Lopez-Ibanez + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + --------------------------------------------------------------------- + + Literature: + + [1] Jaszkiewicz, A., Lust, T.: ND-tree-based update: A fast algorithm for the + dynamic nondominance problem. IEEE Transactions on Evolutionary + Computation 22(5), 778-791 (2018). + https://doi.org/10.1109/TEVC.2018.2799684 + + [2] Jaszkiewicz, A., Zielniewicz, P.: Improving the efficiency of the + distance-based hypervolume estimation using ND-Tree. IEEE Transactions on + Evolutionary Computation 29(3), 726-733 (2025). + https://doi.org/10.1109/TEVC.2024.3391857 + + [3] Lang, B.: Space-partitioned ND-Trees for the dynamic nondominance problem. + IEEE Transactions on Evolutionary Computation 26(5), 1004-1014 (2022). + https: //doi.org/10.1109/TEVC.2022.3145631 + + [4] Fieldsend, J.E.: Data structures for non-dominated sets: implementations + and empirical assessment of two decades of advances. In: Coello Coello, + C.A. (ed.) Proceedings of the Genetic and Evolutionary Computation + Conference, GECCO 2020, pp. 489–497. ACM Press, New York, NY (2020). + https://doi.org/10.1145/3377930.3390150 + + [5] Fieldsend, J.E.: On the active use of an ND-Tree-based archive for + multi-objective optimisation. In: Legrand, P., et al. (eds.) EA 2023: + Artificial Evolution, pp. 1-14. Lecture Notes in Computer Science, + Springer (2023). https://doi.org/10.1007/ 978-3-031-42616-2_1 + + + FIXME: The code below does not implement all the improvements described in the + above papers. + + *****************************************************************************/ +#ifndef ND_TREE_ARCHIVE_H +#define ND_TREE_ARCHIVE_H + +#include +#include +#include +#include // memcpy + +#include "sort.h" +#include "maxminclamp.h" +#include "nondominated.h" +#include "archiving_priv.h" +#include "solutions_list.h" +#include "flex_bucket.h" + +/*** + FIXME: The code would be faster if max_bucket_size and/or max_children were + compile-time constants. We could reserve space for 20 max_children but only + use dim+1. +*/ + +/** + ND-tree node. Leaves own buckets; internal nodes own children. The + ideal/nadir/midpoint arrays are conservative bounds used to prune dominance + checks before descending into subtrees. +*/ +typedef struct NDTreeNode { + struct NDTreeNode *parent; + uint8_t n; + uint8_t cap; + // FIXME: Use an anonymous union + SolutionsList *bucket; // List of solutions (each list tracks duplicates). + struct NDTreeNode *children; + // (ideal, nadir) define a hyper-rectangle that contains all points in the + // subtree. The hyper-rectangle is not necessarily tight. + double *ideal; + double *nadir; + double *midpoint; + // This is total_size of subtree (including duplicates). Leaf nodes have + // coverage == 0 and we use node->n. + uint32_t coverage; +} NDTreeNode; + +typedef struct NDTreeConfig { + uint8_t max_children; + uint8_t max_bucket_size; + bool allow_duplicates; +} NDTreeConfig; + +typedef struct NDTreeArchive { + /* It would be faster if this was not a pointer, but then we cannot + relocate the tree in memory, which is needed for NDS-Forest. */ + NDTreeNode * root; + dimension_t dim; + NDTreeConfig config; + signed char x_is_null; + uint64_t revision; // To detect modifications of the tree while iterating. +} NDTreeArchive; + + +static inline SolutionsList * +ndtree_bucket_new(NDTreeNode *node, uint8_t cap) +{ + node->n = 0; + node->cap = cap; + node->bucket = malloc(sizeof(*node->bucket) * node->cap); + return node->bucket; +} + +static inline void +ndtree_bucket_free(NDTreeNode *node) +{ + for (int i = 0; i < node->n; i++) + solutions_list_free(&node->bucket[i]); + free(node->bucket); + node->bucket = NULL; + node->n = 0; +} + +_attr_pure_func +static inline bool +ndtree_node_is_leaf(const NDTreeNode *node) +{ + return node->coverage == 0; +} + +static void +ndtree_node_set_bounds(NDTreeNode * restrict node, const double * restrict z, dimension_t dim) +{ + ASSUME(dim >= 2); + memcpy(node->ideal, z, dim * sizeof(*z)); + memcpy(node->nadir, z, dim * sizeof(*z)); + memcpy(node->midpoint, z, dim * sizeof(*z)); +} + +static inline bool +update_ideal(NDTreeNode * restrict node, const double * restrict z, dimension_t dim) +{ + ASSUME(dim > 1); + bool any_changed = false; + double * restrict ideal = node->ideal; + for (dimension_t i = 0; i < dim; i++) { + if (z[i] < ideal[i]) { + ideal[i] = z[i]; + any_changed = true; + } + } + return any_changed; +} + +static inline bool +update_nadir(NDTreeNode * restrict node, const double * restrict z, dimension_t dim) +{ + ASSUME(dim > 1); + bool any_changed = false; + double * restrict nadir = node->nadir; + for (dimension_t i = 0; i < dim; i++) { + if (z[i] > nadir[i]) { + nadir[i] = z[i]; + any_changed = true; + } + } + return any_changed; +} + +static inline void +update_midpoint(NDTreeNode * restrict node, dimension_t dim) +{ + ASSUME(dim > 1); + const double * restrict ideal = node->ideal; + const double * restrict nadir = node->nadir; + double * restrict midpoint = node->midpoint; + for (dimension_t i = 0; i < dim; i++) { + // With doubles, we do not expect the sum to overflow and this is + // faster than ideal + (nadir - ideal)/2. + midpoint[i] = 0.5 * (ideal[i] + nadir[i]); + } +} + +static inline bool +ndtree_node_update_bounds(NDTreeNode * restrict node, + const double * restrict z, dimension_t dim, + bool * restrict ideal_changed, bool * restrict nadir_changed) +{ + if (*ideal_changed) + *ideal_changed = update_ideal(node, z, dim); + if (*nadir_changed) + *nadir_changed = update_nadir(node, z, dim); + + if (!*ideal_changed && !*nadir_changed) + return false; + update_midpoint(node, dim); + return true; +} + +static void +ndtree_node_update_bounds_up(NDTreeNode * restrict node, const double * restrict z, dimension_t dim) +{ + ASSUME(dim >= 2); + // Iterative instead of recursive because it is faster and helps inlining. + bool ideal_changed = true, nadir_changed = true; + do { + if (!ndtree_node_update_bounds(node, z, dim, &ideal_changed, &nadir_changed)) + return; + node = node->parent; + } while (node); +} + +static void +ndtree_node_propagate_bounds_up(NDTreeNode *node, dimension_t dim) +{ + ASSUME(dim >= 2); + // Propagate the new bounds up the tree. + bool ideal_changed = true, nadir_changed = true; + while (node->parent) { + if (ideal_changed) + ideal_changed = update_ideal(node->parent, node->ideal, dim); + if (nadir_changed) + nadir_changed = update_nadir(node->parent, node->nadir, dim); + if (!ideal_changed && !nadir_changed) + return; + update_midpoint(node->parent, dim); + node = node->parent; + } +} + + +/** + Compute the bounds for a leaf node by looking at the z vectors of its buckets. +*/ +static void +ndtree_node_compute_bounds_of_leaf(NDTreeNode *node, dimension_t dim) +{ + assert(ndtree_node_is_leaf(node)); + assert(node->n > 0); + ndtree_node_set_bounds(node, node->bucket[0].z, dim); + bool any_changed = false; + for (uint8_t i = 1; i < node->n; i++) { + any_changed |= update_ideal(node, node->bucket[i].z, dim); + any_changed |= update_nadir(node, node->bucket[i].z, dim); + } + if (any_changed) + update_midpoint(node, dim); +} + +/** + For a non-leaf node, whose children are all leaves, (re-)compute the bounds + of each child. This function does not propagate the bounds up the tree. + See ndtree_node_propagate_bounds_up() +*/ +static void +ndtree_node_compute_bounds_of_children(NDTreeNode *node, dimension_t dim) +{ + assert(!ndtree_node_is_leaf(node)); + // Compute the bounds of the children. + for (uint8_t i = 0; i < node->n; i++) { + NDTreeNode * child = node->children + i; + ndtree_node_compute_bounds_of_leaf(child, dim); + } +} + +/** + For a non-leaf node, whose children are all leaves with correct bounds, + (re-)compute the bounds of the node. This function does not + propagate the bounds up the tree. See ndtree_node_propagate_bounds_up() +*/ +static void +ndtree_node_compute_bounds_from_children(NDTreeNode *node, dimension_t dim) +{ + assert(!ndtree_node_is_leaf(node)); + // Initialize with the bounds of the first child. + NDTreeNode * child = node->children; + memcpy(node->ideal, child->ideal, dim * sizeof(double)); + memcpy(node->nadir, child->nadir, dim * sizeof(double)); + memcpy(node->midpoint, child->midpoint, dim * sizeof(double)); + + // Examine the bounds of the other children. + bool any_changed = false; + for (uint8_t i = 1; i < node->n; i++) { + child = node->children + i; + any_changed |= update_ideal(node, child->ideal, dim); + any_changed |= update_nadir(node, child->nadir, dim); + } + if (any_changed) + update_midpoint(node, dim); +} + + +/** + Copy bucket to the next element in node->bucket. It does NOT update bounds. +*/ +static inline void +bucket_append_move(NDTreeNode * restrict node, const SolutionsList * restrict bucket) +{ + assert(node->n < node->cap); + solutions_list_copy(&node->bucket[node->n], bucket); + node->n++; +} + +/** + bucket[] has max_bucket_size + 1 capacity, so we should never go over this + capacity and there is no need to reallocate. + + return true if it succeeds, false if not enough memory. + */ +static inline bool +bucket_append(NDTreeNode * restrict node, const double * restrict z, const void * restrict x, dimension_t dim) +{ + assert(node->n < node->cap); + if (!solutions_list_init(&node->bucket[node->n], z, x, dim)) + return false; + node->n++; + return true; +} + +static size_t ndtree_assert_valid_down(const NDTreeNode * node, dimension_t dim); +static void ndtree_assert_valid_up(const NDTreeNode *node, dimension_t dim); +static void ndtree_assert_valid_tree(const NDTreeArchive * tree); + +/** + Initialize a new leaf node. +*/ +static NDTreeNode * +ndtree_node_init(NDTreeNode *node, dimension_t dim, uint8_t max_bucket_size, NDTreeNode *parent) +{ + node->parent = parent; + // Allocate a single block for ideal/nadir/midpoint. + node->ideal = malloc(3U * dim * sizeof *node->ideal); + if (node->ideal == NULL) { + // PyErr_NoMemory(); + return NULL; + } + node->nadir = node->ideal + dim; + node->midpoint = node->nadir + dim; + node->coverage = 0; + // cap is max_bucket_size + 1 to be able to detect that the bucket is full. + if (ndtree_bucket_new(node, max_bucket_size + 1) == NULL) { + free(node->ideal); + return NULL; + } + return node; +} + +/** + Allocate and initialize a new leaf node. +*/ +static inline NDTreeNode * +ndtree_node_new(dimension_t dim, uint8_t max_bucket_size, NDTreeNode *parent) +{ + NDTreeNode *node = malloc(sizeof *node); + if (node == NULL) { + // PyErr_NoMemory(); + return NULL; + } + return ndtree_node_init(node, dim, max_bucket_size, parent); +} + +static inline NDTreeNode * +ndtree_init(NDTreeArchive *tree, dimension_t dim, + uint8_t max_children, uint8_t max_bucket_size, bool allow_duplicates) +{ + if (dim < 2 || dim >= MOOCORE_HV_DIMENSION_MAX) { + // PyErr_SetString(PyExc_ValueError, "number_of_objectives must be at least 2 and less than 255"); + return NULL; + } + + if (max_children == 0) + max_children = dim + 1; // default value + + if (max_bucket_size < max_children) + max_bucket_size = (uint8_t) MAX((int) max_children, 20); // default value + + tree->dim = dim; + tree->config.max_children = max_children; + tree->config.max_bucket_size = max_bucket_size; + tree->config.allow_duplicates = allow_duplicates; + tree->x_is_null = -1; // Don't know yet. + tree->root = ndtree_node_new(dim, max_bucket_size, NULL); + tree->revision = 0; + return tree->root; +} + +static inline NDTreeArchive * +ndtree_new(dimension_t dim, uint8_t max_children, uint8_t max_bucket_size, + bool allow_duplicates) +{ + NDTreeArchive * tree = malloc(sizeof(*tree)); + if (tree == NULL) { + free(tree); + return NULL; + } + if (!ndtree_init(tree, dim, max_children, max_bucket_size, allow_duplicates)) { + free(tree); + return NULL; + } + return tree; +} + +static inline bool +ndtree_init_with_single_solution(NDTreeArchive *restrict tree, + const double * restrict z, const void * restrict x, + dimension_t dim, const NDTreeConfig * restrict config) +{ + ndtree_init(tree, dim, config->max_children, config->max_bucket_size, config->allow_duplicates); + tree->x_is_null = (x == NULL) ? 1 : 0; + if (!bucket_append(tree->root, z, x, dim)) + return false; + assert(tree->root->n == 1); + ndtree_node_set_bounds(tree->root, z, dim); + DEBUG1(ndtree_assert_valid_tree(tree)); + return true; +} + +static void +ndtree_node_free(NDTreeNode *node); + +static void +ndtree_node_free_children(NDTreeNode *node) +{ + assert(node->children != NULL); + for (size_t i = 0; i < node->n; i++) + ndtree_node_free(&node->children[i]); + free(node->children); + node->children = NULL; +} +/** + Free the memory consumed by node and all its children. + +*/ +static void +ndtree_node_free(NDTreeNode *node) +{ + if (node == NULL) + return; + + free(node->ideal); + node->ideal = NULL; + node->cap = 0; + if (ndtree_node_is_leaf(node)) { + ndtree_bucket_free(node); + return; + } + ndtree_node_free_children(node); +} + +static void +ndtree_free_nodes(NDTreeArchive *tree) +{ + ndtree_node_free(tree->root); + free(tree->root); +} + +static inline bool +ndtree_node_is_empty(const NDTreeNode *node) +{ + assert(node != NULL); + return node->n == 0; +} + +static size_t +ndtree_node_coverage(const NDTreeNode *node) +{ + if (!ndtree_node_is_leaf(node)) + return node->coverage; + + size_t total = 0; + for (size_t i = 0; i < node->n; i++) + total += node->bucket[i].x.n; + return total; +} + +static size_t +ndtree_total_size(const NDTreeArchive *tree) +{ + return ndtree_node_coverage(tree->root); +} + +// Should we store in the tree the unique counts as well? +static size_t +ndtree_node_unique_count(const NDTreeNode *node) +{ + if (!ndtree_node_is_leaf(node)) { + size_t total = 0; + for (size_t i = 0; i < node->n; i++) + total += ndtree_node_unique_count(&node->children[i]); + return total; + } + return node->n; +} + +static size_t +ndtree_unique_size(const NDTreeArchive *tree) +{ + if (!tree->config.allow_duplicates) + return ndtree_total_size(tree); + return ndtree_node_unique_count(tree->root); +} + + +static void +ndtree_node_count_leaves(const NDTreeNode * restrict node, + size_t * restrict total, size_t * restrict count) +{ + if (ndtree_node_is_leaf(node)) { + *total += node->n; + (*count)++; + return; + } + + for (size_t i = 0; i < node->n; i++) + ndtree_node_count_leaves(node->children + i, total, count); +} + +static void +ndtree_node_count_internal(const NDTreeNode * restrict node, + size_t * restrict total, size_t * restrict count) +{ + if (!ndtree_node_is_leaf(node)) { + *total += node->n; + (*count)++; + for (size_t i = 0; i < node->n; i++) + ndtree_node_count_internal(node->children + i, total, count); + } +} + +static size_t +ndtree_node_max_height(const NDTreeNode *node) +{ + if (!ndtree_node_is_leaf(node)) { + size_t max_h = 0; + assert(node->n > 0); + for (size_t i = 0; i < node->n; i++) + max_h = MAX(max_h, ndtree_node_max_height(&node->children[i])); + return max_h + 1; + } + return 1; +} + +static size_t +ndtree_node_min_height(const NDTreeNode *node) +{ + if (!ndtree_node_is_leaf(node)) { + size_t min_h = SIZE_MAX; + assert(node->n > 0); + for (size_t i = 0; i < node->n; i++) + min_h = MIN(min_h, ndtree_node_min_height(&node->children[i])); + return min_h + 1; + } + return 1; +} + +static inline void +ndtree_print_stats(FILE * stream, const NDTreeArchive *tree) +{ + size_t total_size = ndtree_total_size(tree); + size_t unique_size = ndtree_unique_size(tree); + fprintf(stream, "# Min height = %zu\n", ndtree_node_min_height(tree->root)); + fprintf(stream, "# Max height = %zu\n", ndtree_node_max_height(tree->root)); + fprintf(stream, "# Total size = %zu\n", total_size); + fprintf(stream, "# Unique size = %zu\n", unique_size); + size_t total = 0, count = 0; + ndtree_node_count_leaves(tree->root, &total, &count); + assert(total == unique_size); + fprintf(stream, "# Number of leaves = %zu\n", count); + fprintf(stream, "# Occupancy = %g%%\n", + count > 0 ? (100. * (double)total / (double)(count * tree->config.max_bucket_size)) : 0); + total = 0; + count = 0; + ndtree_node_count_internal(tree->root, &total, &count); + fprintf(stream, "# Total children = %zu\n", total); + fprintf(stream, "# Number of internal nodes = %zu\n", count); + fprintf(stream, "# Occupancy = %g%%\n", + count > 0 ? (100. * (double)total / (double)(count * tree->config.max_children)) : 0); +} + +static inline void +ndtree_free(NDTreeArchive *tree) +{ + if (tree == NULL) + return; + ndtree_free_nodes(tree); + free(tree); +} + +static inline bool +ndtree_has_x_values(const NDTreeArchive *t) +{ + // -1 or 1 means that there are not x values to retrieve. + return t->x_is_null == 0; +} + +static void +ndtree_go_up_reducing_size(NDTreeNode *node, uint32_t removed) +{ + // Iterative instead of recursive because it is faster and helps inlining. + node = node->parent; + while (node) { + ASSUME(node->coverage >= removed); + node->coverage -= removed; + node = node->parent; + } +} + +static void +ndtree_go_up_increasing_size(NDTreeNode *node, uint32_t added) +{ + // Iterative instead of recursive because it is faster and helps inlining. + node = node->parent; + while (node) { + node->coverage += added; + node = node->parent; + } +} + + +static bool +ndtree_z_is_inside_box(const NDTreeNode *node, const double * restrict z, dimension_t dim) +{ + ASSUME(dim >= 2); + // FIXME: splitting the loop may help vectorization. + for (dimension_t i = 0; i < dim; i++) { + if (z[i] < node->ideal[i] || z[i] > node->nadir[i]) + return false; + } + return true; +} + +/** + If z is already in one of the buckets, append to the corresponding solution + list. Otherwise, reject it. + */ +static inline int +ndtree_node_bucket_append_if_present(NDTreeNode * restrict node, + const double * restrict z, const void * restrict x, + dimension_t dim) +{ + assert(ndtree_node_is_leaf(node)); + for (int i = 0; i < node->n; i++) { + if (all_equal_double(node->bucket[i].z, z, dim)) { + if (!solutions_list_append(&node->bucket[i], x)) + return ARCHIVE_INSERT_MEMORY_ERROR; + return ARCHIVE_INSERT_DUPLICATED; + } + } + return ARCHIVE_INSERT_REJECTED; +} + +/** + Append a new bucket (z, x) to node. The caller must test wrong_x_is_null(). + + This function does NOT update the bounds. The caller must handle that. +*/ +static int +ndtree_node_bucket_append(NDTreeNode * restrict node, + const double * restrict z, const void * restrict x, + dimension_t dim) +{ + assert(ndtree_node_is_leaf(node)); + assert(ndtree_node_bucket_append_if_present(node, z, x, dim) == ARCHIVE_INSERT_REJECTED); + if (!bucket_append(node, z, x, dim)) + return ARCHIVE_INSERT_MEMORY_ERROR; + return ARCHIVE_INSERT_ACCEPTED; +} + +static const NDTreeNode * +ndtree_find_node_of_vector(const NDTreeNode * restrict node, + const double * restrict z, dimension_t dim, + uint8_t * restrict bucket_index) +{ + ASSUME(dim >= 2); + if (ndtree_node_is_leaf(node)) { + for (uint8_t i = 0; i < node->n; i++) { + if (all_equal_double(node->bucket[i].z, z, dim)) { + *bucket_index = i; + return node; + } + } + return NULL; + } + for (size_t i = 0; i < node->n; i++) { + if (ndtree_z_is_inside_box(&node->children[i], z, dim)) { + const NDTreeNode * res = ndtree_find_node_of_vector(&node->children[i], z, dim, bucket_index); + if (res) + return res; + } + } + return NULL; +} + +static inline VoidList * +ndtree_find_solutions_of_vector(const NDTreeArchive * restrict tree, + const double * restrict z) +{ + uint8_t bucket_index; + const NDTreeNode *node = ndtree_find_node_of_vector( + tree->root, z, tree->dim, &bucket_index); + if (!node) + return NULL; + return &node->bucket[bucket_index].x; +} + +static inline bool +ndtree_find_exact_vector(const NDTreeArchive * restrict tree, + const double * restrict z) +{ + uint8_t bucket_index; + return ndtree_find_node_of_vector(tree->root, z, tree->dim, &bucket_index) != NULL; +} + +static bool +ndtree_node_dominates(const NDTreeNode * restrict node, + const double * restrict z, dimension_t dim) +{ + if (dominates(node->nadir, z, dim)) + return true; + if (weakly_dominates(z, node->ideal, dim)) + return false; + + if (dominates(node->ideal, z, dim) || dominates(z, node->nadir, dim)) { + if (ndtree_node_is_leaf(node)) { + for (size_t i = 0; i < node->n; i++) { + const double *bucket_z = node->bucket[i].z; + if (dominates(bucket_z, z, dim)) + return true; + if (weakly_dominates(z, bucket_z, dim)) + return false; + } + } else { + for (size_t i = 0; i < node->n; i++) { + if (ndtree_node_dominates(&node->children[i], z, dim)) + return true; + } + } + } + return false; +} + +static inline bool +ndtree_dominates(const NDTreeArchive * restrict tree, const double * restrict z) +{ + return !ndtree_node_is_empty(tree->root) && ndtree_node_dominates(tree->root, z, tree->dim); +} + +/** + Returns true if z dominates every point in the tree, false otherwise or if z + exists in the tree or the tree is empty. + +*/ +static inline bool +ndtree_dominated_by(const NDTreeArchive * restrict tree, const double * restrict z) +{ + if (ndtree_node_is_empty(tree->root)) + return false; + + const dimension_t dim = tree->dim; + const double * ideal = tree->root->ideal; + + /* The ideal at the root is tight as long as we never erase a nondominated + solution. Further down the tree a node's ideal may need tightening, as + an element leading to the ideal bound value may be dominated and + removed, but the dominator put in a different subtree, so the node with + the deletion could have its ideal now over-estimated. The root does not + have such a risk. */ + if (!weakly_dominates(z, ideal, dim)) + return false; + + return !tree->config.allow_duplicates + || !all_equal_double(z, ideal, dim) + || !ndtree_find_exact_vector(tree, z); +} + +static void +ndtree_remove_child_at(NDTreeNode * restrict parent, uint8_t index) +{ + NDTreeNode * removed _attr_maybe_unused = &parent->children[index]; + assert(ndtree_node_is_leaf(removed)); + // The child must be already empty. + assert(removed->bucket == NULL && removed->children == NULL && removed->ideal == NULL); + + parent->n--; +#if 0 + for (uint8_t i = index; i < parent->n; i++) { + parent->children[i] = parent->children[i+1]; + NDTreeNode * child = &parent->children[i]; + // We have to relink the grand children to their new parent. + if (!ndtree_node_is_leaf(child)) { + for (uint8_t k = 0; k < child->n; k++) { + child->children[k].parent = child; + } + } + } +#else + if (index < parent->n) { + // The order of the children is irrelevant, so overwrite with the last one. + parent->children[index] = parent->children[parent->n]; + NDTreeNode * child = &parent->children[index]; + // We have to relink the grand children to their new parent. + if (!ndtree_node_is_leaf(child)) { + for (uint8_t k = 0; k < child->n; k++) { + child->children[k].parent = child; + } + } + } +#endif +} + +/** + Changes the node type after prunning some children. +*/ +static NDTreeNode * +ndtree_remove_node_after_pruning(NDTreeNode *node, uint8_t max_bucket_size) +{ + if (node->n == 1) { // Replace tree with the only child. + NDTreeNode *child = node->children; + free(node->ideal); + child->parent = node->parent; + assert(node->bucket == NULL); + memcpy(node, child, sizeof(*node)); + free(child); + // Update the children's parents. + if (!ndtree_node_is_leaf(node)) { + for (uint8_t i = 0; i < node->n; i++) + node->children[i].parent = node; + } + assert(node->bucket == NULL || node->children == NULL); + } else if (node->n == 0) { // Becomes an empty leaf node. + node->coverage = 0; + ndtree_node_free_children(node); + assert(node->bucket == NULL); + assert(node->ideal != NULL); + if (node->parent != NULL) { + free(node->ideal); + node->ideal = NULL; + } + // If this is the root, we allocate an empty bucket. Otherwise, this + // node will be removed by ndtree_remove_child_at() later. + if (node->parent == NULL + && !ndtree_bucket_new(node, max_bucket_size + 1)) + return NULL; + } + return node; +} + +static NDTreeNode * +ndtree_closest_child(NDTreeNode *children, uint8_t n, const double * z, dimension_t dim) +{ + ASSUME(n < 255); + uint8_t which_inside[255]; + uint8_t num_inside = 0; + for (uint8_t i = 0; i < n; i++) { + NDTreeNode *child = &children[i]; + assert(child->n > 0); + if (ndtree_z_is_inside_box(child, z, dim)) { + which_inside[num_inside] = i; + num_inside++; + } + } + + if (num_inside > 0) { + uint8_t i = 0; + NDTreeNode * closest_child = &children[which_inside[i]]; + if (num_inside > 1) { + double closest_distance = squared_distance(closest_child->midpoint, z, dim); + for (i++; i < num_inside; i++) { + NDTreeNode *child = &children[which_inside[i]]; + double distance = squared_distance(child->midpoint, z, dim); + if (distance < closest_distance) { + closest_distance = distance; + closest_child = child; + } + } + } + return closest_child; + } + + // z is not inside any box, so we have to calculate all distances. + NDTreeNode * closest_child = &children[0]; + double closest_distance = squared_distance(closest_child->midpoint, z, dim); + for (uint8_t i = 1; i < n; i++) { + NDTreeNode *child = &children[i]; + double distance = squared_distance(child->midpoint, z, dim); + if (distance < closest_distance) { + closest_distance = distance; + closest_child = child; + } + } + return closest_child; +} + + + +/** + Splits a leaf node by converting it to an internal node and distributing the + bucket elements among newly created children. + + Complexity O(max(n_children * n_children, max_bucket_size) * max_bucket_size + ?) + */ +static int +ndtree_node_split(NDTreeNode *node, dimension_t dim, + uint8_t max_bucket_size, uint8_t max_children) +{ + ASSUME(node->n < 255); + /* At this point, the bounds may be wrong because we inserted a new z and + it triggered the split, but we did not update the bounds. */ + uint8_t bucket_n = node->n; + ASSUME(bucket_n >= max_children); + assert(ndtree_node_is_leaf(node)); + ASSUME(node->coverage == 0); + for (uint8_t i = 0; i < bucket_n; i++) + node->coverage += node->bucket[i].x.n; + ASSUME(node->coverage > 0); + + // distance[i]: sum of distances of solution i to all other solutions. + double *distance_sum = calloc(bucket_n + bucket_n * bucket_n, sizeof(*distance_sum)); + double *distance_matrix = distance_sum + bucket_n; + NDTreeNode * children = calloc(max_children, sizeof *children); + if (distance_sum == NULL || children == NULL) { + free(distance_sum); + free(children); + return ARCHIVE_INSERT_MEMORY_ERROR; + + } + const SolutionsList *bucket = node->bucket; + /* FIXME: We could probably vectorize this loop by copying the midpoints to + a temporary buffer, then computing all distances at once. But is the + copy worth the potential speed-up? */ + for (unsigned i = 0; i < bucket_n; i++) { + for (unsigned j = i + 1; j < bucket_n; j++) { + double d = squared_distance(bucket[i].z, bucket[j].z, dim); + distance_matrix[i * bucket_n + j] = d; + distance_matrix[j * bucket_n + i] = d; + distance_sum[i] += d; + distance_sum[j] += d; + } + } + + NDTreeNode * child = &children[0]; + if (!ndtree_node_init(child, dim, max_bucket_size, node)) { + free(distance_sum); + free(children); + return ARCHIVE_INSERT_MEMORY_ERROR; + } + uint8_t seed_rep = (uint8_t) which_max(distance_sum, bucket_n); + ASSUME(seed_rep < bucket_n); + // We do not update bounds until the end of this function, when we know the + // child assigned to each bucket. + bucket_append_move(child, &bucket[seed_rep]); + + // Store the buckets assigned to children and the ones not yet assigned. + uint8_t bucket_of_child[255]; + // We store all buckets indexes, then swap to the front the ones assigned + // to a child. + for (uint8_t i = 0; i < bucket_n; i++) + bucket_of_child[i] = i; + bucket_of_child[0] = seed_rep; + bucket_of_child[seed_rep] = 0; + + /* FIXME: It may be faster to find the two buckets closest to each other, + then put them together, then treat them as a single bucket, and keep + doing that until n_buckets == max_children, then simply assign each + (virtual) bucket to each child. Then update bounds in one go. */ + for (unsigned i = 1; i < max_children; i++) { + double max_distance = -1; + size_t seed_rep = SIZE_MAX; + for (unsigned k = i; k < bucket_n; k++) { + uint8_t bucket_k = bucket_of_child[k]; + double accumulator = 0.0; + for (unsigned j = 0; j < i; j++) + accumulator += distance_matrix[bucket_k * bucket_n + bucket_of_child[j]]; + + if (accumulator > max_distance) { + max_distance = accumulator; + seed_rep = k; + } + } + ASSUME(seed_rep < SIZE_MAX); // There must be one not added yet. + child = &children[i]; + if (!ndtree_node_init(child, dim, max_bucket_size, node)) { + free(distance_sum); + free(children); + return ARCHIVE_INSERT_MEMORY_ERROR; + } + + bucket_append_move(child, &bucket[bucket_of_child[seed_rep]]); + if (i != seed_rep) + SWAP(bucket_of_child[i], bucket_of_child[seed_rep]); + } + /* At this point all children have one bucket, given by + bucket_of_child[i] when i < max_children, so we can re-use the + previously calculated distances. */ + if (max_children < bucket_n) { + uint8_t bucket_k = bucket_of_child[max_children]; + uint8_t min_child = 0; + double min_dist = distance_matrix[min_child * bucket_n + bucket_k]; + for (uint8_t j = 1; j < max_children; j++) { + double dist_j = distance_matrix[bucket_of_child[j] * bucket_n + bucket_k]; + if (dist_j < min_dist) { + min_child = j; + min_dist = dist_j; + } + } + child = &children[min_child]; + bucket_append_move(child, &bucket[bucket_k]); + // We do not need to SWAP. + } + + free(distance_sum); + node->children = children; + node->n = max_children; + node->cap = max_children; + ndtree_node_compute_bounds_of_children(node, dim); + if (max_children < bucket_n - 1) { + /* We are not done yet! The are still buckets not assigned to children, + but now we need to update bounds every time we add a new bucket. */ + + /* Now some children have two buckets, so we have to rely on + ndtree_closest_child(), which is quite wasteful for children that + have only one. */ + for (uint8_t k = max_children + 1; k < bucket_n; k++) { + uint8_t bucket_k = bucket_of_child[k]; + const double *z = bucket[bucket_k].z; + NDTreeNode *target = ndtree_closest_child(children, max_children, z, dim); + bucket_append_move(target, &bucket[bucket_k]); + bool ideal_changed = true, nadir_changed = true; + ndtree_node_update_bounds(target, z, dim, &ideal_changed, &nadir_changed); + } + } + ndtree_node_compute_bounds_from_children(node, dim); + ndtree_node_propagate_bounds_up(node, dim); + // FIXME: Ideally, we would reuse the memory. + free(node->bucket); + node->bucket = NULL; + DEBUG1(ndtree_assert_valid_up(node, dim)); + DEBUG1(ndtree_assert_valid_down(node, dim)); + return ARCHIVE_INSERT_ACCEPTED; +} + +/** + Insert entry in node. If node is not a leaf node, try again with the closest + child and so on. Once it is inserted in a leaf node, maybe split it if it + has grown too large. + +*/ +static int +ndtree_node_insert(NDTreeArchive * restrict tree, NDTreeNode * restrict node, + const double * restrict z, const void * restrict x) +{ + const dimension_t dim = tree->dim; + const uint8_t max_bucket_size = tree->config.max_bucket_size; + while (!ndtree_node_is_leaf(node)) { + node->coverage++; + node = ndtree_closest_child(node->children, node->n, z, dim); + } + ASSUME(tree->x_is_null == 1 || tree->x_is_null == 0); + int res = wrong_x_is_null(&tree->x_is_null, x); + if (res < 0) + return res; + + res = ndtree_node_bucket_append(node, z, x, dim); + assert(res == ARCHIVE_INSERT_ACCEPTED); + ASSUME(ndtree_node_is_leaf(node)); + // Only update the bounds if we do not split the node. + if (node->n == 1) { + // The node was empty before z + // This cannot happen in the current code, because we never add to an empty child. + assert(false); + ndtree_node_set_bounds(node, z, dim); + ndtree_node_propagate_bounds_up(node, dim); + DEBUG2(ndtree_assert_valid_tree(tree)); + return res; + } else if (node->n <= max_bucket_size) { + ndtree_node_update_bounds_up(node, z, dim); + DEBUG2(ndtree_assert_valid_tree(tree)); + return res; + } + return ndtree_node_split(node, dim, max_bucket_size, tree->config.max_children); +} + +/** + Clear the subtree that has node as a parent and convert node to an empty + leaf node. If node is the root of the tree, the tree is reset to its empty + state. + + This does not free node nor its bucket, but it does free all solutions + lists. +*/ +static bool +ndtree_node_clear_to_empty_leaf(NDTreeNode *node, uint8_t max_bucket_size) +{ + // FIXME: This function should record what is being removed, so we can + // return it. + if (ndtree_node_is_leaf(node)) { + /* An empty leaf has ->n=0, but ->bucket is already initialized to + ->cap size and each ->bucket[i].x.n = 0 with ->bucket[i].x.list == NULL. */ + assert(node->bucket != NULL); + /* FIXME: The solutions lists may be empty if we moved these buckets + elsewhere. How can we detect that? */ + for (int i = 0; i < node->n; i++) + solutions_list_free(&node->bucket[i]); + + } else { + ndtree_node_free_children(node); + if (!ndtree_bucket_new(node, max_bucket_size + 1)) + return false; + } + node->n = 0; + node->coverage = 0; + return true; +} + +static uint32_t +ndtree_append_subtree_to_list(FlexBucket ** restrict list, NDTreeNode * restrict node) +{ + if (ndtree_node_is_leaf(node)) + return (uint32_t) flex_bucket_append_move(list, node->bucket, node->n); + + uint32_t total = 0; + for (unsigned i = 0; i < node->n && list; i++) + total += ndtree_append_subtree_to_list(list, &node->children[i]); + return total; +} + +static int +ndtree_add_duplicate(signed char x_is_null, NDTreeNode * restrict node, + uint8_t bucket_index, const void * restrict x) +{ + ASSUME(x_is_null == 1 || x_is_null == 0); + int res = wrong_x_is_null(&x_is_null, x); + if (res < 0) + return res; + if (!solutions_list_append(&node->bucket[bucket_index], x)) + return ARCHIVE_INSERT_MEMORY_ERROR; + ndtree_go_up_increasing_size(node, 1); + return ARCHIVE_INSERT_DUPLICATED; +} + +static int +ndtree_update_node(NDTreeArchive * restrict tree, NDTreeNode * restrict node, + const double * restrict z, const void * restrict x, + bool check, bool allow_duplicates, FlexBucket **displaced) +{ + const dimension_t dim = tree->dim; + if (check && weakly_dominates(node->nadir, z, dim)) { + // Maybe there is one solution and it is a duplicate. + if (allow_duplicates && ndtree_node_is_leaf(node) && node->n == 1 + && all_equal_double(z, node->bucket[0].z, dim)) { + return ndtree_add_duplicate(tree->x_is_null, node, 0, x); + } + return ARCHIVE_INSERT_REJECTED; + } + + bool clears_subtree = allow_duplicates + ? dominates(z, node->ideal, dim) + : weakly_dominates(z, node->ideal, dim); + if (clears_subtree) { + uint32_t removed = ndtree_append_subtree_to_list(displaced, node); + if (!*displaced) + return ARCHIVE_INSERT_MEMORY_ERROR; + + if (node->parent != NULL) { + ndtree_go_up_reducing_size(node, removed); + // Free bucket/children and subtrees. Mark the node as + // uninitialized. The caller will call ndtree_remove_child_at() to + // remove it from node->parent->children[] + ndtree_node_free(node); + node->coverage = 0; + node->n = 0; + DEBUG2(ndtree_assert_valid_tree(tree)); + } else { + // This completely clears the tree up to an empty root leaf. + /* FIXME: Why not reuse the subtree for inserting the new entry OR + detach the node from the tree and add it to displaced? */ + if (!ndtree_node_clear_to_empty_leaf(node, tree->config.max_bucket_size)) { + return ARCHIVE_INSERT_MEMORY_ERROR; + } + DEBUG2(ndtree_assert_valid_tree(tree)); + } + return ARCHIVE_INSERT_ACCEPTED; + } + + DEBUG2(ndtree_assert_valid_tree(tree)); + bool z_wdom_nadir = weakly_dominates(z, node->nadir, dim); + bool ideal_wdom_z = weakly_dominates(node->ideal, z, dim); + if (!ideal_wdom_z && !z_wdom_nadir) + return ARCHIVE_INSERT_ACCEPTED; + + // If !ideal_wdom_z, then nothing in this node can weakly dominate z, so do + // not check. + check = check && ideal_wdom_z; + if (ndtree_node_is_leaf(node)) { + if (z_wdom_nadir) { + uint32_t removed = 0; + for (uint8_t i = 0; i < node->n; ) { + SolutionsList *bucket = &node->bucket[i]; + if (weakly_dominates(z, bucket->z, dim)) { + if (all_equal_double(z, bucket->z, dim)) { + if (allow_duplicates) + return ndtree_add_duplicate(tree->x_is_null, node, i, x); + // equal not allowed. + return ARCHIVE_INSERT_REJECTED; + } + // z dominates bucket_z + check = false; // No other bucket can dominate z. + removed += bucket->x.n; + flex_bucket_append_move(displaced, bucket, 1); + if (!*displaced) + return ARCHIVE_INSERT_MEMORY_ERROR; + node->n--; + if (i != node->n) + SWAP(node->bucket[i], node->bucket[node->n]); + // Do not increment i. + } else if (check && weakly_dominates(bucket->z, z, dim)) { + return ARCHIVE_INSERT_REJECTED; + } else { + i++; + } + } + if (removed > 0) { + ndtree_go_up_reducing_size(node, removed); + if (node->n == 0 && node->parent != NULL) { + /* Since node->n == 0, the ndtree_node_free() will not call + solutions_list_free(), which is what we want because they + are now in *displaced. */ + ndtree_node_free(node); + } + } + } else if (check) { + // If !z_wdom_nadir then z cannot dominated anything in this leaf, + // but it could be dominated. + for (uint8_t i = 0; i < node->n; i++) { + if (weakly_dominates(node->bucket[i].z, z, dim)) + return ARCHIVE_INSERT_REJECTED; + } + } + } else { // NOT a leaf node. + uint8_t index = 0; + while (index < node->n) { + int res = ndtree_update_node(tree, &node->children[index], z, x, + check, allow_duplicates, displaced); + /* We may have a slightly invalid tree here because we may have + removed all children, so coverage = 0 but n = 1. That is, this + looks like a leaf but it is just empty. */ + if (res != ARCHIVE_INSERT_ACCEPTED) + return res; + + if (ndtree_node_is_empty(&node->children[index])) { + ndtree_remove_child_at(node, index); + DEBUG2(ndtree_assert_valid_tree(tree)); + } else { + index++; + assert(index < 255); + DEBUG2(ndtree_assert_valid_tree(tree)); + } + } + if (ndtree_remove_node_after_pruning(node, tree->config.max_bucket_size) == NULL) + return ARCHIVE_INSERT_MEMORY_ERROR; + /* At this point, we may have have converted node to a (possibly empty) + leaf node. */ + DEBUG2(ndtree_assert_valid_tree(tree)); + } + return ARCHIVE_INSERT_ACCEPTED; +} + +static int +ndtree_add_impl(NDTreeArchive * restrict tree, + const double * restrict z, const void * restrict x, + bool check, bool allow_duplicates, FlexBucket **displaced) +{ + const dimension_t dim = tree->dim; + DEBUG1(ndtree_assert_valid_tree(tree)); + + if (ndtree_node_is_empty(tree->root)) { + if (tree->x_is_null == -1) + tree->x_is_null = (x == NULL); + int res = ndtree_node_bucket_append(tree->root, z, x, dim); + assert(res < 0 || res == ARCHIVE_INSERT_ACCEPTED); + assert(tree->root->n == 1); + ndtree_node_set_bounds(tree->root, z, dim); + DEBUG1(ndtree_assert_valid_tree(tree)); + // At this point we have modified the tree. + tree->revision++; + return res; + } + + int res = ndtree_update_node(tree, tree->root, z, x, check, allow_duplicates, displaced); + if (res != ARCHIVE_INSERT_ACCEPTED) + return res; + // At this point we have modified the tree. + tree->revision++; + // It is empty only if we have removed everything. + if (ndtree_node_is_empty(tree->root)) { + res = wrong_x_is_null(&tree->x_is_null, x); + if (res < 0) + return res; + res = ndtree_node_bucket_append(tree->root, z, x, dim); + assert(tree->root->n == 1); + ndtree_node_set_bounds(tree->root, z, dim); + DEBUG1(ndtree_assert_valid_tree(tree)); + return res; + } + // FIXME: Now we have to traverse the tree again to see where to insert + // the node. Why not try to insert it in update_node() ? Or at least + // return which subtree is the most promising and start from that. + DEBUG1(ndtree_assert_valid_tree(tree)); + res = ndtree_node_insert(tree, tree->root, z, x); + DEBUG1(ndtree_assert_valid_tree(tree)); + return res; +} + +/** + Insert new solution (z,x) and get the displaced solutions. + + *displaced must be NULL or already properly initialized. + + Returns one of the values of archive_insert_result_t. +*/ +static inline int +ndtree_add(NDTreeArchive * restrict tree, + const double * restrict z, const void * restrict x, + bool check, FlexBucket **displaced) +{ + return ndtree_add_impl(tree, z, x, check, tree->config.allow_duplicates, displaced); +} + +static inline int +ndtree_add_discard(NDTreeArchive * restrict tree, + const double * restrict z, const void * restrict x) +{ + // FIXME: Avoid using displaced at all. + FlexBucket *displaced = flex_bucket_new(4); + int res = ndtree_add_impl(tree, z, x, /*check=*/true, tree->config.allow_duplicates, &displaced); + flex_bucket_free(displaced); + return res; +} + + +static int +ndtree_add_displaced_helper(NDTreeArchive * restrict tree, + const double * restrict z, FlexBucket **displaced) +{ + const void * x = NULL; + int res = ndtree_add_impl(tree, z, x, /*check=*/false, /*allow_duplicates=*/false, displaced); + assert(res == ARCHIVE_INSERT_ACCEPTED); + return res; +} + +/** + Insert incoming solutions into tree and return displaced nodes in subtree. + It does not allocate any new memory! +*/ +static inline int +ndtree_insert_displaced(NDTreeArchive *tree, FlexBucket **displaced_p, bool *all_displaced) +{ + assert(*displaced_p != NULL); + if (*displaced_p == NULL) + return ARCHIVE_INSERT_MEMORY_ERROR; + + FlexBucket * incoming = *displaced_p; + FlexBucket * displaced = NULL; + // FIXME: There must be a better way than adding the points one by one! + const bool tree_was_empty = ndtree_node_is_empty(tree->root); + _attr_maybe_unused size_t prev_tree_unique; + DEBUG1(prev_tree_unique = ndtree_unique_size(tree)); + + const bool incoming_x_is_null = (incoming->solutions[0].x.list == NULL); + // Failing this assert is a programming error and should never happen. + assert(tree->x_is_null == -1 || tree->x_is_null == incoming_x_is_null); + tree->x_is_null = 1; // Disable temporarily + for (size_t i = 0; i < incoming->n_unique; i++) { + // We should not have empty solutions. + assert(incoming->solutions[i].x.n > 0); + const double * z = incoming->solutions[i].z; + // FIXME: We should return the node where z is inserted and the bucket + // index, so we can avoid the ndtree_find_node_of_vector() call below. + // FIXME: We should also not allocate a copy of z in this case, so we + // do not need to free it below. + int res = ndtree_add_displaced_helper(tree, z, &displaced); + if (res < 0) + return res; + assert(res == ARCHIVE_INSERT_ACCEPTED); + + if (incoming_x_is_null && incoming->solutions[i].x.n == 1) { + free((void*)incoming->solutions[i].z); + continue; // We are done with this solutions[i]. + } + + /* Instead of inserting duplicates, find the just created SolutionsList + in the tree and modify it. */ + uint8_t bucket_index = -1; + // const_cast so we can update z_node. + NDTreeNode * z_node = (NDTreeNode *) ndtree_find_node_of_vector( + tree->root, z, tree->dim, &bucket_index); + SolutionsList * z_bucket = &z_node->bucket[bucket_index]; + free((void*)z_bucket->z); // allocated by ndtree_add_displaced_helper() + assert(z_bucket->x.list == NULL); // Did we allocate this list by mistake? + if (incoming_x_is_null) { + // We have duplicates but no x values, just copy z and the counter. + z_bucket->z = incoming->solutions[i].z; + z_bucket->x.n = incoming->solutions[i].x.n; + } else { + // We have duplicates and x values, just copy the whole thing. + solutions_list_copy(z_bucket, &incoming->solutions[i]); + } + // n - 1 because we already counted 1 when inserting z. + ndtree_go_up_increasing_size(z_node, z_bucket->x.n - 1); + } + tree->x_is_null = incoming_x_is_null; // Reset. + /* All displaced points will be inserted, so if the size of the tree is the + same as the number of displaced, all previous points in the tree have + been displaced. */ + assert(ndtree_unique_size(tree) >= incoming->n_unique); + assert(ndtree_unique_size(tree) > 0); + *all_displaced = !tree_was_empty && (ndtree_unique_size(tree) == incoming->n_unique); + assert(!*all_displaced || (displaced && prev_tree_unique == displaced->n_unique)); + assert(tree_was_empty || !displaced || displaced->n_unique <= prev_tree_unique); + + free(incoming); + *displaced_p = displaced; + DEBUG1(ndtree_assert_valid_tree(tree)); + return ARCHIVE_INSERT_ACCEPTED; +} + +static inline bool +ndtree_init_with_displaced(NDTreeArchive *tree, FlexBucket *displaced, + dimension_t dim, const NDTreeConfig * config) +{ + ndtree_init(tree, dim, config->max_children, config->max_bucket_size, config->allow_duplicates); + bool all_displaced; + int res = ndtree_insert_displaced(tree, &displaced, &all_displaced); + DEBUG1(ndtree_assert_valid_tree(tree)); + assert(res != ARCHIVE_INSERT_REJECTED && res != ARCHIVE_INSERT_DUPLICATED); + return res == ARCHIVE_INSERT_ACCEPTED; +} + +static inline size_t +ndtree_node_get_unique_vectors(const NDTreeNode *node, const double *** z_list, + dimension_t dim) +{ + if (ndtree_node_is_leaf(node)) { + for (size_t i = 0; i < node->n; i++) { + assert(node->bucket[i].z != NULL); + **z_list = node->bucket[i].z; + (*z_list)++; + } + return node->n; + } + size_t total = 0; + for (size_t i = 0; i < node->n; i++) + total += ndtree_node_get_unique_vectors(&node->children[i], z_list, dim); + return total; +} + +/** + z_list must be an array of pointers to 'const double' of length treap_unique_size(t). + + That is, z_list does not contain the actual data but just the pointers + stored in the tree. Since the tree does not stored the data either, the + data may get deleted by something else if not used or copied immediately. +*/ +static inline size_t +ndtree_get_unique_vectors(const NDTreeArchive *tree, const double ** z_list) +{ + return ndtree_node_get_unique_vectors(tree->root, &z_list, tree->dim); +} + + +static inline void +ndtree_node_get_x_values(const NDTreeNode *node, const void *** x_list) +{ + if (ndtree_node_is_leaf(node)) { // FIXME: Why check leafs first? + for (size_t i = 0; i < node->n; i++) + solutions_list_get_x_values(&node->bucket[i], x_list); + return; + } + + for (size_t i = 0; i < node->n; i++) + ndtree_node_get_x_values(&node->children[i], x_list); + +} + +static inline void +ndtree_get_x_values(const NDTreeArchive *arch, const void ** x_list) +{ + if (!ndtree_has_x_values(arch)) + return; + ndtree_node_get_x_values(arch->root, &x_list); +} + +static inline void +ndtree_node_get_contents(const NDTreeNode *node, + double ** z_list, const void *** x_list, + dimension_t dim) +{ + if (ndtree_node_is_leaf(node)) { // FIXME: Why check leafs first? + for (size_t i = 0; i < node->n; i++) + solutions_list_get_contents(&node->bucket[i], z_list, x_list, dim); + return; + } + + for (size_t i = 0; i < node->n; i++) + ndtree_node_get_contents(&node->children[i], z_list, x_list, dim); +} + +/** + z_list must be an array of double allocated with sufficient space. Vectors + are copied to this array. + + x_list must be of array of void *. Only the pointers are copied. +*/ +static inline void +ndtree_get_contents(const NDTreeArchive * restrict tree, double * z_list, + const void ** x_list) +{ + if (!ndtree_node_is_empty(tree->root)) { + ndtree_node_get_contents(tree->root, &z_list, + ndtree_has_x_values(tree) ? &x_list : NULL, + tree->dim); + } +} + + +static size_t +ndtree_assert_valid_down(const NDTreeNode * node, dimension_t dim) +{ + size_t total = 0; + if (ndtree_node_is_leaf(node)) { + for (size_t i = 0; i < node->n; i++) { + total += node->bucket[i].x.n; + for (dimension_t d = 0; d < dim; d++) { + assert(node->ideal[d] <= node->bucket[i].z[d]); + assert(node->nadir[d] >= node->bucket[i].z[d]); + } + } + return total; + } + for (size_t i = 0; i < node->n; i++) { + assert(node->children[i].parent == node); + total += ndtree_assert_valid_down(&node->children[i], dim); + for (dimension_t d = 0; d < dim; d++) { + assert(node->ideal[d] <= node->children[i].ideal[d]); + assert(node->nadir[d] >= node->children[i].nadir[d]); + } + } + assert(total == node->coverage); + return total; +} + +static void +ndtree_assert_valid_tree(const NDTreeArchive * tree) +{ + size_t total = ndtree_assert_valid_down(tree->root, tree->dim); + size_t unique_size = ndtree_unique_size(tree); + assert (total >= unique_size); + if (total == 0) + return; + + assert(tree->x_is_null != -1); + double * points = malloc(tree->dim * unique_size * sizeof(*points)); + const double ** z_list = malloc(unique_size * sizeof(*z_list)); + _attr_maybe_unused size_t new_unique = ndtree_get_unique_vectors(tree, z_list); + assert(unique_size == new_unique); + for (size_t i = 0; i < unique_size; i++) { + for (size_t d = 0; d < tree->dim; d++) { + assert(z_list[i] != NULL); + points[i * tree->dim + d] = z_list[i][d]; + } + } + const int * minmax = minmax_minimise(tree->dim); + _attr_maybe_unused size_t pos = + find_dominated_point_(points, unique_size, tree->dim, + /* keep_weakly=*/false, AGREE_NONE, minmax); + free((void*)minmax); + assert(pos >= unique_size); + free(points); + free(z_list); +} + +static void +ndtree_assert_valid_up(const NDTreeNode *node, dimension_t dim) +{ + while (node->parent != NULL) { + assert(!ndtree_node_is_leaf(node->parent)); + node = node->parent; + for (size_t i = 0; i < node->n; i++) { + assert(node->children[i].parent == node); + for (dimension_t d = 0; d < dim; d++) { + assert(node->ideal[d] <= node->children[i].ideal[d]); + assert(node->nadir[d] >= node->children[i].nadir[d]); + } + } + } +} + +#include "nd_tree_iterator.h" + +#endif // ND_TREE_ARCHIVE_H diff --git a/c/nd_tree_iterator.h b/c/nd_tree_iterator.h new file mode 100644 index 000000000..553121dd1 --- /dev/null +++ b/c/nd_tree_iterator.h @@ -0,0 +1,119 @@ +#ifndef NDTREE_ITERATOR_H +#define NDTREE_ITERATOR_H + +typedef struct NDTreeIterator { + const NDTreeNode *current_node; + size_t bucket_index; + size_t solution_index; + // To detect modifications of the tree while iterating. + uint64_t revision; + const NDTreeArchive *arch; +} NDTreeIterator; + +static void +ndtree_iter_init(NDTreeIterator * it, const NDTreeArchive *tree) +{ + it->bucket_index = 0; + it->solution_index = 0; + it->revision = tree->revision; + it->arch = tree; + // Find first leaf. + const NDTreeNode *node = tree->root; + if (node != NULL) { + while (!ndtree_node_is_leaf(node)) + node = &node->children[0]; + } + it->current_node = node; +} + +static inline NDTreeIterator * +ndtree_iter_new(const NDTreeArchive *tree) +{ + if (tree == NULL) + return NULL; + + NDTreeIterator *it = malloc(sizeof(*it)); + if (it == NULL) + return NULL; + + ndtree_iter_init(it, tree); + return it; +} + +static inline void +ndtree_iter_free(NDTreeIterator *it) +{ + free(it); +} + +static const NDTreeNode * +ndtree_next_leaf(const NDTreeNode *node) +{ + while (node != NULL) { + // Descend to the next subtree if there is a next sibling. + const NDTreeNode *parent = node->parent; + if (!parent) + return NULL; + + assert(node - parent->children >= 0); + assert(node - parent->children < 255); + uint8_t i = 1 + (uint8_t)(node - parent->children); + + assert(parent->n > 0); + if (i < parent->n) { + // Move to the next sibling, then descend to its leftmost leaf. + node = &parent->children[i]; + + while (!ndtree_node_is_leaf(node)) + node = &node->children[0]; + + return node; + } + // No more siblings here. Move up and look for one. + node = parent; + } + return NULL; +} + + +/** + 1 node returned + 0 end of iteration + -1 error +*/ +static inline int +ndtree_iter_next(NDTreeIterator *it, const double **z, const void **x) +{ + if (it == NULL || z == NULL || it->revision != it->arch->revision) + return -1; + + while (it->current_node != NULL) { + const NDTreeNode *node = it->current_node; + + assert(ndtree_node_is_leaf(node)); + // Emit solutions from the current leaf. + while (it->bucket_index < node->n) { + const SolutionsList *bucket = &node->bucket[it->bucket_index]; + if (it->solution_index < bucket->x.n) { + *z = bucket->z; + if (x) + *x = bucket->x.list[it->solution_index]; + it->solution_index++; + return 1; + } + it->bucket_index++; + it->solution_index = 0; + } + + // Current leaf exhausted. + it->current_node = ndtree_next_leaf(node); + it->bucket_index = 0; + it->solution_index = 0; + } + *z = NULL; + if (x) + *x = NULL; + return 0; +} + +#endif // NDTREE_ITERATOR_H diff --git a/c/solutions_list.h b/c/solutions_list.h new file mode 100644 index 000000000..1c819d9ab --- /dev/null +++ b/c/solutions_list.h @@ -0,0 +1,149 @@ +#ifndef SOLUTIONS_LIST_H_ +#define SOLUTIONS_LIST_H_ + +#include +#include // memcpy +#include + +typedef struct VoidList { + uint32_t n; + uint32_t cap; + const void ** list; +} VoidList; + +/** + A duplicate-aware leaf bucket stores one unique objective vector plus all + payloads that share it, so duplicate-heavy leaves are checked once per + distinct objective vector rather than once per stored solution. +*/ +typedef struct SolutionsList { + const double * z; // point coordinates (objective vector). + // FIXME: Compile with -fms-extensions to avoid duplication and use: + // struct VoidList; + VoidList x; +} SolutionsList; + +static inline bool +void_list_init(VoidList * restrict item, const void * restrict x) +{ + item->cap = 1; + item->n = 1; + if (x == NULL) { + item->list = NULL; + } else { + item->list = (const void **) malloc(item->cap * sizeof(*item->list)); + if (item->list == NULL) + return false; + item->list[0] = x; + } + return true; +} + +static inline bool +solutions_list_init(SolutionsList * restrict item, const double * restrict z, const void * restrict x, dimension_t dim) +{ + assert(dim >= 2); + // FIXME: We should have a pool of z vectors or make z a flexible array. + double * new_z = malloc(dim * sizeof(*new_z)); + if (new_z == NULL) + return false; + item->z = memcpy(new_z, z, dim * sizeof(*z)); + return void_list_init(&item->x, x); +} + +static inline void +void_list_free(VoidList * item) +{ + item->n = 0; + // item->n may be > 0 if we stored repeated z values but no x values. + if (!item->list) + return; + free(item->list); + item->list = NULL; +} + +static inline void +solutions_list_free(SolutionsList * item) +{ + free((void *)item->z); + item->z = NULL; + void_list_free(&item->x); +} + +/** + Add a duplicated point. +*/ +static inline bool +void_list_append(VoidList * restrict item, const void * restrict x) +{ + if (x == NULL) { + item->n++; + return true; + } + + if (item->n == item->cap) { + assert(item->cap < UINT32_MAX / 2); + uint32_t new_cap = item->cap * 2; + const void ** new_list = (const void **) realloc(item->list, new_cap * sizeof(*new_list)); + if (new_list == NULL) + return false; + + item->list = new_list; + item->cap = new_cap; + } + item->list[item->n++] = x; + return true; +} + +/** + Add a duplicated point. +*/ +static inline bool +solutions_list_append(SolutionsList * restrict item, const void * restrict x) +{ + assert(item->z != NULL); + return void_list_append(&item->x, x); +} + + +static inline void +void_list_get_x_values(const VoidList * item, const void *** x_list) +{ + for (unsigned i = 0; i < item->n; i++, (*x_list)++) { + assert(item->list[i] != NULL); // Storing NULL values is a bug. + **x_list = item->list[i]; + } +} + +static inline void +solutions_list_get_x_values(const SolutionsList * item, const void *** x_list) +{ + void_list_get_x_values(&item->x, x_list); +} + +static inline void +solutions_list_get_contents(const SolutionsList * item, + double ** z_list, const void *** x_list, + dimension_t dim) +{ + for (unsigned i = 0; i < item->x.n; i++, *z_list += dim) { + // Duplicate z for each x + memcpy(*z_list, item->z, dim * sizeof **z_list); + } + if (x_list != NULL) + void_list_get_x_values(&item->x, x_list); +} + + +/** + Shallow copy. +*/ +static inline void +solutions_list_copy(SolutionsList * restrict dst, const SolutionsList * restrict src) +{ + memcpy(dst, src, sizeof *src); +} + + + +#endif // SOLUTIONS_LIST_H_ diff --git a/c/treap2d.h b/c/treap2d.h index c500a3d9e..4fe65c8e2 100644 --- a/c/treap2d.h +++ b/c/treap2d.h @@ -17,7 +17,11 @@ 16:464-497, 1996 ******************************************************************************/ +#ifndef TREAP_H_ +#define TREAP_H_ + #include "common.h" +#include "sort.h" /** @@ -51,6 +55,7 @@ #include #include #include +#include struct TreapNode { double x, y; @@ -269,6 +274,18 @@ treap_split_le(TreapNode *root, double key, } } +/** + Split a frontier treap by z[1]. + + Since z[1] strictly decreases as z[0] increases: + + a: z[1] >= value + b: z[1] < value + + The nodes in `a` therefore form a prefix in key order. + + Complexity: O(log n) assuming a balanced tree. +*/ static inline void treap_split_z1_ge_with_min(TreapNode *root, double y, TreapNode **high_y, TreapNode **low_y, @@ -401,15 +418,41 @@ treap_validate_tree(TreapNode * node) if (node->left) { assert(node->left->x < node->x); - assert(node->priority > node->left->priority); + // Ideally, there should be no equal priorities, but it does happen. + assert(node->priority >= node->left->priority); treap_validate_tree(node->left); } if (node->right) { assert(node->right->x > node->x); - assert(node->priority > node->right->priority); + // Ideally, there should be no equal priorities, but it does happen. + assert(node->priority >= node->right->priority); treap_validate_tree(node->right); } } + +// O(log n) +static inline const TreapNode * +treap_minimum(const TreapNode * root) +{ + assert(root != NULL); + while (root->left != NULL) + root = root->left; + + return root; +} + +// O(log n) +static inline const TreapNode * +treap_maximum(const TreapNode *root) +{ + assert(root != NULL); + + while (root->right != NULL) + root = root->right; + + return root; +} + /** Find the node with the largest x such that x <= key. @@ -544,6 +587,13 @@ treap_find(const Treap *tree, double key) return NULL; } +static inline bool +treap_dominates(const Treap * tree, const double * z) +{ + TreapNode * node = treap_find_le(tree, z[0]); + return node && dominates_2d((double[2]){node->x, node->y}, z); +} + /** Insert a single node. @@ -584,6 +634,29 @@ treap_insert_node(Treap *tree, TreapNode *node) DEBUG1(treap_validate_tree(tree->root)); } +static inline void +treap_node_free(TreapNode * node) +{ + if (node == NULL) + return; + + treap_node_free(node->left); + node->left = NULL; + treap_node_free(node->right); + node->right = NULL; +#ifndef TREAP_ITEM_IS_EMPTY + treap_item_free(node->item); +#endif + free(node); +} + +static inline void +treap_free_nodes(Treap * t) +{ + treap_node_free(t->root); + t->root = NULL; +} + static inline TreapNode * treap_erase_at(TreapNode **link) { @@ -682,3 +755,132 @@ treap_insert_and_displace(Treap *tree, TreapNode *node) { return treap_insert_and_displace_get_bounds(tree, node, NULL, NULL); } + +/** + Insert the mutually-non-dominated frontier `incoming` into `existing`. + + The incoming nodes are allowed to have priorities unrelated to + `existing`; every incoming node receives a fresh priority. + + Returns the resulting frontier and places all displaced existing + nodes in *displaced. + + Preconditions: + + - incoming is a valid frontier: + z[0] strictly increasing + z[1] strictly decreasing + + - existing is a valid frontier with the same property + + - keys are unique within each tree + + - no node in existing weakly dominates any node in incoming + + Postconditions: + + - result is a valid frontier + - *displaced is a valid frontier + - every displaced node is from existing + - every existing node dominated by an incoming node is displaced + - no incoming node is displaced +*/ +static inline TreapNode * +treap_frontier_union(Treap *t, TreapNode *incoming, TreapNode *existing, + TreapNode **displaced, bool *all_displaced) +{ + if (!incoming) { + *displaced = NULL; + *all_displaced = (existing == NULL); + return existing; + } + + if (!existing) { + *displaced = NULL; + *all_displaced = true; + return incoming; + } + + /* Take the incoming root as the pivot. It is guaranteed not to be + dominated by any node in existing. */ + const double x = incoming->x; + const double y = incoming->y; + + TreapNode *existing_left; // existing->x < x + TreapNode *existing_ge; // existing->x >= x + treap_split_lt(existing, x, &existing_left, &existing_ge); + + TreapNode *equal; // existing_ge->x == x + TreapNode *existing_right; // existing_ge->x > x + treap_split_le(existing_ge, x, &equal, &existing_right); + + /* Since y decreases as x increases, the nodes in existing_right + dominated by (x,y) form its prefix: existing_right->y >= y */ + TreapNode *dominated; + TreapNode *existing_keep; + treap_split_z1_ge(existing_right, y, &dominated, &existing_keep); + + // Recursively process the two independent key ranges. + TreapNode *displaced_left, *displaced_right; + bool all_displaced_left, all_displaced_right; + TreapNode *left = treap_frontier_union(t, incoming->left, existing_left, + &displaced_left, &all_displaced_left); + TreapNode *right = treap_frontier_union(t, incoming->right, existing_keep, + &displaced_right, &all_displaced_right); + + *all_displaced = all_displaced_left && all_displaced_right; + + /* The displaced nodes are also already separated by key: + + displaced_left < equal < dominated < displaced_right + + `equal` is either NULL or a singleton. + */ + // FIXME: Can we move this up? + *displaced = treap_merge(treap_merge(displaced_left, equal), + treap_merge(dominated, displaced_right)); + + // The incoming node is now a singleton. + incoming->priority = treap_random(t); + incoming->left = NULL; + incoming->right = NULL; + + /* Reconstruct the incoming result. + + The two recursive results are ordered: + + left < incoming < right + + Ordinary treap merges restore the heap property regardless of + the incoming node's new priority. + */ + return treap_merge(treap_merge(left, incoming), right); +} + + +static inline void +treap_node_get_unique_vectors(const TreapNode *node, const double *** z_list) +{ + if (!node) + return; + + treap_node_get_unique_vectors(node->left, z_list); + **z_list = &node->x; + (*z_list)++; + treap_node_get_unique_vectors(node->right, z_list); +} + +/** + z_list must be an array of pointers to 'const double' of length treap_unique_size(t). + + That is, z_list does not contain the actual data but just pointers into the + Treap. The data is owned by the Treap, so it should not be modified using + these pointers. +*/ +static inline void +treap_get_unique_vectors(const Treap *tree, const double ** z_list) +{ + treap_node_get_unique_vectors(tree->root, &z_list); +} + +#endif /* TREAP_H_ */ diff --git a/c/treap_archive.c b/c/treap_archive.c new file mode 100644 index 000000000..25a3ac141 --- /dev/null +++ b/c/treap_archive.c @@ -0,0 +1,390 @@ +/************************************************************************* + + treap_archive.c: 2D Archive based on Randomised Binary Tree (Treap) + + --------------------------------------------------------------------- + Copyright (C) 2026 + Jonathan Fieldsend + Manuel Lopez-Ibanez + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + --------------------------------------------------------------------- + +*************************************************************************/ +#include +#include +#include +#include "sort.h" +#include "maxminclamp.h" + +#include "treap_archive.h" +#include "archiving_priv.h" + +#include "treap_iterator.h" + + +//--------------------------------------------------------------------------- + +bool +treap_archive_move(TreapArchive * restrict dst, TreapArchive * restrict src) +{ + memcpy(dst, src, sizeof(*src)); + memset(src, 0, sizeof(*src)); + free(src); + return true; +} + +void +treap_archive_init(TreapArchive *arch) +{ + treap_init(&arch->tree); + arch->total_size = 0; + arch->unique_size = 0; + arch->revision = 0; + arch->x_is_null = -1; // Don't know yet. +} + + +TreapArchive * +treap_archive_new(void) +{ + TreapArchive * arch = malloc(sizeof(*arch)); + if (arch != NULL) + treap_archive_init(arch); + + return arch; +} + +static inline TreapNode * +treap_archive_node_new(const double * restrict z, const void * restrict x) +{ + TreapNode * node = malloc(sizeof(*node)); + if (!node) + return NULL; + if (!void_list_init(&node->item, x)) { + free(node); + return NULL; + } + treap_node_init(node, z[0], z[1], node->item); + return node; +} + +bool +treap_archive_init_with_single_solution(TreapArchive * restrict arch, + const double * restrict z, const void * restrict x) +{ + // FIXME: Use a pool of nodes. + TreapNode *node = treap_archive_node_new(z, x); + if (node == NULL) + return false; + + assert(node->left == NULL); + assert(node->right == NULL); + treap_init_with_single_node(&arch->tree, node); + arch->unique_size = 1; + arch->total_size = node->item.n; + arch->revision = 1; + arch->x_is_null = (node->item.list == NULL); + return true; +} + +void +treap_archive_free_nodes(TreapArchive * arch) +{ + treap_free_nodes(&arch->tree); +} + +void +treap_archive_free(TreapArchive * arch) +{ + treap_archive_free_nodes(arch); + free(arch); +} + +size_t +treap_archive_total_size(const TreapArchive *arch) +{ + return arch->total_size; +} + +size_t +treap_archive_unique_size(const TreapArchive *arch) +{ + return arch->unique_size; +} + +bool +treap_archive_find_exact_vector(const TreapArchive * arch, const double * z) +{ + TreapNode *node = treap_find(&arch->tree, z[0]); + return (node && node->y == z[1]); +} + +VoidList * +treap_archive_find_solutions_of_vector(const TreapArchive * arch, const double * z) +{ + TreapNode *node = treap_find(&arch->tree, z[0]); + if (node && node->y == z[1]) + return &node->item; + return NULL; +} + + +/** + Returns true if z dominates every point in the tree, false otherwise or if z + exists in the tree or the tree is empty. + + Complexity: O(2 log n) +*/ +bool +treap_archive_dominated_by(const TreapArchive * arch, const double * z) +{ + const TreapNode * root = arch->tree.root; + if (arch->unique_size == 0) { + assert(root == NULL); + return false; + } + if (arch->unique_size == 1) { + return dominates_2d(z, (double [2]){ root->x, root->y }); + } + + const TreapNode * first = treap_minimum(root); + const TreapNode * last = treap_maximum(root); + assert(first != last); + // Even if they are both equal, first and last are not the same point. + return z[0] <= first->x && z[1] <= last->y; +} + +bool +treap_archive_dominates(const TreapArchive * arch, const double * z) +{ + return treap_dominates(&arch->tree, z); +} + +// FIXME: This visits every node, so it is O(log n). Is there a more efficient way? +static inline size_t +treap_archive_subtree_unique_size(const TreapNode *root, size_t * total_size) +{ + if (!root) + return 0; + *total_size += root->item.n; + return 1 + treap_archive_subtree_unique_size(root->left, total_size) + + treap_archive_subtree_unique_size(root->right, total_size); +} + +static inline void +treap_archive_update_size(TreapArchive *arch) +{ + arch->total_size = 0; + arch->unique_size = treap_archive_subtree_unique_size(arch->tree.root, &arch->total_size); +} + +/** + Insert new_node into self and return the nodes it displaces. + + Preconditions: + + - new_node is initialized and has a valid priority. + - new_node->left == NULL + - new_node->right == NULL + - new_node->z[0] is its key. + - its key does not already occur in self. + - no node in self weakly dominates new_node. + - self is a valid mutually-non-dominated minimization frontier. + + Postconditions: + + - new_node belongs to self. + - every node returned is dominated by new_node. + - no other node is removed from self. + - the returned nodes form a valid treap/frontier. +*/ +static inline TreapArchive * +treap_archive_insert_node_and_displace(TreapArchive *self, TreapNode *node) +{ + assert(node != NULL); + + TreapArchive * displaced = treap_archive_new(); + if (!displaced) + return NULL; + + displaced->x_is_null = self->x_is_null; + displaced->tree.root = treap_insert_and_displace(&self->tree, node); + treap_archive_update_size(displaced); // O(n) ! Is there a more efficient way? + self->unique_size++; + self->unique_size -= displaced->unique_size; + self->total_size += node->item.n; + self->total_size -= displaced->total_size; + self->revision++; + return displaced; +} + +// FIXME: Free the displaced nodes as soon as they are found. Do not create a +// temporary Treap. +static inline void +treap_archive_insert_node_and_discard(TreapArchive *self, TreapNode *node) +{ + TreapArchive * displaced = treap_archive_insert_node_and_displace(self, node); + treap_archive_free(displaced); +} + + +/** + Insert new solution (z,x) and get the displaced treap nodes if displaced != NULL. + + Returns one of the values of archive_insert_result_t. +*/ +// FIXME: Split into check nocheck variants. +int +treap_archive_add(TreapArchive * restrict self, const double * restrict z, + const void * restrict x, bool check, TreapArchive ** restrict displaced) +{ + // FIXME: How to add to an already built tree of displaced? + if (displaced) { + assert(*displaced == NULL); + *displaced = NULL; + } + + TreapNode * leq = treap_find_le(&self->tree, z[0]); + if (leq && all_equal_double((double [2]){leq->x, leq->y}, z, 2)) { + /* Exact duplicates cannot change the front geometry; append them to + the existing treap node and skip all dominance work. */ + int res = wrong_x_is_null(&self->x_is_null, x); + if (res) + return res; + self->total_size++; + if (!void_list_append(&leq->item, x)) + return ARCHIVE_INSERT_MEMORY_ERROR; + return ARCHIVE_INSERT_DUPLICATED; // Accepted + } + + if (check && leq && leq->y <= z[1]) + return ARCHIVE_INSERT_REJECTED; + + int res = wrong_x_is_null(&self->x_is_null, x); + if (res) + return res; + + TreapNode *new_node = treap_archive_node_new(z, x); + if (new_node == NULL) + return ARCHIVE_INSERT_MEMORY_ERROR; // ERROR + + if (displaced) { + *displaced = treap_archive_insert_node_and_displace(self, new_node); + if (*displaced == NULL) + return ARCHIVE_INSERT_MEMORY_ERROR; + } else + treap_archive_insert_node_and_discard(self, new_node); + + return ARCHIVE_INSERT_ACCEPTED; // Accepted +} + +int +treap_archive_add_discard(TreapArchive * restrict self, + const double * restrict z, const void * restrict x) +{ + return treap_archive_add(self, z, x, /*check=*/true, /*displaced=*/NULL); +} + +/** + Insert the elements of incoming into arch and return displaced nodes in incoming. + It does not allocate any new memory! + + This function assumes that: + + - no vector in arch can weakly dominated a vector in incoming. + - no vector in incoming appears in arch. +*/ +int +treap_archive_insert_displaced(TreapArchive *arch, TreapArchive *incoming, bool *all_displaced) +{ + if (arch->x_is_null == -1) + arch->x_is_null = incoming->x_is_null; + // Failing this assert is a programming error and should never happen. + assert(arch->x_is_null == incoming->x_is_null); + + arch->unique_size += incoming->unique_size; + arch->total_size += incoming->total_size; + TreapNode * displaced; + // FIXME: Regenerate all priorities of incoming nodes using arch->tree so + // that we do not need to pass arch->tree to the union. + arch->tree.root = treap_frontier_union(&arch->tree, incoming->tree.root, arch->tree.root, &displaced, all_displaced); + // Reuse incoming for displaced. + incoming->tree.root = displaced; + treap_archive_update_size(incoming); // O(n) ! Is there a more efficient way? + arch->unique_size -= incoming->unique_size; + arch->total_size -= incoming->total_size; + arch->revision++; + return ARCHIVE_INSERT_ACCEPTED; +} + +bool +treap_archive_has_x_values(const TreapArchive *arch) +{ + // -1 or 1 means that there are not x values to retrieve. + return arch->x_is_null == 0; +} + +static inline void +treap_archive_node_get_x_values(const TreapNode *node, const void *** x_list) +{ + if (!node) + return; + + treap_archive_node_get_x_values(node->left, x_list); + void_list_get_x_values(&node->item, x_list); + treap_archive_node_get_x_values(node->right, x_list); +} + +void +treap_archive_get_x_values(const TreapArchive *arch, const void ** x_list) +{ + if (!treap_archive_has_x_values(arch)) + return; + treap_archive_node_get_x_values(arch->tree.root, &x_list); +} + +static inline void +treap_archive_node_get_contents(const TreapNode *node, double ** z_list, const void *** x_list) +{ + if (!node) + return; + + treap_archive_node_get_contents(node->left, z_list, x_list); + // Duplicate z for each x + for (size_t i = 0; i < node->item.n; i++, *z_list += 2) + memcpy(*z_list, (double [2]){ node->x, node->y}, 2 * sizeof **z_list); + + if (x_list != NULL) + void_list_get_x_values(&node->item, x_list); + treap_archive_node_get_contents(node->right, z_list, x_list); +} + +/** + z_list must be an array of double allocated with sufficient space. Vectors + are copied to this array. + + x_list must be of (void *). Only the pointers are copied. +*/ +void +treap_archive_get_contents(const TreapArchive *arch, double * z_list, const void ** x_list) +{ + treap_archive_node_get_contents(arch->tree.root, &z_list, + treap_archive_has_x_values(arch) ? &x_list : NULL); +} + +/** + z_list must be an array of pointers to 'const double' of length treap_unique_size(t). + + That is, z_list does not contain the actual data but just pointers into the + Treap. The data is not owned by the Treap so it may get deleted if not used + or copied immediately. +*/ +void +treap_archive_get_unique_vectors(const TreapArchive *arch, const double ** z_list) +{ + treap_get_unique_vectors(&arch->tree, z_list); +} diff --git a/c/treap_archive.h b/c/treap_archive.h new file mode 100644 index 000000000..5cb04ff6d --- /dev/null +++ b/c/treap_archive.h @@ -0,0 +1,74 @@ +/************************************************************************* + + treap-archive.h: 2D Archive based on Randomised Binary Tree (Treap) + + --------------------------------------------------------------------- + Copyright (C) 2026 + Jonathan Fieldsend + Manuel Lopez-Ibanez + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + --------------------------------------------------------------------- + +*************************************************************************/ +#ifndef TREAP_ARCHIVE_H +#define TREAP_ARCHIVE_H + +#include "archiving.h" + +typedef struct TreapArchive TreapArchive; +typedef struct TreapIterator TreapIterator; + +// FIXME: We have to include this here because archiver.h needs it. +#include "solutions_list.h" + +/** + The treap stores the 2D vectors. Optional x-values are stored in this VoidList. +*/ +typedef VoidList TreapItem; + +static inline void +treap_item_free(TreapItem item) +{ + void_list_free(&item); +} + +#include "treap2d.h" + +typedef struct TreapArchive { + Treap tree; + size_t unique_size; // Number of nodes in the tree, i.e., unique z vectors. + size_t total_size; // Number of x values (including duplicates of z vectors). + signed char x_is_null; + uint64_t revision; // To detect modifications of the tree while iterating. +} TreapArchive; + + +TreapArchive * treap_archive_new(void); +void treap_archive_init(TreapArchive *arch); +int treap_archive_add(TreapArchive * restrict self, const double * restrict z, + const void * restrict x, bool check, TreapArchive ** restrict displaced); +int treap_archive_add_discard(TreapArchive * restrict self, const double * restrict z, const void * restrict x); +int treap_archive_insert_displaced(TreapArchive *arch, TreapArchive *incoming, bool *all_displaced); +size_t treap_archive_total_size(const TreapArchive *arch); +size_t treap_archive_unique_size(const TreapArchive *arch); +void treap_archive_get_contents(const TreapArchive *arch, double * z_list, const void ** x_list); +void treap_archive_get_unique_vectors(const TreapArchive *arch, const double ** z_list); +void treap_archive_get_x_values(const TreapArchive *arch, const void ** x_list); +bool treap_archive_has_x_values(const TreapArchive *arch); +void treap_archive_free_nodes(TreapArchive * arch); +void treap_archive_free(TreapArchive * arch); +bool treap_archive_dominated_by(const TreapArchive * arch, const double * z); +bool treap_archive_dominates(const TreapArchive * arch, const double * z); +bool treap_archive_find_exact_vector(const TreapArchive * arch, const double * z); +VoidList * treap_archive_find_solutions_of_vector(const TreapArchive * arch, const double * z); + +typedef struct TreapIterator TreapIterator; +void treap_archive_iter_free(TreapIterator *it); +TreapIterator * treap_archive_iter_new(const TreapArchive *arch); +int treap_archive_iter_next(TreapIterator * restrict it, const double ** restrict z, const void ** restrict x); + +#endif // TREAP_ARCHIVE_H diff --git a/c/treap_iterator.h b/c/treap_iterator.h new file mode 100644 index 000000000..f70f0d97e --- /dev/null +++ b/c/treap_iterator.h @@ -0,0 +1,126 @@ +#ifndef TREAP_ITERATOR_H +#define TREAP_ITERATOR_H + +#define TREAP_ITERATOR_STACK_MAX 64 + +typedef struct TreapIterator { + const TreapNode * stack[TREAP_ITERATOR_STACK_MAX]; + uint32_t stack_size; + const TreapNode * current_node; + uint32_t solution_index; + // To detect modifications of the tree while iterating. + uint64_t revision; + const TreapArchive *arch; +} TreapIterator; + + +static bool +treap_archive_iter_push(TreapIterator * restrict it, const TreapNode * restrict node) +{ + assert(it->stack_size < TREAP_ITERATOR_STACK_MAX); + if (it->stack_size == TREAP_ITERATOR_STACK_MAX) + return false; + + it->stack[it->stack_size++] = node; + return true; +} + +static const TreapNode * +treap_archive_iter_pop(TreapIterator *it) +{ + return it->stack_size ? it->stack[--it->stack_size] : NULL; +} + + +void +treap_archive_iter_free(TreapIterator *it) +{ + if (it != NULL) + free(it); +} + +void +treap_archive_iter_init(TreapIterator * restrict it, const TreapArchive * restrict arch) +{ + it->stack_size = 0; + it->current_node = NULL; + it->solution_index = 0; + it->revision = arch->revision; + it->arch = arch; + /* Push the entire left spine of the tree. The smallest key will then be on + top of the stack. */ + const TreapNode *node = arch->tree.root; + while (node != NULL) { + if (!treap_archive_iter_push(it, node)) { + // FIXME: Signal an error! + return; + } + node = node->left; + } +} + +TreapIterator * +treap_archive_iter_new(const TreapArchive *arch) +{ + if (arch == NULL) + return NULL; + + TreapIterator *it = malloc(sizeof(*it)); + if (it == NULL) + return NULL; + + treap_archive_iter_init(it, arch); + return it; +} + +/** + 1 next element returned + 0 end of iteration + -1 error +*/ +int +treap_archive_iter_next(TreapIterator * restrict it, const double ** restrict z, const void ** restrict x) +{ + if (it == NULL || z == NULL || it->revision != it->arch->revision) + return -1; + + // Continue emitting solutions from the node most recently popped. + if (it->current_node != NULL) { + const VoidList *item = &it->current_node->item; + if (it->solution_index < item->n) { + *z = &it->current_node->x; + if (x) + *x = item->list[it->solution_index]; + it->solution_index++; + return 1; + } + } + + // Find the next node in in-order traversal. + const VoidList *item; + do { + if (it->stack_size == 0) { + *z = NULL; + if (x) + *x = NULL; + return 0; + } + + it->current_node = treap_archive_iter_pop(it); + const TreapNode *node = it->current_node->right; + while (node != NULL) { + if (!treap_archive_iter_push(it, node)) + return -1; + node = node->left; + } + item = &it->current_node->item; + } while (item->n == 0); + + *z = &it->current_node->x; + if (x) + *x = item->list[0]; + it->solution_index = 1; + return 1; +} + +#endif // TREAP_ITERATOR_H diff --git a/python/doc/source/reference/functions.archiving.rst b/python/doc/source/reference/functions.archiving.rst new file mode 100644 index 000000000..ccab33242 --- /dev/null +++ b/python/doc/source/reference/functions.archiving.rst @@ -0,0 +1,24 @@ +.. _archiving: + +========================== +Archiving Pareto frontiers +========================== + +.. currentmodule:: moocore + +.. _unbounded_archiving: + +Unbounded Archiving of a Nondominated Set +========================================= + +.. autosummary:: + :toctree: generated/ + + UnboundedArchive + BaseUnboundedArchive + + +Bibliography +============ + +.. footbibliography:: diff --git a/python/doc/source/reference/index.rst b/python/doc/source/reference/index.rst index c28449611..943651b1e 100644 --- a/python/doc/source/reference/index.rst +++ b/python/doc/source/reference/index.rst @@ -29,3 +29,4 @@ indentation. functions.dominance functions.metrics functions.eaf + functions.archiving diff --git a/python/doc/source/whatsnew/index.rst b/python/doc/source/whatsnew/index.rst index ea58ce81e..61bbaca6b 100644 --- a/python/doc/source/whatsnew/index.rst +++ b/python/doc/source/whatsnew/index.rst @@ -12,6 +12,7 @@ Version 0.4.0 - :func:`~moocore.is_nondominated` is up to 10x faster in some inputs thanks to a customized radixsort implementation. - New shapes ``"concave-cliff"`` and ``"convex-cliff"`` added to :func:`~moocore.generate_ndset`. - New function :func:`~moocore.generate_sequence` to generate sequences of dominated and nondominated points. +- New unbounded nondominated archive :func:`~moocore.UnboundedArchive`. Version 0.3.2 (11/07/2026) diff --git a/python/src/moocore/__init__.py b/python/src/moocore/__init__.py index d07f559f0..3808217f9 100644 --- a/python/src/moocore/__init__.py +++ b/python/src/moocore/__init__.py @@ -37,6 +37,10 @@ ) from ._generate import generate_ndset, generate_sequence +from ._archive import UnboundedArchive + +# The redundant alias silences a ruff warning. +from ._archive import BaseUnboundedArchive as BaseUnboundedArchive from importlib.metadata import version as _metadata_version @@ -49,6 +53,7 @@ "Hypervolume", "ReadDatasetsError", "RelativeHypervolume", + "UnboundedArchive", "any_dominated", "apply_within_sets", "avg_hausdorff_dist", diff --git a/python/src/moocore/_archive.py b/python/src/moocore/_archive.py new file mode 100644 index 000000000..423d06fee --- /dev/null +++ b/python/src/moocore/_archive.py @@ -0,0 +1,696 @@ +from abc import ABC, abstractmethod +from collections.abc import Callable, Sequence, Iterator +from numpy.typing import ArrayLike # For type hints +from typing import Any, ClassVar + +import numpy as np + +from ._docsubstitute import DocSubstitute +from ._utils import _as_1d_float_array, _as_2d_float_array, _parse_maximise + +## The CFFI library is used to create C bindings. +from ._libmoocore import lib, ffi # ty: ignore[unresolved-import] + + +def _remember_handle(handles, what): + handles[what] = what + + +class BaseArchive(ABC): + _lib_archive_free: ClassVar[Callable[..., Any]] + + def __init__(self, dim: int, maximise: bool | Sequence[bool]): + if dim < 2 or dim > lib.MOOCORE_DIMENSION_MAX: + raise ValueError( + f"'dim' cannot be smaller than 2 or larger than {lib.MOOCORE_DIMENSION_MAX}" + ) + + self._dim = dim + self._c_archive = self._setup_c_archive() + if self._c_archive == ffi.NULL: + raise MemoryError + # ffi.gc() ensures that the pointer is registered with the GC and the C + # destructor called. + self._c_archive = ffi.gc(self._c_archive, self._lib_archive_free) + + self.maximise = np.asarray( + _parse_maximise(maximise, self._dim), dtype=bool + ) + # -1: maximize, 1: minimize + self._minmax = np.where(self.maximise, -1.0, 1.0) + + # Python objects stored in C will be freed by Python unless we keep a + # reference to them in Python. This set keeps those objects alive until + # we decide to free or move them to another front. + self._x_handles = {} + # FIXME: Using a set() instead of a dictionary is probably faster. We + # can store the output of ffi.new_handle() directly in the set. + # However, when retrieving handles from C, two handles may compare + # equal, but the one in self._x_handles is the one that should be kept + # alive. + self.displaced_p = ffi.NULL + + @property + def dim(self) -> int: + """Return the dimension of the points (objective vectors) stored in the archive.""" + return self._dim + + @abstractmethod + def _setup_c_archive(self): + pass + + def _objectives_to_c(self, z: ArrayLike): + z = _as_1d_float_array(z, dim=self.dim, name="z") + # We do not want to modify the original array, so we create a copy here. + z = z * self._minmax + return ffi.from_buffer("double []", z) + + def _c_to_objectives(self, z) -> np.ndarray: + z = np.frombuffer(ffi.buffer(z, ffi.sizeof("double") * self.dim)) + z = z * self._minmax + z.setflags(write=False) + return z + + +class BaseUnboundedArchive(BaseArchive): + """Interface implemented by objects returned by :func:`UnboundedArchive`. + + This class defines the common interface for ``BaseUnboundedArchive`` + objects. It is not intended to be instantiated directly. See Examples in + :func:`UnboundedArchive`. + + """ + + # Derived classes must define these: + _lib_archive_add_and_get_displaced: ClassVar[Callable[..., Any]] + _lib_archive_dominated_by: ClassVar[Callable[..., Any]] + _lib_archive_dominates: ClassVar[Callable[..., Any]] + _lib_archive_find_exact_vector: ClassVar[Callable[..., Any]] + _lib_archive_find_x_values_of_vector: ClassVar[Callable[..., Any]] + _lib_archive_free: ClassVar[Callable[..., Any]] + _lib_archive_get_contents: ClassVar[Callable[..., Any]] + _lib_archive_get_unique_vectors: ClassVar[Callable[..., Any]] + _lib_archive_has_x_values: ClassVar[Callable[..., Any]] + _lib_archive_new: ClassVar[Callable[..., Any]] + _lib_archive_total_size: ClassVar[Callable[..., Any]] + _lib_archive_unique_size: ClassVar[Callable[..., Any]] + _lib_archive_iter_new: ClassVar[Callable[..., Any]] + _lib_archive_iter_free: ClassVar[Callable[..., Any]] + _lib_archive_iter_next: ClassVar[Callable[..., Any]] + _lib_displaced_free: ClassVar[Callable[..., Any]] + _lib_displaced_get_unique_vectors: ClassVar[Callable[..., Any]] + _lib_displaced_get_x_values: ClassVar[Callable[..., Any]] + _lib_displaced_total_len: ClassVar[Callable[..., Any]] + _lib_displaced_unique_len: ClassVar[Callable[..., Any]] + + def __init__(self, dim: int, maximise: bool | Sequence[bool]): + super().__init__(dim=dim, maximise=maximise) + self.all_displaced_p = ffi.new("bool *") + + def __contains__(self, z: ArrayLike) -> bool: + """Return true if the given objective vector is archived.""" + z = self._objectives_to_c(z) + return self._lib_archive_find_exact_vector(self._c_archive, z) + + def __iter__(self) -> Iterator[tuple[np.ndarray, Any]]: + """Return z vectors and, if available, their associated x object one at a time. + + For efficiency, iterating does not make copies of the vectors nor the + objects. However, the vectors are marked as read-only, thus + modifying them requires that the user makes a copy. + + Modifying the archive while iterating raises a :exc:`RuntimeError`. + """ + if len(self) == 0: + return + + it = self._lib_archive_iter_new(self._c_archive) + if it == ffi.NULL: + raise MemoryError("failed to create iterator") + it = ffi.gc(it, self._lib_archive_iter_free) + z = ffi.new("const double **") + rc = 1 + if self.has_x_values(): + x = ffi.new("const void **") + while True: + rc = self._lib_archive_iter_next(it, z, x) + if rc != 1: + break + yield self._c_to_objectives(z[0]), ffi.from_handle(x[0]) + else: + while True: + rc = self._lib_archive_iter_next(it, z, ffi.NULL) + if rc != 1: + break + yield self._c_to_objectives(z[0]), None + + if rc < 0: + raise RuntimeError( + "invalid 'BaseUnboundedArchive' iterator, did you modify the archive?" + ) + + def __len__(self) -> int: + """Return the total number of points stored in the archive (including duplicates).""" + return self._lib_archive_total_size(self._c_archive) + + def __repr__(self) -> str: + z, x = self.get_contents() + if x is None: + return str(z) + return f"{z}\nx = {x}" + + def unique_len(self) -> int: + """Return the unique number of points stored in the archive.""" + return self._lib_archive_unique_size(self._c_archive) + + def has_x_values(self) -> bool: + """Return true if the archive stores 'x' values.""" + return self._lib_archive_has_x_values(self._c_archive) + + def dominates(self, z: ArrayLike) -> bool: + """Return true if a point in the archive dominates :code:`z`.""" + z = self._objectives_to_c(z) + return self._lib_archive_dominates(self._c_archive, z) + + # FIXME: Should this be called is_dominated_by, so you write arch.is_dominated_by(z)? + def dominated_by(self, z: ArrayLike) -> bool: + """Return true if all points in the archive are dominated by :code:`z`.""" + z = self._objectives_to_c(z) + return self._lib_archive_dominated_by(self._c_archive, z) + + def add(self, z: ArrayLike, x: Any = None) -> bool: + """Add a point if it is not (weakly-)dominated by the archive. + + Points dominated by the added point are discarded. With + :code:`allow_duplicates=True`, weakly-dominated points are + accepted. Otherwise, they are rejected. + + Returns + ------- + ``True`` if added or ``False`` if rejected. + """ + accepted, _ = self._add_with_displaced_raw( + z, x, check=True, discard=True + ) + return accepted + + def add_many( + self, z: ArrayLike, x: Sequence[Any] | None = None + ) -> list[bool]: + """Add several points sequentially and return acceptance as a boolean list.""" + # FIXME: call is_nondominated(points) first. It is much faster than adding + # them to the archive one by one. + z = _as_2d_float_array(z, dim=self.dim) + if x is None: + return [self.add(point) for point in z] + + x = list(x) + if len(x) != len(z): + raise ValueError( + "'x' must be either None or a list with one value per input vector" + ) + return [self.add(point, x_value) for point, x_value in zip(z, x)] + + # FIXME: This should be called _add_and_get_displaced() + def _add_with_displaced_raw( + self, z: ArrayLike, x: Any, check: bool, discard: bool + ): + """Insert an entry and return members displaced into the next Pareto front.""" + # The C code copies z but not x. + z_c = self._objectives_to_c(z) + x_c = ffi.NULL if x is None else ffi.new_handle(x) + + # Make sure _lib_archive_add_and_get_displaced() starts from an empty + # list of displaced. + self.displaced_p[0] = ffi.NULL + # FIXME: Add option to discard removed points (so no displaced). + accepted = self._lib_archive_add_and_get_displaced( + self._c_archive, z_c, x_c, check, self.displaced_p + ) + if accepted == lib.ARCHIVE_INSERT_REJECTED: + return False, None + + if ( + accepted != lib.ARCHIVE_INSERT_ACCEPTED + and accepted != lib.ARCHIVE_INSERT_DUPLICATED + ): + if accepted == lib.ARCHIVE_INSERT_X_MUST_BE_NOT_NULL: + raise ValueError("'x' cannot be None") + elif accepted == lib.ARCHIVE_INSERT_X_MUST_BE_NULL: + raise ValueError("'x' must be None") + elif accepted == lib.ARCHIVE_INSERT_MEMORY_ERROR: + raise MemoryError + else: + raise NotImplementedError("unknown error") + + if x is not None: + _remember_handle(self._x_handles, x_c) + + # FIXME: if x is None and discard: return True, None + displaced = self.displaced_p[0] + if displaced == ffi.NULL: + return True, None + + displaced = ffi.gc(displaced, self._lib_displaced_free) + # FIXME: We know that displaced is non-zero, so the checks are wasted. + return True, self._process_displaced(displaced, discard=discard) + + def get_contents(self) -> tuple[np.ndarray, list[Any] | None]: + """Return the full contents of the archive. + + Returns + ------- + Tuple of objective vectors (as a Numpy array) and a list of x values (or ``None`` if ``not self.has_x_values()``) + + """ + return self._c_get_contents(self._c_archive, self.dim, self._minmax) + + def get_unique_vectors(self) -> np.ndarray: + """Return the unique objective vectors stored in the archive.""" + return self._c_get_unique_vectors( + self._c_archive, self.dim, self._minmax + ) + + def get_x_values(self) -> list[Any]: + """Return the x-values stored in the archive.""" + return self._c_get_x_values(self._c_archive) + + def get_x_values_of_vector(self, z: ArrayLike) -> list[Any]: + """Return the x-values of vector ``z``. + + Returns + ------- + A list of objects or an empty list if there are none or ``z`` is not in the archive. + + """ + z = self._objectives_to_c(z) + x_list = self._lib_archive_find_x_values_of_vector(self._c_archive, z) + if x_list == ffi.NULL: + return [] + return [ffi.from_handle(x_list.list[i]) for i in range(x_list.n)] + + def _get_x_handles_from_displaced(self, displaced): + if not self.has_x_values(): + return [] + + x_list = ffi.new("void *[]", self._lib_displaced_total_len(displaced)) + self._lib_displaced_get_x_values(displaced, x_list) + return x_list + + def _process_displaced(self, displaced, discard): + # FIXME: How can displaced be None? + # FIXME: How can displaced have len == 0? displaced should be NULL in that case. + if ( + displaced is None + or displaced == ffi.NULL + or self._lib_displaced_unique_len(displaced) == 0 + ): + return None + + handles = self._get_x_handles_from_displaced(displaced) + if discard: + for k in handles: + del self._x_handles[k] + return None + else: + x_handles = {k: self._x_handles.pop(k) for k in handles} + return displaced, x_handles + + def _add_displaced_raw(self, displaced): + if displaced is None: + return None + displaced, x_handles = displaced + displaced, all_displaced = self._lib_archive_insert_displaced(displaced) + if all_displaced: + assert self._lib_displaced_unique_len(displaced) > 0 + # Swap handles + x_handles, self._x_handles = self._x_handles, x_handles + return displaced, x_handles + + self._x_handles.update(x_handles) + return self._process_displaced(displaced, discard=False) + + @classmethod + def _c_get_contents(cls, c_tree, dim, minmax): + size = cls._lib_archive_total_size(c_tree) + z_list = ffi.new("double []", dim * size) + if cls._lib_archive_has_x_values(c_tree): + x_list = ffi.new("void *[]", size) + cls._lib_archive_get_contents(c_tree, z_list, x_list) + x_list = [ffi.from_handle(x) for x in x_list] + else: + cls._lib_archive_get_contents(c_tree, z_list, ffi.NULL) + x_list = [] + + z_list = np.frombuffer(ffi.buffer(z_list)).reshape(size, dim) + z_list *= minmax + return z_list, x_list + + @classmethod + def _c_get_unique_vectors(cls, c_archive, dim, minmax): + # FIXME: It would be faster to return a single block of memory, but we + # need a new function to get the pointer addresses. + n = cls._lib_archive_unique_size(c_archive) + if n == 0: + return [] + z_list = ffi.new("double *[]", n) + cls._lib_archive_get_unique_vectors(c_archive, z_list) + z_array = np.vstack( + [ + np.frombuffer(ffi.buffer(z, ffi.sizeof("double") * dim)) + for z in z_list + ] + ) + z_array *= minmax + return z_array + + @abstractmethod + def _lib_archive_insert_displaced(self, displaced) -> tuple[Any, bool]: + pass + + @staticmethod + @abstractmethod + def _c_get_x_values(c_archive) -> list[Any]: + pass + + +class NDTreeArchive(BaseUnboundedArchive): + # C functions + _lib_archive_add_and_get_displaced = lib.ndtree_add + _lib_archive_dominated_by = lib.ndtree_dominated_by + _lib_archive_dominates = lib.ndtree_dominates + _lib_archive_find_exact_vector = lib.ndtree_find_exact_vector + _lib_archive_find_x_values_of_vector = lib.ndtree_find_solutions_of_vector + _lib_archive_free = lib.ndtree_free + _lib_archive_get_contents = lib.ndtree_get_contents + _lib_archive_get_unique_vectors = lib.ndtree_get_unique_vectors + _lib_archive_has_x_values = lib.ndtree_has_x_values + _lib_archive_new = lib.ndtree_new + _lib_archive_total_size = lib.ndtree_total_size + _lib_archive_unique_size = lib.ndtree_unique_size + _lib_archive_iter_new = lib.ndtree_iter_new + _lib_archive_iter_free = lib.ndtree_iter_free + _lib_archive_iter_next = lib.ndtree_iter_next + _lib_displaced_free = lib.flex_bucket_free + _lib_displaced_get_unique_vectors = lib.flex_bucket_get_unique_vectors + _lib_displaced_get_x_values = lib.flex_bucket_get_x_values + _lib_displaced_total_len = lib.flex_bucket_total_len + _lib_displaced_unique_len = lib.flex_bucket_unique_len + + def __init__( + self, + dim: int, + maximise: bool | Sequence[bool] = False, + max_children: int = 0, + max_bucket_size: int = 0, + allow_duplicates: bool = True, + ): + + self.max_children, self.max_bucket_size, self.allow_duplicates = ( + self._get_default_config( + dim, max_children, max_bucket_size, allow_duplicates + ) + ) + super().__init__(dim=dim, maximise=maximise) + # We cache these pointers here so we don't keep allocating and freeing memory. + self.displaced_p = ffi.new("FlexBucket **") + + # This is a @classmethod so we can use it from NDSForestNDTree + @classmethod + def _get_default_config( + cls, + dim, + max_children: int, + max_bucket_size: int, + allow_duplicates: bool, + ): + # FIXME: This duplicates the logic in C, it would be better to call a C + # function. + max_children = max(dim + 1, max_children) + if max_children >= 255: + raise ValueError("'max_children' must be smaller than 255") + + if max_bucket_size < max_children: + max_bucket_size = 20 + if max_bucket_size >= 255: + raise ValueError("'max_bucket_size' must be smaller than 255") + + return max_children, max_bucket_size, bool(allow_duplicates) + + def _setup_c_archive(self): + # ffi.gc() ensures that the pointer is registered with the GC and the C + # destructor called. + return self._lib_archive_new( + self.dim, + self.max_children, + self.max_bucket_size, + self.allow_duplicates, + ) + + @staticmethod + def _c_get_x_values(c_archive) -> list[Any]: + if not lib.ndtree_has_x_values(c_archive): + return [] + x_list = ffi.new("void *[]", lib.ndtree_total_size(c_archive)) + lib.ndtree_get_x_values(c_archive, x_list) + x_list = [ffi.from_handle(x) for x in x_list] + return x_list + + def _lib_archive_insert_displaced(self, displaced) -> tuple[Any, bool]: + # lib.ndtree_insert_displaced() will free the current displaced, so + # Python does not need to do it. + ffi.gc(displaced, None) + self.displaced_p[0] = displaced + lib.ndtree_insert_displaced( + self._c_archive, self.displaced_p, self.all_displaced_p + ) + assert displaced != self.displaced_p[0] + displaced = self.displaced_p[0] + if displaced != ffi.NULL: + # lib.ndtree_insert_displaced() may create new memory, so we need ffi.gc(). + displaced = ffi.gc(displaced, self._lib_displaced_free) + + return displaced, self.all_displaced_p[0] + + +class TreapArchive(BaseUnboundedArchive): + # C functions + _lib_archive_add_and_get_displaced = lib.treap_archive_add + _lib_archive_dominated_by = lib.treap_archive_dominated_by + _lib_archive_dominates = lib.treap_archive_dominates + _lib_archive_find_exact_vector = lib.treap_archive_find_exact_vector + _lib_archive_find_x_values_of_vector = ( + lib.treap_archive_find_solutions_of_vector + ) + _lib_archive_free = lib.treap_archive_free + _lib_archive_get_contents = lib.treap_archive_get_contents + _lib_archive_get_unique_vectors = lib.treap_archive_get_unique_vectors + _lib_archive_has_x_values = lib.treap_archive_has_x_values + _lib_archive_new = lib.treap_archive_new + _lib_archive_total_size = lib.treap_archive_total_size + _lib_archive_unique_size = lib.treap_archive_unique_size + _lib_archive_iter_new = lib.treap_archive_iter_new + _lib_archive_iter_free = lib.treap_archive_iter_free + _lib_archive_iter_next = lib.treap_archive_iter_next + _lib_displaced_free = lib.treap_archive_free + _lib_displaced_get_unique_vectors = lib.treap_archive_get_unique_vectors + _lib_displaced_get_x_values = lib.treap_archive_get_x_values + _lib_displaced_total_len = lib.treap_archive_total_size + _lib_displaced_unique_len = lib.treap_archive_unique_size + + def __init__(self, maximise: bool | Sequence[bool]): + super().__init__(dim=2, maximise=maximise) + # We cache these pointers here so we don't keep allocating and freeing memory. + self.displaced_p = ffi.new("TreapArchive **") + + def _setup_c_archive(self): + return self._lib_archive_new() + + @staticmethod + def _c_get_x_values(c_archive) -> list[Any]: + if not lib.treap_archive_has_x_values(c_archive): + return [] + x_list = ffi.new("void *[]", lib.treap_archive_total_size(c_archive)) + lib.treap_archive_get_x_values(c_archive, x_list) + x_list = [ffi.from_handle(x) for x in x_list] + return x_list + + def _lib_archive_insert_displaced(self, displaced) -> tuple[Any, bool]: + # lib.treap_archive_insert_displaced() does not create new memory, so no ffi.gc(). + lib.treap_archive_insert_displaced( + self._c_archive, displaced, self.all_displaced_p + ) + return displaced, self.all_displaced_p[0] + + +# FIXME: implement maximise +@DocSubstitute() +def UnboundedArchive( # noqa: N802 + dim: int, + *, + maximise: bool | Sequence[bool] = False, + max_children: int = 0, + max_bucket_size: int = 0, + allow_duplicates: bool = True, +) -> BaseUnboundedArchive: + """Create an empty unbounded-size nondominated archive. The type of archive built depends on dim. + + A nondominated archive is a data structure that stores only nondominated points and allows efficient updates with new points. When a new point is added, if the new point is (weakly)-dominated by an existing point in the archive, the point would be rejected. If the new point is not (weakly)-dominated, it will be accepted. Points in the archive (weakly)-dominated by the new one will be removed. If the archive allows duplicates, then duplicated points, i.e., weakly-dominated but not dominated, are allowed in the archive. + + These archives are unbounded, that is, there is no limit in the number of nondominated points that can be stored in the archive. + + The archive can optionally store an arbitrary Python object associated to each point. When the archive allows duplicates, duplicated points may be associated to different Python objects. + + When :code:`dim = 2`, the archive is based on a treap data structure :footcite:p:`AraSei1989rst`. + When :code:`dim > 2`, the archive is based on a ND-Tree :footcite:p:`JasLus2018ndtree`. + + Parameters + ---------- + dim : + ${dim} + maximise : + ${maximise} + max_children : + Maximum number of children used in the ND-Tree (only when :code:`dim > 2`). + max_bucket_size : + Maximum number of solutions stored in each leaf of the ND-Tree (only when :code:`dim > 2`). + allow_duplicates : + Whether to allow or reject duplicated input points (i.e., objective vectors). + + Returns + ------- + Abstract base class that documents the methods available. + + + References + ---------- + .. footbibliography:: + + Examples + -------- + >>> arch = UnboundedArchive(dim=2) + >>> arch.add_many([[10, 10], [5, 20], [20, 5]]) + [True, True, True] + >>> arch.add([11, 11]) + False + + The ``len()`` function applied to the archive returns the number of points: + + >>> len(arch) + 3 + >>> arch.add([5, 5]) + True + >>> len(arch) + 1 + >>> arch.add_many([[6, 4], [4, 6]]) + [True, True] + + We can also iterate over the contents: + + >>> for z, _ in arch: + ... print(z) + [4. 6.] + [5. 5.] + [6. 4.] + + + It is possible to associate `x`-values to each point. + + >>> arch = UnboundedArchive(3) + >>> arch.add_many([[10, 10, 10], [5, 5, 20], [20, 5, 5]], x=["a", "b", "c"]) + [True, True, True] + >>> len(arch) + 3 + >>> arch.add([9, 9, 9], x="d") + True + >>> arch + [[20. 5. 5.] + [ 5. 5. 20.] + [ 9. 9. 9.]] + x = ['c', 'b', 'd'] + + The default is to allow duplicates: + + >>> arch.add([9, 9, 9], x="e") + True + >>> arch + [[20. 5. 5.] + [ 5. 5. 20.] + [ 9. 9. 9.] + [ 9. 9. 9.]] + x = ['c', 'b', 'd', 'e'] + + + The ``in`` keyword can be used to test if a point is in the archive: + + >>> [9, 9, 9] in arch + True + >>> [10, 10, 10] in arch + False + + And we can retrieve the object associated to a particular point: + + >>> arch.get_x_values_of_vector([9, 9, 9]) + ['d', 'e'] + >>> arch.get_x_values_of_vector([10, 10, 10]) + [] + + The contents of the archive can be obtained in different ways: + + >>> arch.get_contents() + (array([[20., 5., 5.], + [ 5., 5., 20.], + [ 9., 9., 9.], + [ 9., 9., 9.]]), ['c', 'b', 'd', 'e']) + >>> arch.get_unique_vectors() + array([[20., 5., 5.], + [ 5., 5., 20.], + [ 9., 9., 9.]]) + >>> arch.get_x_values() + ['c', 'b', 'd', 'e'] + >>> for z, x in arch: + ... print(f"{x} -> {z}") + c -> [20. 5. 5.] + b -> [ 5. 5. 20.] + d -> [9. 9. 9.] + e -> [9. 9. 9.] + + The vectors returned by iterating are read-only: + + >>> for z, x in arch: # doctest: +IGNORE_EXCEPTION_DETAIL +ELLIPSIS + ... z[0] = 1 + Traceback (most recent call last): + ValueError: assignment destination is read-only + + We can also mix maximisation and minimisation objectives: + + >>> arch = UnboundedArchive(dim=2, maximise=[False, True]) + >>> arch.add_many([[10, 10], [9, 9], [0, 0]]) + [True, True, True] + >>> arch.add([10, 9]) + False + >>> arch.dominated_by([0, 11]) + True + >>> arch.dominates([10, 11]) + False + >>> arch + [[ 0. 0.] + [ 9. 9.] + [10. 10.]] + x = [] + + """ + if dim > 2: + return NDTreeArchive( + dim, + maximise=maximise, + max_children=max_children, + max_bucket_size=max_bucket_size, + allow_duplicates=allow_duplicates, + ) + if dim == 2: + return TreapArchive(maximise=maximise) + if dim < 2: + raise ValueError("'dim' cannot be smaller than 2") + + raise NotImplementedError("This type of archive is not implemented yet") diff --git a/python/src/moocore/_docsubstitute.py b/python/src/moocore/_docsubstitute.py index 4e1f142d6..1a141b2ce 100644 --- a/python/src/moocore/_docsubstitute.py +++ b/python/src/moocore/_docsubstitute.py @@ -27,6 +27,8 @@ # ------------------------------------------------------------------------- "whv_rectangles": """Weighted rectangles that will bias the computation of the hypervolume. Maybe generated by :func:`eafdiff()` with ``rectangles=True`` or by :func:`choose_eafdiff()`.""", + # + "dim": """Dimension (number of criteria/objectives) of the input points stored in the archive.""", } diff --git a/python/src/moocore/_ffi_build.py b/python/src/moocore/_ffi_build.py index 3b6bf0a71..d907785c0 100644 --- a/python/src/moocore/_ffi_build.py +++ b/python/src/moocore/_ffi_build.py @@ -30,6 +30,8 @@ #include "whv.h" #include "whv_hype.h" #include "hvapprox.h" +#include "treap_archive.h" +#include "nd_tree.h" """ sources = [ "avl.c", @@ -49,6 +51,7 @@ "nondominated.c", "pareto.c", "rng.c", + "treap_archive.c", "treap2d_fixed_size.c", "whv.c", "whv_hype.c", diff --git a/python/src/moocore/_moocore.py b/python/src/moocore/_moocore.py index ed3c932ad..6ffb0ae2e 100644 --- a/python/src/moocore/_moocore.py +++ b/python/src/moocore/_moocore.py @@ -2,9 +2,9 @@ import os from io import StringIO -from collections.abc import Callable, Sequence +from collections.abc import Callable from numpy.typing import ArrayLike, NDArray # For type hints -from typing import Literal, Any, NamedTuple, TypeAlias +from typing import Literal, Any, NamedTuple import numbers # NOTE: if we ever start using SciPy, we can use @@ -25,14 +25,14 @@ array_1d_of_length_n, is_integer_value, _get_seed_for_c, + _parse_maximise, + MaximiseType, ) from ._docsubstitute import DocSubstitute ## The CFFI library is used to create C bindings. from ._libmoocore import lib, ffi # ty: ignore[unresolved-import] -MaximiseType: TypeAlias = bool | Sequence[bool | int] | NDArray[np.bool_] - # Maximum number of objectives (columns) supported by the C library. These # mirror the limits defined in c/config.h: most functions support up to 255 # (the range of dimension_t == uint_fast8_t), while the hypervolume and @@ -171,11 +171,6 @@ def read_datasets(filename: str | os.PathLike[str] | StringIO) -> np.ndarray: return np.frombuffer(ffi.buffer(data_p, datasize)).reshape(-1, ncols_p[0]) -def _parse_maximise(maximise: MaximiseType, nobj: int) -> NDArray[np.bool_]: - """Convert maximise array or single bool to ndarray format.""" - return array_1d_of_length_n(maximise, nobj, name="maximise").astype(bool) - - def _parse_maximise_to_bool_array( maximise: MaximiseType, nobj: int ) -> ffi.CData: diff --git a/python/src/moocore/_utils.py b/python/src/moocore/_utils.py index 6ef8006e7..69c1cb999 100644 --- a/python/src/moocore/_utils.py +++ b/python/src/moocore/_utils.py @@ -1,9 +1,12 @@ -from numpy.typing import ArrayLike # For type hints -from typing import Any +from collections.abc import Sequence +from numpy.typing import ArrayLike, NDArray # For type hints +from typing import Any, TypeAlias import numpy as np from ._libmoocore import ffi # ty: ignore[unresolved-import] +MaximiseType: TypeAlias = bool | Sequence[bool | int] | NDArray[np.bool_] + def get1_and_is_copied(x: Any, x_: Any) -> tuple[Any, bool]: x_copied = id(x) != id(x_) @@ -27,6 +30,32 @@ def unique_nosort(array: ArrayLike, axis: int | None = None) -> np.ndarray: return uniq[index.argsort()] +def _as_1d_float_array( + f: ArrayLike, dim: int | None = None, name: str = "f" +) -> np.ndarray: + """Convert input to a validated 1D float array.""" + result = np.ascontiguousarray(f, dtype=float) + if result.ndim != 1: + raise ValueError(f"'{name}' must be a 1D objective vector") + if dim is not None and result.shape[0] != dim: + raise ValueError(f"'{name}' must have length {dim}") + return result + + +def _as_2d_float_array( + f: ArrayLike, *, dim: int | None = None, name: str = "f" +) -> np.ndarray: + """Convert input to a validated 2D float matrix.""" + result = np.ascontiguousarray(f, dtype=float) + if result.ndim == 1: + result = result.reshape(1, -1) + if result.ndim != 2: + raise ValueError(f"'{name}' must be a 1D vector or 2D matrix") + if dim is not None and result.shape[1] != dim: + raise ValueError(f"'{name}' must have {dim} columns") + return result + + def np2d_to_double_array( x: np.ndarray, ctype_shape: tuple[str, str] = ("int", "int") ) -> tuple[ffi.CData, ffi.CData, ffi.CData]: @@ -87,3 +116,8 @@ def _get_seed_for_c(seed: int | np.random.Generator | None) -> ffi.CData: if not is_integer_value(seed): seed = np.random.default_rng(seed).integers(2**32 - 2, dtype=np.uint32) return ffi.cast("uint32_t", seed) + + +def _parse_maximise(maximise: MaximiseType, nobj: int) -> NDArray[np.bool_]: + """Convert maximise array or single bool to ndarray format.""" + return array_1d_of_length_n(maximise, nobj, name="maximise").astype(bool) diff --git a/python/src/moocore/libmoocore.h b/python/src/moocore/libmoocore.h index 5f0c0a45e..253b839ff 100644 --- a/python/src/moocore/libmoocore.h +++ b/python/src/moocore/libmoocore.h @@ -77,6 +77,83 @@ double hv_approx_rphi_fang_wang_plus(const double * restrict data, const double * restrict ref, const boolvec * restrict maximise, uint_fast32_t nsamples); + +// archive.h +typedef enum archive_insert_result_t { + ARCHIVE_INSERT_X_MUST_BE_NOT_NULL =..., + ARCHIVE_INSERT_X_MUST_BE_NULL, + ARCHIVE_INSERT_MEMORY_ERROR, + ARCHIVE_INSERT_REJECTED, + ARCHIVE_INSERT_ACCEPTED, + ARCHIVE_INSERT_DUPLICATED, +}; +typedef struct VoidList { + uint32_t n; + uint32_t cap; + const void ** list; +} VoidList; + +// treap_archive.h +typedef struct TreapArchive TreapArchive; +typedef struct TreapNode TreapNode; + +TreapArchive * treap_archive_new(void); +void treap_archive_free(TreapArchive * t); +bool treap_archive_find_exact_vector(const TreapArchive * t, const double * z); +VoidList * treap_archive_find_solutions_of_vector(const TreapArchive * restrict tree, const double * restrict z); +bool treap_archive_dominated_by(const TreapArchive * self, const double * z); +bool treap_archive_dominates(const TreapArchive * self, const double * z); +int treap_archive_add(TreapArchive *self, const double * z, const void * x, bool check, TreapArchive **displaced); +void treap_archive_insert_displaced(TreapArchive *t, TreapArchive *incoming, bool *all_displaced); +void treap_archive_get_unique_vectors(const TreapArchive *t, const double ** z_list); +void treap_archive_get_x_values(const TreapArchive *t, const void ** x_list); +bool treap_archive_has_x_values(const TreapArchive *t); +void treap_archive_get_contents(const TreapArchive *t, double * z_list, const void ** x_list); +size_t treap_archive_total_size(const TreapArchive *t); +size_t treap_archive_unique_size(const TreapArchive *t); + +typedef struct TreapIterator TreapIterator; +TreapIterator *treap_archive_iter_new(const TreapArchive *); +int treap_archive_iter_next(TreapIterator *it, const double **z, const void **x); +void treap_archive_iter_free(TreapIterator *it); + +// nd_tree.h +typedef struct FlexBucket FlexBucket; +void flex_bucket_free(FlexBucket * bucket); +size_t flex_bucket_unique_len(const FlexBucket * bucket); +size_t flex_bucket_total_len(const FlexBucket * bucket); +void flex_bucket_get_unique_vectors(const FlexBucket * bucket, const double ** z_list); +void flex_bucket_get_x_values(const FlexBucket * bucket, const void ** x_list); + +typedef struct NDTreeConfig { + uint8_t max_children; + uint8_t max_bucket_size; + bool allow_duplicates; +} NDTreeConfig; + +typedef struct NDTreeArchive NDTreeArchive; +typedef struct NDTreeNode NDTreeNode; +NDTreeArchive * ndtree_new(dimension_t dim, uint8_t max_children, uint8_t max_bucket_size, bool allow_duplicates); +void ndtree_free(NDTreeArchive *self); +bool ndtree_has_x_values(const NDTreeArchive *t); +size_t ndtree_total_size(const NDTreeArchive *self); +size_t ndtree_unique_size(const NDTreeArchive *self); +bool ndtree_dominates(const NDTreeArchive *self, const double *z); +bool ndtree_dominated_by(const NDTreeArchive * self, const double * z); +int ndtree_add(NDTreeArchive *self, const double *z, const void *x, bool check, FlexBucket **displaced); +int ndtree_insert_displaced(NDTreeArchive *tree, FlexBucket **displaced_p, bool *all_displaced); +bool ndtree_find_exact_vector(const NDTreeArchive *self, const double *z); +VoidList * ndtree_find_solutions_of_vector(const NDTreeArchive * restrict tree, const double * restrict z); +void ndtree_get_contents(const NDTreeArchive *self, double * z_list, const void ** x_list); +void ndtree_get_unique_vectors(const NDTreeArchive *self, const double ** z_list); +void ndtree_get_x_values(const NDTreeArchive *arch, const void ** x_list); + +typedef struct NDTreeIterator NDTreeIterator; +NDTreeIterator *ndtree_iter_new(const NDTreeArchive *); +int ndtree_iter_next(NDTreeIterator *it, const double **z, const void **x); +void ndtree_iter_free(NDTreeIterator *it); + + /* typedef ... hype_sample_dist; hype_sample_dist * hype_dist_unif_new(unsigned long seed); diff --git a/python/tests/conftest.py b/python/tests/conftest.py index fd1ff8e1a..715513067 100644 --- a/python/tests/conftest.py +++ b/python/tests/conftest.py @@ -70,3 +70,21 @@ def _call(fn, *args, immutable=None, **kwargs): return result return _call + + +class AutoIncrement: + """Useful for counting.""" + + def __init__(self, start=0): + self._x = start - 1 + + def __call__(self): + """Return current value and increment counter.""" + self._x += 1 + return self._x + + +@pytest.fixture +def count(): + """Instantiate a counter of type AutoIncrement().""" + return AutoIncrement() diff --git a/python/tests/test_archiving.py b/python/tests/test_archiving.py new file mode 100644 index 000000000..2e554c2e7 --- /dev/null +++ b/python/tests/test_archiving.py @@ -0,0 +1,468 @@ +# ruff: noqa: D100, D103, N802 +import pytest +import numpy as np +from numpy.testing import ( + assert_array_equal, +) +import moocore + + +def no_print(x): + return + + +def extend_point(z, dim): + z = np.asarray(z) + z_ext = np.zeros(dim) + z_ext[-len(z) :] = z + return z_ext + + +def test_UnboundedArchive2D_add(): + archive = moocore.UnboundedArchive(dim=2) + assert archive.add([1, 10]) + assert len(archive) == 1 + assert archive.add([10, 1]) + assert len(archive) == 2 + assert archive.add([5, 5]) + assert len(archive) == 3 + assert archive.unique_len() == 3 + # Duplicates increase len() + assert archive.add([5, 5]) + assert len(archive) == 4 + assert archive.unique_len() == 3 + assert archive.add([4, 4]) + assert len(archive) == 3 + assert not archive.add([5, 5]) + assert len(archive) == 3 + assert archive.add([1, 1]) + assert len(archive) == 1 + + # Test mixing up x = None and x not None. + with pytest.raises(ValueError, match=r"'x' must be None"): + archive.add([1, 1], x=2) + + with pytest.raises(ValueError, match=r"'x' must be None"): + archive.add([0, 0], x=2) + + archive = moocore.UnboundedArchive(dim=2) + archive.add([1, 10], x="a") + with pytest.raises(ValueError, match=r"'x' cannot be None"): + archive.add([10, 1]) + + +def test_UnboundedArchive2D_dominance(): + archive = moocore.UnboundedArchive(dim=2) + assert_array_equal( + archive.add_many([[1, 10], [5, 5], [10, 1]]), [True, True, True] + ) + # Test __contains__ + assert [5, 5] in archive + assert [4, 4] not in archive + + assert not archive.dominated_by([4, 4]) + assert not archive.dominated_by([5, 5]) + assert not archive.dominated_by([6, 6]) + assert archive.dominated_by([1, 1]) + + assert archive.dominates([6, 6]) # One point in the archive dominates. + assert archive.dominates([10, 10]) # Whole archive dominates. + assert not archive.dominates( + [4, 4] + ) # One point in the archive is dominated. + assert not archive.dominates( + [5, 5] + ) # One point in the archive is weakly dominated. + assert not archive.dominates([6, 4]) # Mutually non-dominated + assert not archive.dominates([1, 1]) + + assert archive.add([1, 1]) + assert len(archive) == 1 + assert not archive.dominated_by( + [1, 1] + ) # Duplicated do not count as dominance. + assert not archive.dominated_by([2, 1]) + assert not archive.dominated_by([1, 2]) + assert archive.dominated_by([0, 1]) + assert archive.dominated_by([1, 0]) + + assert not archive.dominates( + [1, 1] + ) # Duplicated do not count as dominance. + assert not archive.dominates([1, 0]) + assert not archive.dominates([0, 1]) + assert archive.dominates([2, 1]) + assert archive.dominates([1, 2]) + + +def test_UnboundedArchive2D_displaced(count): + dim = 2 + pf = moocore.UnboundedArchive(dim) + + accepted, displaced = pf._add_with_displaced_raw( + [1, 10], x=count(), check=False, discard=True + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [10, 1], x=count(), check=False, discard=True + ) + assert accepted and displaced is None + + assert pf.dominated_by([1, 1]) + assert not pf.dominated_by([2, 9]) + + accepted, displaced = pf._add_with_displaced_raw( + [2, 9], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + + assert not pf.dominated_by([2, 9]) + assert not pf.dominated_by([9, 2]) + assert not pf.dominates([2, 9]) + assert not pf.dominates([9, 2]) + assert pf.dominates([3, 10]) + + accepted, displaced = pf._add_with_displaced_raw( + [3, 8], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [3, 8], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [2, 10], x=count(), check=True, discard=False + ) + assert not accepted and displaced is None + accepted, displaced_1 = pf._add_with_displaced_raw( + [0, 10], x=count(), check=True, discard=False + ) + assert accepted and displaced_1 is not None + accepted, displaced_2 = pf._add_with_displaced_raw( + [2, 8], x=count(), check=True, discard=False + ) + assert accepted and displaced_2 is not None + + z, x = pf.get_contents() + no_print(z) + no_print(x) + + pf2 = moocore.UnboundedArchive(dim) + accepted, displaced = pf2._add_with_displaced_raw( + [0, 11], x=count(), check=False, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [11, 1], x=count(), check=False, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [10, 3], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [4, 9], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + z, x = pf2.get_contents() + no_print(z) + no_print(x) + displaced = pf2._add_displaced_raw(displaced_1) + assert displaced is None + displaced = pf2._add_displaced_raw(displaced_2) + assert displaced is not None + no_print(displaced) + z, x = pf2.get_contents() + no_print(z) + no_print(x) + + +@pytest.mark.parametrize("dim", [3, 4, 5, 10]) +def test_UnboundedArchive_add(dim): + + archive = moocore.UnboundedArchive(dim=dim) + + def archive_add_extended(z, **kwargs): + z_dim = extend_point(z, dim) + return archive.add(z_dim, **kwargs) + + def assert_add(z, expect_res, expect_len): + assert archive_add_extended(z) == expect_res + assert len(archive) == expect_len + + assert_add([1, 10, 1], True, 1) + assert_add([10, 1, 10], True, 2) + assert_add([5, 5, 5], True, 3) + assert archive.unique_len() == 3 + # Duplicates increase len() + assert_add([5, 5, 5], True, 4) + assert archive.unique_len() == 3 + assert_add([4, 4, 4], True, 3) + assert_add([5, 5, 5], False, 3) + assert_add([1, 1, 1], True, 1) + + # Test mixing up x = None and x not None. + with pytest.raises(ValueError, match=r"'x' must be None"): + archive_add_extended([2, 0, 1], x=2) + + with pytest.raises(ValueError, match=r"'x' must be None"): + archive_add_extended([1, 1, 1], x=2) + + with pytest.raises(ValueError, match=r"'x' must be None"): + archive_add_extended([0, 0, 0], x=2) + + archive = moocore.UnboundedArchive(dim=dim) + archive_add_extended([1, 10, 1], x="a") + with pytest.raises(ValueError, match=r"'x' cannot be None"): + archive_add_extended([10, 1, 10]) + + +# FIXME: How to generalize this test to any number of dimensions? +def test_UnboundedArchive3D_dominance(): + + archive = moocore.UnboundedArchive(dim=3) + assert_array_equal( + archive.add_many([[1, 10, 1], [5, 5, 5], [10, 1, 10]]), + [True, True, True], + ) + # Test __contains__ + assert [5, 5, 5] in archive + assert [4, 4, 4] not in archive + + assert not archive.dominated_by([4, 4, 4]) + assert not archive.dominated_by([5, 5, 5]) + assert not archive.dominated_by([6, 6, 6]) + assert archive.dominated_by([1, 1, 1]) + + assert archive.dominates([6, 6, 6]) # One point in the archive dominates. + assert archive.dominates([10, 10, 10]) # Whole archive dominates. + assert not archive.dominates( + [4, 4, 4] + ) # One point in the archive is dominated. + assert not archive.dominates( + [5, 5, 5] + ) # One point in the archive is weakly dominated. + assert not archive.dominates([11, 1, 1]) # Mutually non-dominated + assert not archive.dominates([1, 1, 1]) + + assert archive.add([1, 1, 1]) + assert len(archive) == 1 + assert not archive.dominated_by( + [1, 1, 1] + ) # Duplicated do not count as dominance. + assert not archive.dominated_by([2, 1, 1]) + assert not archive.dominated_by([1, 2, 1]) + assert archive.dominated_by([0, 1, 0]) + assert archive.dominated_by([1, 0, 0]) + + assert not archive.dominates( + [1, 1, 1] + ) # Duplicated do not count as dominance. + assert not archive.dominates([1, 0, 0]) + assert not archive.dominates([0, 1, 0]) + assert archive.dominates([2, 1, 20]) + assert archive.dominates([1, 2, 4]) + + +# FIXME: How to generalize this test to any number of dimensions? +def test_UnboundedArchive3D_displaced(count): + dim = 3 + pf = moocore.UnboundedArchive(dim) + + accepted, displaced = pf._add_with_displaced_raw( + [1, 11, 10], x=count(), check=False, discard=True + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [10, 1, 10], x=count(), check=False, discard=True + ) + assert accepted and displaced is None + + assert pf.dominated_by([1, 1, 1]) + assert not pf.dominated_by([2, 9, 1]) + + accepted, displaced = pf._add_with_displaced_raw( + [2, 9, 1], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + + assert not pf.dominated_by([2, 9, 1]) + assert not pf.dominated_by([9, 2, 1]) + assert not pf.dominates([2, 9, 1]) + assert not pf.dominates([9, 2, 1]) + assert pf.dominates([3, 10, 10]) + + accepted, displaced = pf._add_with_displaced_raw( + [3, 8, 10], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [3, 8, 10], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf._add_with_displaced_raw( + [2, 10, 10], x=count(), check=True, discard=False + ) + assert not accepted and displaced is None + accepted, displaced_1 = pf._add_with_displaced_raw( + [0, 10, 9], x=count(), check=True, discard=False + ) + assert accepted and displaced_1 is not None + accepted, displaced_2 = pf._add_with_displaced_raw( + [2, 8, 1], x=count(), check=True, discard=False + ) + assert accepted and displaced_2 is not None + + z, x = pf.get_contents() + no_print(z) + no_print(x) + + pf2 = moocore.UnboundedArchive(dim) + accepted, displaced = pf2._add_with_displaced_raw( + [ + 1, + 10, + 11, + ], + x=count(), + check=False, + discard=False, + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [10, 1, 11], x=count(), check=False, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [11, 3, 9], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + accepted, displaced = pf2._add_with_displaced_raw( + [4, 11, 8], x=count(), check=True, discard=False + ) + assert accepted and displaced is None + z, x = pf2.get_contents() + no_print(z) + no_print(x) + displaced = pf2._add_displaced_raw(displaced_1) + assert displaced is None + displaced = pf2._add_displaced_raw(displaced_2) + assert displaced is not None + no_print(displaced) + z, x = pf2.get_contents() + no_print(z) + no_print(x) + + +@pytest.mark.parametrize("dim", [2, 3, 5, 10]) +def test_UnboundedArchive_random(dim, count): + """Randomized tests for any number of dimensions.""" + seed = np.random.default_rng().integers(2**32 - 2) + print(f"seed={seed}") + rng = np.random.default_rng(seed) + points = rng.integers(0, 100, (1000, dim)) + archive = moocore.UnboundedArchive(dim) + for p in points: + archive.add(p, x=count()) + + z, x = archive.get_contents() + points = moocore.filter_dominated(points, keep_weakly=True) + z = z.astype(int) + assert_array_equal(points, z[np.argsort(x), :]) + + +@pytest.mark.parametrize("dim", [2, 3]) +def test_invalid_iterator(dim): + archive = moocore.UnboundedArchive(dim) + rng = np.random.default_rng() + z = rng.uniform(size=(3, dim)) + archive.add_many(z) + + with pytest.raises( + RuntimeError, match=r"invalid 'BaseUnboundedArchive' iterator" + ): + for z, x in archive: + archive.add(np.full(dim, 0)) + + # archive.add() succeeded. + assert len(archive) == 1 + + # Test that the iterator keeps the archive alive. + iterator = iter(archive) + del archive + z, x = next(iterator) + assert len(z) == dim + assert x is None + + +@pytest.mark.parametrize("dim", [2, 3]) +def test_maximise(dim): + maximise = np.array([True, False, True]) + n = 10 + z = np.random.uniform(size=(n, dim)) + z_orig = z.copy() + + arch = moocore.UnboundedArchive(dim=dim, maximise=maximise[:dim]) + arch.add_many(z, x=np.arange(len(z))) + for z, x in arch: + assert np.array_equal(z, z_orig[x, :]) + for z, x in arch: + assert np.array_equal(z, z_orig[x, :]) + + z, x = arch.get_contents() + assert np.array_equal(z, z_orig[np.array(x), :]) + + z, x = arch.get_contents() + assert np.array_equal(z, z_orig[np.array(x), :]) + + +@pytest.mark.parametrize("dim", [2, 3]) +def test_find_exact(dim): + z = moocore.generate_ndset(1000, dim, method="simplex", integer=True) + arch = moocore.UnboundedArchive(dim=dim) + arch.add_many(z, x=np.arange(len(z))) + for i in [1, 500, 990]: + res = arch.get_x_values_of_vector(z[i, :]) + assert res[0] == i + + y = z.max(axis=0) + res = arch.get_x_values_of_vector(y) + assert len(res) == 0 + + +@pytest.mark.parametrize("dim", [2, 3]) +def test_empty_archive(dim): + """Test that operations on an empty archive works as expected.""" + arch = moocore.UnboundedArchive(dim=dim) + z = np.full(dim, 1) + + assert len(arch) == 0 + assert arch.unique_len() == 0 + assert not arch.has_x_values() + assert z not in arch + assert not arch.dominates(z) + assert not arch.dominated_by(z) + x = arch.get_x_values_of_vector(z) + assert len(x) == 0 + for z, _ in arch: + assert False + z, x = arch.get_contents() + assert len(z) == 0 + assert len(x) == 0 + z = arch.get_unique_vectors() + assert len(z) == 0 + x = arch.get_x_values() + assert len(x) == 0 + + +def test_ndtree_dominated_by(): + dim = 3 + arch = moocore.UnboundedArchive(dim=dim) + n = 1000 + z = np.random.uniform(size=(n, dim)) + # We cannot use add_many() because it may filter before insertion. + for z_i in z: + arch.add(z_i) + nondom = moocore.filter_dominated(z) + ideal = nondom.min(axis=0) + assert arch.dominated_by(ideal) diff --git a/r/src/install.libs.R b/r/src/install.libs.R index ac4a6e39f..950ba3717 100644 --- a/r/src/install.libs.R +++ b/r/src/install.libs.R @@ -1,4 +1,5 @@ files <- c( + "archiver", "dominatedsets", "eaf", "epsilon", From 35ede98fd7088ddc7a6b3fc8fb89efc9caa93081 Mon Sep 17 00:00:00 2001 From: MLopez-Ibanez <2620021+MLopez-Ibanez@users.noreply.github.com> Date: Fri, 18 Sep 2026 01:55:58 +0100 Subject: [PATCH 9/9] python/ Add archiving benchmarks. * benchmarks/bench.py: Update. * benchmarks/bench_archive_unbounded.py: New. * doc/source/benchmarks_archiving.rst: New. * doc/source/benchmarks.inc.rst: Link to previous. * doc/source/_static/bench/unbarchive_*.png. New files. --- python/benchmarks/bench_archive_unbounded.py | 124 ++++++++++++++ ...rchive_add_bench-cliff-concave-3d-time.png | Bin 0 -> 43266 bytes ...rchive_add_bench-cliff-concave-4d-time.png | Bin 0 -> 42700 bytes ...archive_add_bench-cliff-convex-3d-time.png | Bin 0 -> 43585 bytes ...archive_add_bench-cliff-convex-4d-time.png | Bin 0 -> 41696 bytes ...chive_add_bench-glas2017,c=0.5-2d-time.png | Bin 0 -> 51258 bytes ...chive_add_bench-glas2017,c=0.5-3d-time.png | Bin 0 -> 43838 bytes ...chive_add_bench-glas2017,c=0.5-4d-time.png | Bin 0 -> 45182 bytes ...chive_add_bench-glas2017,c=2.0-2d-time.png | Bin 0 -> 51754 bytes ...chive_add_bench-glas2017,c=2.0-3d-time.png | Bin 0 -> 45746 bytes ...chive_add_bench-glas2017,c=2.0-4d-time.png | Bin 0 -> 46067 bytes ..._add_bench-hypercube-ndsort=-1-2d-time.png | Bin 0 -> 50006 bytes ..._add_bench-hypercube-ndsort=-1-3d-time.png | Bin 0 -> 46216 bytes ..._add_bench-hypercube-ndsort=-1-4d-time.png | Bin 0 -> 44855 bytes ...e_add_bench-hypercube-ndsort=1-2d-time.png | Bin 0 -> 49581 bytes ...e_add_bench-hypercube-ndsort=1-3d-time.png | Bin 0 -> 46362 bytes ...e_add_bench-hypercube-ndsort=1-4d-time.png | Bin 0 -> 48217 bytes ...ve_add_bench-hypercube-uniform-2d-time.png | Bin 0 -> 51673 bytes ...ve_add_bench-hypercube-uniform-3d-time.png | Bin 0 -> 42627 bytes ...ve_add_bench-hypercube-uniform-4d-time.png | Bin 0 -> 44449 bytes ...d_bench-hypercube-uniform-rep4-2d-time.png | Bin 0 -> 49918 bytes ...d_bench-hypercube-uniform-rep4-3d-time.png | Bin 0 -> 44140 bytes ...d_bench-hypercube-uniform-rep4-4d-time.png | Bin 0 -> 46709 bytes ...ive_add_bench-inverted-simplex-2d-time.png | Bin 0 -> 51149 bytes ...ive_add_bench-inverted-simplex-3d-time.png | Bin 0 -> 46227 bytes ...ive_add_bench-inverted-simplex-4d-time.png | Bin 0 -> 40882 bytes ...dd_bench-within-concave-sphere-2d-time.png | Bin 0 -> 47491 bytes ...dd_bench-within-concave-sphere-3d-time.png | Bin 0 -> 45183 bytes ...dd_bench-within-concave-sphere-4d-time.png | Bin 0 -> 45589 bytes python/doc/source/benchmarks.inc.rst | 5 + python/doc/source/benchmarks_archiving.rst | 162 ++++++++++++++++++ .../source/reference/functions.archiving.rst | 6 - python/doc/source/whatsnew/index.rst | 1 + 33 files changed, 292 insertions(+), 6 deletions(-) create mode 100644 python/benchmarks/bench_archive_unbounded.py create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-cliff-concave-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-cliff-concave-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-cliff-convex-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-cliff-convex-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=0.5-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=0.5-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=0.5-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-4d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-2d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-3d-time.png create mode 100644 python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-4d-time.png create mode 100644 python/doc/source/benchmarks_archiving.rst diff --git a/python/benchmarks/bench_archive_unbounded.py b/python/benchmarks/bench_archive_unbounded.py new file mode 100644 index 000000000..fd6d27506 --- /dev/null +++ b/python/benchmarks/bench_archive_unbounded.py @@ -0,0 +1,124 @@ +from bench import Bench + +import itertools +import numpy as np +import matplotlib.pyplot as plt + +import moocore + +from moarchiving import get_mo_archive as moarch_get_mo_archive + +# FIXME: How to test both float and Fractions? +moarch_get_mo_archive.hypervolume_computation_float_type = float +moarch_get_mo_archive.hypervolume_final_float_type = float + +datasets = { + "hypercube-uniform": lambda max_size, n_obj, rng: moocore.generate_sequence( + max_size, n_obj, method="cube", seed=rng + ), + "hypercube-uniform-rep4": lambda max_size, n_obj, rng: ( + moocore.generate_sequence( + int(max_size / 4), n_obj, method="cube", seed=rng, n_rep=max_size + ) + ), + "hypercube-ndsort=1": lambda max_size, n_obj, rng: ( + moocore.generate_sequence( + max_size, n_obj, method="cube", ndsort=1, seed=rng + ) + ), + "hypercube-ndsort=-1": lambda max_size, n_obj, rng: ( + moocore.generate_sequence( + max_size, n_obj, method="cube", ndsort=-1, seed=rng + ) + ), + "within-concave-sphere": lambda max_size, n_obj, rng: ( + moocore.generate_sequence( + max_size, n_obj, method="sphere", r_min=0.5, seed=rng + ) + ), + "inverted-simplex": lambda max_size, n_obj, rng: moocore.generate_ndset( + max_size, n_obj, method="inverted-simplex", seed=rng + ), + "glas2017,c=0.5": lambda max_size, n_obj, rng: moocore.generate_sequence( + max_size, n_obj, method="glas2017", c_value=0.5, seed=rng + ), + "glas2017,c=2.0": lambda max_size, n_obj, rng: moocore.generate_sequence( + max_size, n_obj, method="glas2017", c_value=2.0, seed=rng + ), + "cliff-convex": lambda max_size, n_obj, rng: moocore.generate_ndset( + max_size, n_obj, method="cliff-convex", seed=rng + ), + "cliff-concave": lambda max_size, n_obj, rng: moocore.generate_ndset( + max_size, n_obj, method="cliff-concave", seed=rng + ), +} + +n_repeats = 10 + +title = "Adding a point to the archive" +file_prefix = "unbarchive_add" +max_exp = {2: 19, 3: 17, 4: 13} +print(f"Running benchmark: {title}") +names = datasets.keys() +n_objs = [2, 3, 4] +for n_obj, name in itertools.product(n_objs, names): + if n_obj == 2 and name.startswith("cliff"): + continue + test_archive_sizes = 2 ** np.arange(1, max_exp[n_obj]) + max_size = test_archive_sizes[-1] + + # This is a bit wasteful because we rebuild the archive from scratch for + # each size. On the other hand, it is probably less sensitive to noise. + setup = { + "moocore (UnboundedArchive)": lambda z: dict( + moa=moocore.UnboundedArchive(dim=n_obj), z=z + ), + "moarchiving (float)": lambda z: dict( + moa=moarch_get_mo_archive(n_obj=n_obj), z=z.tolist() + ), + } + benchmarks = { + "moocore (UnboundedArchive)": lambda moa, z: [moa.add(p) for p in z], + "moocore (filter_dominated)": lambda z: moocore.filter_dominated(z), + "moarchiving (float)": lambda moa, z: [moa.add(p) for p in z], + } + # Divide time by number of points, so that we report the average time per + # point for different input sizes. + normalise = ["moocore (UnboundedArchive)", "moarchiving (float)"] + + if n_obj == 2: + setup["moocore (NDTree)"] = lambda z: dict( + moa=moocore._archive.NDTreeArchive(dim=n_obj), z=z + ) + benchmarks["moocore (NDTree)"] = lambda moa, z: [moa.add(p) for p in z] + normalise.append("moocore (NDTree)") + + bench = Bench( + name=f"{name}-{n_obj}d", + n=test_archive_sizes, + bench=benchmarks, + setup=setup, + reps=1, + max_time=5, + ) + + for r in range(n_repeats): + # We generate the dataset outside setup because we want to do it once + # per repetition, not once per benchmark. + rng = np.random.default_rng(42 + r) + z = datasets[name](max_size, n_obj, rng) + bench(lambda n: z[:n]) + + bench.normalise_times(normalise) + + bench.plots( + file_prefix=file_prefix, + title=title, + log="xy", + xlabel="Number of points", + logx_base=2, + show_ci=True, + ) + +if "__file__" not in globals(): # Running interactively. + plt.show() diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-cliff-concave-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-cliff-concave-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..28f646b70767a780a45d5a7fe3494a631738690b GIT binary patch literal 43266 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�fdAfVHn;OM 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 bB1SumC+h41GbRrABj8U>SzD=C!6M*4I6z2r literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-cliff-convex-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-cliff-convex-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab0549eefe37e61d458223178f9647b2de820bb GIT binary patch literal 43585 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,<>|1*#}|c;7CCdV=)j4BJzQe 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

dJ~*U3WJSpQ-{Z}&MQ^-WoFvTJJ?FTz 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

fMY;1rp7uSF z?^}qu=|v8Nvcw4lQzt}v(fL*jjllO}KH3L#8tyw~on88SV+9ipXY*zN;*|C@O1uC+ zXmC9;ee+GL{nbG_iwiq+|?5g&Yh0UH5H z-9GoGi`lGw$^CfU3tce^v9So#g8s@?hv$cuTdQYzEKp6)lC`p}1FoYaYnLKKhespG zmW-d$XyKhffm9y1}JLPbRd$|ECB zJ4d_QgSG%d598FN-L*Y`rePK*w(c#sY3LY(O4X4r2Agu!lftR1-lWQlHOUZvlvz_uY_qGze%IzGn)8j^?b|?wB+{-g z^dV;h2WvjGLA<<|Iy?NX6b0N8G?8j9#cv7=M4LJ`hLt0+@Fo_~1n`MVDg4uB5OgF4 z@a&H`2(pvVi}G2n%$y(B@V1wxt1!xs>HHNZ!3+c(4c(>9uUe{F(1%VPStsk$wslO5 z_32&PR%8&Pr9mB5tdTebR&&rlS6Ep1n>swE(1-Qn2{=b4+QE@rt7Axrk@)D4q;Kcn{$dFpZduewf{wk7IgTD&4{Adsh)@`^H~P$*>e&p{>^?l6hTW=} zX=I%o%ctXjhNiZYCVFdFgoLH>LBXn#l@%X=fP#n)AHr%BA?^!hLDmts2!@+5d8kn_ zA<9=HAnx)_l(IZsBT+&*Td!?(2R!Z4+IP6Q6OK=)r_B9ov%MAtB&}C<}1=tS$ zg*(vjcb;=6Jvpu#&uzCRxmN`6^`OJ61n@hppa=N-C$LsSN*Obi%JDAe5u2kB<25Vd z7nks#n#ts(toYFWbUb3Ie#GXQUCT^a|Ij;6MoF;?tBsM(ks)BgNC{dPu)QS`C$G(D zlN+24ey}+mkR(uNNlun(3kDejlhT$JfowUGeqgy1o#gX_htAd@ zISOPOa{Ydk#j*mbEjeGLG^{^k%<(;1L>USc9*EmnfhbW=C47h(Aa`LX<{L}>)0f>) z!sxj@3GrbuMDB=jkZyth_5vN^gx^Y7IxH;T9z|Y_)BM?H=Q5#qSkl@i_`wgLwJVAT zmMA^E>Msd+vT-EZv#S!fS-0e@GONDjbs5$8hkeg%5} z9ZR`RH^HBq3C=t4nI!KgV+y3=DYN$`PJMgfox-L*v_rJ<(ebvCA`gehv;NeDop# zwO=c$tA+9 z98(rx^nhswv+BVspSO_Nk)-Xo=n}7vm#-0W!pha1r5@{uS1Kmw#XtG|pr%2X^fRfp z#<@@C{!!ZMq2ZwgyZ%VNT~QO3Dyjb56bSd}gHUIC2wf{|TK5t};zqSA2)=!LHc2D` z6}y*qBuL>DN?{p5^(P-Vf<(4+Gpk)|Sknm8WfgvNyVy>TDS;JbR~~u~TDe^rSG4^% z6*tE1B?3CIp2t*#l+dc(AhGTKO3M%Px$#3cJ7bde`UAJkg>F9&i#(R&wzsE{1{FS& zM@wF@YQVvCjk@u~Nszc5$OVJAcmY^Chz>!GZrkdcT&n^&NwKc#O`{g7&VWF}wrt?{ z0LlCMYhHE!{Q_$$qe*rxcaD&zA%JE#P|9hk#=(XjY|n#(pcGMcv=`_aWgS`OUOx%$f*}LkC{3c zS{RzTY}LpwKZ1|b3Z)OUf(;pMb_zi!#dMlh5zT0}*rBEsXsi{KfrqVq#!yyPHk9WS z7h*of_K2mXD9effPBJflh%y0Hz{H}5Xz6xCXRHXDtLE6p1CaW@H@%B*4C*ZGST1-Hg#+~634(J%O2c6X0cdJ*0W>4b zOiYV#>Q+TXeP#$AGjNL^bKdrICZcAGt5Q;r3R?kHllNPGzrMi=u^GfWRnzP}Z98N1 zK?O~8V(XKUWCY7cr|&;#f%{qow`c|30c;}R1=8vduYRn}IywL)Y>{bI50Mm8&{ISz z{y;6>MnSzwJ-xvb?yh%PyD2=x)n_xANM}W35h85voKa4>o-9P9Pe{pD>{3P2Yk7b^ zIsN1d4!;X2Iz*k#+v0cKTko;0L~xODywUV$Dh%8Gkm!`V15Llx$g{lNaFDc5+TxAQ z+&S({N!@01a{KM*aVdAyeOQ)_Ew0w@Pc@QM89~yGxT|yebL7h;P&wg`chV!E@%iwS z!$kLAnL+jjFPMU-ySTw)fS^kOzM1ud*%WA=Btp;;H^d`SU$o7pb6xIT!e}Q+*x`&9 z+}T*pyhA;wV&DsNI}>erx?4H4a-|m0xZ6`HH;|&KnDkrayq2_2vA%<-!Lb2%oqlqe zrAEw^wCQlx2yyi@u;MomUSMnh!hf%ByBN5DBfbC_1lO#jX{L^S)D?8E_ru_0f%(pW zr}KLnyClAR+P>$uzQaYR(Md>BL2fN(&0o5PFnc&KHnOGTS(+S3bfc)o7d**;8tssq zXrlQsg=G1HiXdFs&N=IfUeaHN$CcI=Iv9$G0Ypok%Nx85baFh%XSdD=o?kkJ1rtZ^ zjwgyk*(ST`B__bwcK)E&`jBY%Mp67?%-sUo5z{fwym*=3|q!w4RsK z{CxEj)wST*^m!$#UC}lhR`xcw?T#3$c$$&o@qld5o$%=s+C5F%a6`QV2#|Sng!346 z%VEkrpo99C4`H8r+Wb(pSCBZKs5y%KxlwW&*^j@XbP~J7T|$x*URkQmV%l1uJH}E{pk6z#$qTD#<C5kC!tdm{2nY$7P7ZpmiLNj<7vkf2rGXfyHrq=&7qD|+eO^jD$xIaEWfsd{?Y&|fOIybVy z9Pii2R>e$^YM!K;)d>~nYN}u_TV21}URNtpLd$LeSw{;f@^i#Ds2WUb=eUm>_LDq} zwRak8M%V!p)VGJLMXFydhRvjiDC6Uj$#9|>qFs(M6j}uz9~#GDrj{=E&8|-JCJ}iJ zpp6PxabKZZpr=BJ-{C{59APY&kBPZesMZD2t-*Vupo0lw-8nJM`k9+aQri~=TAlh! zz>~mMYNP0T(P9g>iJXq-BK#dvW=QbT&{gBiRRGWnvF&EOVXsB$@~I=LJu#zHiz~%d zQKrSQBNZO_NIHfn84E?x39NBc8%9-$K`PYi1axrIVqzkHZqhc_Ps$5zmG=Cso(qTAcoXAAH{@xv}tT~ zjzZLHu5D=ha!npD ziE>UrOJ|LXprsl|1(Hj*!i22&l&98iO-xZXEx@$a(p zheVa=4(L9H3@n~LB@$z|rC9F)bteK(d-k&>eS1F4xWir~&8m3BBsNvn zrZ4P+Aa^;k-CMC~Tq%-;+CZ`NEHbTn;3}q<_Gk*8UYwEfBa4VJC}|kp2K*an}(9M~~N`6GPjhq2Io9IHC5*m83Ff48C5~3hc zDv#ZpN)i8n$F3j%phSy*QIMxDNUYy8H#h~i(^hmRyf#bd_)&Kvu0!hm8_C%)K~-de z3A|vYEVxBFkSfIk+XZx6m#fBG=gP|v9C~bO z_ET*(b!oDqyXKL+ptB0nTv(eMbV)ZaZAv5Bnb%mS2LTETS5j#PRmFws+E8L&yj47H zFYZ24N4{#1e8H)VFHF^NQF(WR2JLybeHg{ooSZS#JH^P*P}R<|e-+M(uubD4w!2o> z^3g)pc-5Pgr|D-$&x~3zgUPlU3-AZ`*h*hHeYhdcdhNwpHPMj(?Vn~{DI9bR6ZQXm*>`nO=@%=SGfUFf}WV{3% z-+(%RSjEe7h6lyGRJWnTCcbZKKOSrFvh_)yx2}F=6*_6C3Y5-*yUTi1zHcmAD#ZR{ zx0nhZZ{KDKUOmcIQ=9I?-snWJKwIDQ_}EDK*=O<^+wyA^bQ)=b8Lf}@@j8sX26K{G z@LaQBTK=dNk_h)ut{6rC&2MuRZxh!??4vtTFvTK&O3%=l%e?Mo91x-}!!-5DLKDei zxYBbG4n#tS}zNeU~(+6foAXnD|)}a@=58I#%=};4Lg0L#I_Eo6@lkm^XEInqlZL=HQ~U;Jlv~@zIwdi6-&U#!&>Dy_t#x-lg|V_- z<1>z5Z{ArIWRkYCGon!1(rhU<6b!mYVtWaYG-%1z-!-1kP5Nghel66lmEn3;rOIUu z<|1`53Is=!8&wiXw*+y2euKH1oHd)Pm)m|%UzeB&R1<+zdP3d{evxp3v%+TTUQ>6BvsLItlFl;}h zZ(`Fs_HIh13btggb^%p@h19z~Y6C&{qj<^zn|u*9RolE81^Il7CgtED)?96)K)w9} zsTwoB7|qnAm8p5m(!j{c$kc*|lL;?ke~?nXfIKp}&v{@TcOS;DFo~@jyzjUCos^#h z3{<*;3W-^ayS%K)&3GC)Mu(x%sLdux+>gMb_EJlLVP^U^KjxsWhi^nj|HhKQRULkD z`sdKg6dBX}fZGpt);q(=#(XKRAHU?x&hy+Zxh^#MEQM})#Vu+^V}7R_wA^o)p8aSy zO|iE0(rA!Ys{qe`2eyx& z8HYy_%nq1H_(GHp$Pj0RwRoZ;wB4BOmqXW^aHpQo>;70i5OPZiQJYEpscRe9%|VG1 zf5i}9@3&4nG4EdJu=JjGZ){CCQNCfamBlI4LO{OdAY15lggRElcil5PSpg!;i=D4S z<@m=%VesCh=q3Sp zuU_=mUwPHsj=Z)yY&IK%W@H}mjXdxtFe{SoBJ)J7CsM6gGn-r9(J+z@LnTA8h7@U5E-C4r@v1S&!nPB6C6B-)7eN$w-LYFK<*-3;`bHZORZwONA05=)9Ziv{N z>f%|&Vq0KVXZGIaJ*}ulLRcJ0Qqqpn%3;Az-LK`Y7am(=`(*)Q)F&OREL>?LC5%E} z)i&mu&55SJXdPYD2r|wjbde|?kQrQ;PXGL1V`=R$fUYa8W0ONN$8h+y_;RBG-_E)_ zT3g%6RaO2)YE5Gkm5!>ylGqK#dX^g+M=aYiO}%!(;e(=X$rjZ)5_uel=7WZOzUd_U zkXnY=DUN(pr!yHH<%Ug^qfymtjf4*AC2<-DcTm%ZX$v@=f>ZCxQJ@Sxy)Lc*Od*t# z=w$uMtTWGoHM)&r4Qb`Pq-cJohF!GL;d_@=a7|s-ZL?4^^E+1FZbWm#vn)%u;@jxT z&@#(ZY*)pLa6%CZkhCB~|K4><-+M&+=K}k%7~4RrySFAP(T0(Bj+VKfnP-=~whCD! zdO311>EZmndSeNU$&8fV#n3pcok23iWXCZBC%zbCz7-ZfuhhW8^yc^eN)=%R8v{QQ37NPeIo-F`H z+~0-0Ftm<-I06m7lZa6X353{zgA`o`_xWCFdau2U3qH8Jov(At$*V;kJ$|1Q2qTG| z1QwxX<+{#FwU>X&nVBW7$4gVn#^GN&Xf6>Kj6;j;@2J_jqnAIbZPl)^PgmKKe;i|9 zSH_?4!+I!xGHdkmE+u(SXi=GfFM)A5*d}Sj*>8Na zWV`d5mANr1&m8#+{>fjL!)u7jr*W&ht(7%yd|VZK_22$znmGc$YqA_Mn5_H}>|R%) zLzvME(oXOS8y<4jFq|7~b)V>NdmUaFmT#~85ee9KcU~zAm!Hk)J56q&)*Frg!K^E! z>yKlxszDFEl&CWaW3`O#-AC7+m@!*!g(^=mXlc3|8I`BoEU{&oSkHZ-%-Vm0p|sNb8nqfwsa zV={U;3?MZic?D2C7&^jMBnLnNq3`jJWNk!zlu21H-q1WQ9=w8H=h7!R^QY=!%E(-w zE>+X|D6^AuYV_8R8+6sZ=A|;o&D!IpPDS^iByv?c)`rGurB758moSoA0@3lKVt@Lf zA@ei|b!O|y54GjBtt?p)5n?p00ylqQ%^uUQy=LS>ghp&@Rpf{*f1D;27gTTkJ7NNH zO&qSOSKtAZ=PiKrs3Upf6-AaxQzX}I?vW+Gx29-&RuPNx=5B3?4I~YQP-X(Dw8#|( z&r+>O^koi0sK0ij&5IWjtua73#1rBW9}7|sZ@a{<5x|+6k8CcU>+>?A3<<P&M!$@!?Vtg{oBP~XaN*J;woq9{t?3>dF% zjrp}_zph#|^q~%S(cO|_a&=BX7w#jPgV6WwsZDHOjK5L`^ zEv?JXJ?37Do>{0)JZ0OxK_c%LJ7U^b&0h)s_|OFcA&|(}hN#qUeg94KRX|QvT~$FI z*h%R(G8P1(`V#sL>pVK?p8`#OWfw_K+Kbl#dn#y=vGjGBH&Yg~qzJHg4(A10+7~<5Tkz zJT$tSkL%3Fkqg&zaJ_`S<4@S>-%o1?@?a%cw=BN3=*{)3oZvH~vJFX0A~ZQ_3;js> zvc+RZRy*clIKa5!!%k#Yi&>Ywg;jy5QVk>vKg;QUtsw`YWy8ycRb1X=*Xhak=0629 z(lg`w>mItsE!*)9U-gS>(;>}Fe5R=@LG_@fNESr<{Q7<{?nTxF@uFwF?awQp0}O|1 zOCgBY*C2!dIAR@Ov&{J0@atEXPhb5*0?Y-)rEMf6cseDH`=rl$dTSKITvjC~W4;aq zqi{93*d|SFswZ_7f0rw82qht1nDBuDK+IoV=m%jvsHAbJEUc51>nK?>Rx$!$j<=6^ zBdptAcqf|s&;-l$9ZI~lzZI7Irf!-q;yUdD&OXWB%5!ZMNGa-|a+pU0(@YcRx<5Oc zN&*f5zQ3(@5{)OpBXpV_Xb-uik*c2*zbg#F=Z}QcB_Ob~Q0bW~Zk|)7gVFqKZ>P2o$?z8;vPXh%#y*R6p%$jP++FDq&eW+Ng$YMtV2GJoje}vto-Og_TU7`{-vvXNSCJA+?8g$p(5kuUmh3za{gQh)5Kq zS9|rZ!6PWFtQ3f`7=NVmxZz{^zs?<(dJ#o+c}@_ucqu0&Hmh`{?%?(+Gf$VIZV~OG1>u;nzzxx&Y{>30e}17D%rSNtsgqJfi5IA zrwnuCKi{gqL?{QjH5~Y#p(5uQOj*cibbTii zpEMid6$S(w!TkPz@)tCIk z$4W=5-=Hw0$KE3KBmVP8r5to|a@jEd5>K*3-Td{mEn85Q+&ZoV0)%e8EI>N*Ki^$I zLL0!^7*&qkn3HyH{Y|2eX9a1F5%|ATsps_O(K`x;#Le&iU<(rOCel~MSd4gd`U>MM zc*W_jC4r@U0YMia!=#jq8-)7voms*Ih#=I% zb2XaX)6k)a5P)6b{_*3bynfXv4qZMXE?X)$Hs=>;Ed43$4^X#%Kcvp$eRFe@3wrmv z$U;9H*4EdXH5po2$w=-FXLbhCH{xPrJC2s%Gw3vfM!k+8JiDbfR6A{kWRGUD9Xbqc zo3F&&_0Xks??UIsQc;z_|BOrT-O$hgx;mED)^ZRQVegIY&)sNhy5%V7Pv?pfa!#z&6kgY^$mIkX zBV7rT@(ZPcF#w51zt=~lEbuk5jnv-V+sQ0u*k>x)awnkC1zNT*PL_D@B5H` z#b`8WH0e8{4OY%n4JRfiA3o^@K(vzq9KeL%(sc4$m;Tuzm)bJ(q(CO3`e~!Z4Z7|^ zRenj(*YV#yDI@I-TTg4hxQn|jeF7R9jE7Y}lHluZdb;Gg>%~Zpxr>5aG<6kIadd|`%SX?qNxW6A zi_aet=Y+C^n6SXKD%oXtIGwL)kt=GeS z`^Pgk%)AiUE$kYZPl^>8?&5vKj7Nexdk9*Dryj6H^uL^#FwJphgaN)trYl!KSA^fe zaxQo-Mng+G9s(X-f6X6zTK~94=O8+?HmGS7TNgf}nGo38 z+8X%3`Z$b+g&{V9_VdAK6yt(wDLmqWn?9h-UC4TRuA@=BhE;G7vYnnmFKyKq3Z!6x z!gW;##?TJNq@$oFB3dt}>X<~BvaQiqGw=ZKG;_aqrV*7uG$a%YO@RxL_3@niu(&S4 zAv4aMe+$X@_|HHso;LCqNm;Yn$uzhGo5-}ykbi#^U`5O`MujE#$&-b&{+(c(=()ED ztGL`BJpPu@$G5|IwxM=6AMSJii6K82Ainz=AF?G?uC&MUn4y2YRx5`^WKz}UrTVU7G){;AY}XVm>5VgUml zk9Tip<$K9V)s^YWi@3?qq;@ltA}U<^;p-!md(v1OEEj1?}=v)>7{a(NNlwC=ps zfYjqeapQ;i#~Ifes-a&r(DS#pNYd%>S4PEqw|*JlQf08vgTaET67=3M{0BzuVR$)s3c8nt2*gINUb9Z@8zA_RXzE}HiX zPU@;)qumSYS=27XJ-o5sM8g>RA6FR4SoFRS?%ZB3xZRXM_>WunuyIbGe;#qx8W|V% z+Y&(RN(T`yMMgOM)%d{Z7oV%n`A)t9sxE^CrZ@j_&vHni0ovU7nY;WJ$wL3!6#^51 zTuxeIhb-d%y#Iw&OT}xIt9Kt#ZzE2+`Qb3R5&Ar@ZyhRTC!Q>G?cscgz>zYg0b9;L z;YSVAbIG%e6X!IKpQwcM#clldXA^@#b^@>6;}YWS zyw5=zY;Lk%(<#D@eGB!oWk6o~bDk4e=tJSBHtg$ueH;BTTqtg8nxdplFjM_bmv0XC zitgX@416v3F0yT|U!aV;%%s590j z8#*}pu>N;p3uKqn{XHs*IP)`F+pNmgu|uCsq%k=?Pu?6`z-QE@Kd3X;t#qpGN+9Iu zwKnQ6!Q=H{_qb6MyKWmpsaJHzM5%96D+bqQs2Xubp$rCTh&c|4pJ3#Z4UMApSfRWa zZGl2)J8kP0<7Mo6rjb}{+1s{l;-56W!sxfanI$5`iw$Df@;Z2FX$_zu1@;;R+4Ew; z>36gnF-V>~`Mk8x6$m1TqtLg+@d;@K3_ju9nl5n4Vfk#p$0mqvl}=R={<5p|i*XE@ zSa!Kid%f2qWXwl$$5aymy&tQgoZ56n*ZK2)QMR4K<+>}EogJEK2*ovQln019F=ljF*wHMb{VB-^L4d{_xzMY$EUCEf*v#?HX zQMHSP;q}(Cad$ax6^dCezr6frA*oO@~OcL*9))hn075PiKZkU=dTjQ zWM7gOwNl6lC3h6>px~u9a}gKH)2ZEiuI~V@P!-sjoq)Xg`7!-!VmFGNwti_E6&q_g z|JOgX1LaNA>&d7onsVO4Tx8hWW&$}G^zOgA9@W0wkVTxGki)E*>cGlz&+?$hZHGI_ zKqxOtHzoZbb2+x6$nW-v_Py~k%Sr#MDcbCY;`w$4mLUs^4w|tJz{9p~Sk#0$8`#e- zA?nrDcePHw8FX*oQW*1f<<%q_(Qf4UI$&Z_JW!nC#U94w$ttmPcGXve>E*l0j32&H zAxd5^s%kqc_NRNo5lJ$71yGC^OkuD|KDDVk^?XmdYVuZi9e7FYLAv_y7D$0hDF^o)?Zd$-z7&U{~9BmlrIh$A!;6`1G_ zv~c$xGAPU>nP5(){UcBGr0Af_T`$wkuMnr`r8U>fGKoiPs5RH4HKv&_oD5w%tf}6v zd$33ThC+_XdLTlL4Uyr-7ln8Bev-X8=o&(;z!ff9ukezZ!?9Nm>rUi*j^;O(kG*(a znQmys!Gh7+*CZDo5Ff&ztnYcdr4A-3U)LOk3%9vgKF=xd>312xO1gx<#B8F@r!89k zAng^aQr$FpW4Q87H)0XQbb(chaT_wP8Aof1t#u`fZ^l*4Xfo|Y<`MeT%k8~P@sAca z&sFu?3+W=FrLXbO;j6vjxSw6>fYF{<{dxT6xz5kC`tAoi$~c+0JJm0~)#`hgX~|JF zx)S&71obvV-C>G1qlq?A809)ARNx%qFC~C;NawRP+OYG~uNtHVjk}o<1Ae8U1P)en zZ}jOY>+&puANJfM8Nqlj|7&Jr48*)@*?J7qa;!1q4;u$#2* zkcX+3+)N)EtXlO)-Rwnl$g9oH@u8&JOCv++4cB_@Dt)SJcJT6bs} zwlj3Gx49Fg(e~mUQ9rcqE3wY2d1jIsr@CZSt;6Zu2N%BJxZ>Z5JU(o7n3J2gN;urfV)6Is&B>xF*SJTXujGFNN&hBm`EfpO*o>oFU-I$~^p->yxBYR#O`dF0TK%BFwioZY&3lS; zd=T^0mQxAswX;o<2Cod_4e|>F+4ZJ^k6e>8moxNtmqT=QkeJCT(qS{xS)~jRxHDTU z_@^~>3BV>1?sbBO!Dv$KukXrKg8|lS7aZ!MDt~2tZ%FmxyZIV(bCL~rHKTxOTz+lg zz{^SYE;-(X0y5_F45I|rb7t9ry*y`q`if=@*v>f*H*1m4Z!LZoFVcMlcBf_)r+Yl)^@8I=92LSmA6rX_P^QEovCV z7BQU!JyaunpQrO!HmC8}xEfi^3WG&_DMN`kdCG34y?+uQzp|-&@~T?6B^^GrFZ;-I zJ|TO`$dF8jf0Og)QQ)9#u~XIV0_q!XI^(z#L=ekye)WPQ?Q+`h8x)SjI~mebj^m^P zl~4(9UAI>ILk*yrN%R|wlsi~pmvmHRG|Q;<=k^Uxo}sLWQ4?aYKoE1QC2E`_^7?LS zUX<1@cfNzl^fn)7uK$EI8$Z>T048o1DcaOE{!51=&w0R zy+<#NT`iTm7~KwJj--Ko$xrL7$p*uwmg5|;$sV9r!pBG$?9fGh=x3((LV)2$nnut2$^g zmp}Q}tR^N!ziAgBSAWp)ojIjpOymOd4G?LMN4cF_({y?-D%LV#6v^X!M$7$(fz@6q zTrflE+&1VoK*S+e-Kw2Igz^m-`r%8ZTK3+Fj=BPQB~&(D1DzpJ`|ZjcTdUmfQGqCZbx zax5|w=0-ns#SRr>J~8pD8NykjVBh(jZ<4D$^bc$zS|}mLKVrWY?(fOV@MsCvrsv*d z>hNKlU&?%Zzf~6O8ky&1?zcT>8l~TGs$!fth9Mq60gA+ndC`jQUdo)8mU0sZFh(n+Y_nMS(;ptjKaddEW^mCeK=sS?qj1{-`X%4tRgX-<MQ zt-?8S=CYD9Yh!WWSTe^^h{d=F09pY+n+bCx067E3nC-WDd3gZphjNUGg>qbrWR6?{ zO0<6w`Uh^+1CF&m*0e;i-cmpFNo7a+D*A(2R> z*JR}-qGF+Lk0!hpQ+9WEX;7e!Yj13v2q;LBMX|p?5jUe!JNf4Q+jgFwp58Lnom4Je z07E%&Z7|I2iMxAw$#!pw^g4Di_1AiX-{%Y!RE#zh$^a1lhCf0=h+S?0(d&t8{2d7* z4{dr9Ki--GT!cAVNqiGQ2_@DJO26!eP^6Fwp=XOJo_U|S%-O}oJpgwQPGUGLJf5*p zHLK%XHtL0UCn}DUS3m&N^WjUyAG2=B$N-@qwe>{m#-4d8Ik_}6BWtE`L}=*yc;FVv zWi}vKLKxZ&m>L{oTDnn=$%2Hr$4Z$3~M3|8F^JyR<T$Y~F=fg%TP`jxu$DIVqs}}|UruMKtG)d# zaZF^Sg%`vjYtVj&*4(GmXWyl3G0}8tWyKy8wW-LiNQuhIPBou#b|xQrE9yRiH4RnH z(92W>if$&F#_76YOp;MDim^~Ju#!4DIu~hg2IHlCn+N&W*#lg9_?ubNIsiLq6jp$n z`~C`zKRKg#w@<-TSS5RwG$5i8;cvFT&1RE>>ZvN5$4?C^jG+nOUrq+$=JTn*dY3^1 zckNcM^i|(&Jy$^-4n;;nQag__5j9cn)>3dE1u~H=%4C>z84E z^c18?55QYAz2%jaKLH*|tsksMTwpdjX$MdtbXW;@O`8I23SxKkAyBEa^mkI1>KClr z?gu`oEsXv$J^iRZe+M98PW4_vbEWyXfK{MDiR*WH=-XYabcB?Ij|w&%_5=D8*)(!H z;3NCn3yXlK7k>n#gS-I%_}#mAETs4k63VFoR-;0z$VmVDGEhA6_Lc&bVmo!V_u`;7 z>3Q}S0OhXNtk(mKB&}GyGONER{$s15#B72YZ9RE!8~^a@;QYvvP7v)JZ3YjPNY3It zEQIcVdHMg`?uXL@0rJ73WY^fkW7qF^D=j{r?x>Q9iD|87U3TmCul;?bo3%9uhLGee zxJ=v*aM}XznFPen>QzgdHo^&-Mg|5}YmaMxyZLTwuwF+%bMpznrvV@^-62Fl zJ6*R76td_}J$_H3Iy>t&P?JF%?=J!ckk7Tfq#NGPp5e7|cE=y(=JLea1Cmi4*?p^@ zYm?wcn?T^!0kXQXB6YtxKzh9vuNyU|<2wD8{)M)NMrL1DR+eqO55QXkO_n)kE_U`> zz-$5NJBF3WZ*2q1iH(h2K50)*#tUL^ua0gtoE)u3UQ?>At&In&IzUhq#QtdrI#AJp z{rrkIFwg-G@a=SrjG??_F9{lN#2b!$`S2RpffBjQty>o`i4^z99{q&_+WT~(Ny+yiQfsr)a`UtrAA=-`j2Y9i}%2Q47QE$ z&LDj3X;)w0Vk#g3_&iWp$oCRLMozw%3T)+*ey`Ht*&C8Ml~dk8Cg%LDW3a^mVCrL? zHuDyq@Fx!SWOho5=P$%T3J(7EBs?_Kfvj;m0+5w7`0NY+#7#}rn^ZcFnQQBGM6|iT zZh~0Q6~1&jKHP69F<}hba|7<4I8f2I_G4QcBSDD`1&wcNs*7`3uXq;z8-d99wgoue z@!H&GKEOx;^GWJwoV~sMwx7M3*%aUg$<<0yZJffo<{k^OFD4z{`|(`t=x-0t!x>4%MUc`05_miLu82*;6B82iu{TOhe^8GnM#I>XHQM8Jiev|*vF)# zAN&DO^qCp5S|;DX+$sGE3{B2^+ZHHPfvJ;NA9sPk;qc4N_-DI7DXb?{`70QJ-;WM1 zz$U(34k%R*7Lp#tK(l*wj%Fj|miT`(0M*jgH&=cE16@9Belpv73-FO(vDn1yJKG%g zoe)K`23OfbV-FzVh2KiuX0`aR8uy5Cg zi>CoKoyi#sVM4CDXLIco-)RR12EbGf0kyd1t@j`t0*qiQX+=WMb{$=M07ryES*p;3 zSMn^M2sZq-!(4rW4_p_zfm0MbS^%KTLqI6i-PQFW`*eZvZVs&Tski%=)BESkf4RVa f`M&s`u@fSVw-2cl$q$nt;P1AIwlYT1;>G^}TCzj( literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-2d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-2d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..2f0eb5f8d91cfd4ed6fd04f08ab1f49331a72ee9 GIT binary patch literal 51754 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 Z8`@m8Mly?4)%WEs;=(dQr2@Ks{|n(l+~EKK literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..d085d4beef0f009c45bc61f34f8482c71f17a18e GIT binary patch literal 45746 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%0D<~lwYQta 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 A)Bpeg literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-4d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-glas2017,c=2.0-4d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..370d1d65743d6c612764add7b669d6cf7a2ea44e GIT binary patch literal 46067 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 z�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 literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c207a9daf9fb63a8160605c5a52b4c1da5367 GIT binary patch literal 46216 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 GSN{jYfD$7B literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-4d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=-1-4d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..73f7d3de617966ed4a795b42fb84eb9c45c6d843 GIT binary patch literal 44855 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 z zb>1au^&(e+oCbdO^AWmm)2i|t&o8niXzeA8R{7_bTN9%RnVZqU&l5@Cl4(<|P;V%q zGcYWA%lztlq;4EQy#IOTGd=D1_$X2bZ?t!Vea6UorrbAj`5%8bW(NFMTU0=83(T@) zCVRSqsnY_y=_=c2Lg{`dN>{LgTS(h}$6Fh+?^nQo%861T`nqEh=@BXj&fu5XHji0n z@W~Sy9^CejAwGVjS7v<>_7*2`t^w_{;I}V3QIR+*I&loDfetj!mXY#<704!?ftv4LZ+sq{v9PPG^5<5}3rkSJumqdPam;h1+6h zYmO($P3t{+qtPb4R{yn{#o+ONabnt3oStJL-1`{11Ir0CBX4A2lV}^@CXQR)Cv|)mGB`r6Ba*atzI2e*LFl%< z5xD=lzTt5CEEAy;iMHzJ8q#`nx?+~O!*amd|36Gr9r;ZGbVvPw9LO7sK8h*SWCKNtt}4I=1(i1 z0HenD_r@wRDhdf185t3A*smgaCgaZF5vusZRLb1R`@Qr&m)4H(xb{HH|mnV;AkVR)4ELdoO%0oa~SUKl`iXS71vZ z<9qeTouqmsMSnhRi?}adHlO1xL*MO!#Gi9u@O*rEMzvCXH)Pt0ebwldXrL!=+-uOv z0-dqT0e}18wcOFl!}uffUvg?ay3P3wIQpU8W>8n)M9m2$A1_BWqLi*jRof&Dru_Oq zr#+Wu;%l`t*nIxW;)C%+w8>UcEid|L677aonUQL~K`yzLt#K@TT{sMoXlbK+Gt1`J zl33X5pUeCcjWo>FA zY+1PWdTQHLk6h34M?CE+Ri<=uwMWII+hN6!W#-ar7gM+66lM`?K9KEFI*K`eEenKq z3X)0vMVE`=$K$B1SN^Tmse&m2uY=2?s;VM?)1#s&#=g&5p!S+k;Ff)cGbw*x`B(td z-_$y6oRf7my6Sj}yCP;W9URl@UhTP-Rt3hR_2(K*4deWjL$6OKb_C@)q*?Gb=0k zev{4gJAKi8Z>f2*84k_!LtY;SDWK5dM@QSM|H$oiUVfDOxa1JY83L=9?Li<71jNv4 zpQ#ZCODlh-e%YN`3D;}!(~gGr@i`A};lq$QPMWIPjiZFp<{9hugwL`Kao;v0B1sbT z36*ueG2yOuy))igtGcLKA{l>c{4(k>`8v?9ANz25K(;tH#SN zEyIo0hVz?(M~9A=fqJy<0h(}E>R`#c!Jb$t!6ZcbSsPoI0=T5e$h@37Vl7Ljx~7|J z`I?UJ)YqQ`I2J5tXO~O$*{_KDtlZn-mFDE&9Q&7N_fD>8i*d;9c~EpK*Tf8Q_A&T$ z!VP$W(K@N&GZa(oUq*rW8?<DiR1I^%70o6eO~FWY+34+ zoB8OqZRNs_TjW$@@1tuyjW)sC6-fv2FdLGo3|HII5FU&?V-{PHuoCs?68qySO$87T zvrG|Nap||t2@6e)Hzy=6Gp!v7t*=^lTH>^kjNK8lc~Ik=J;S4ZzRWNST7>rtAtP*x z)W*7NwP9T1smc#@D`g%mo;B}f#O@n$uj=CJONxKBQyr{(8B20REw|?tx=Yw>aXBv9 z!_aJnfc)v<-AVqfYb;rO_nexWC1P!T#0(eRs^p{Zma|M7TTYa#Qk6r(D*yAYJUdd2 z(j4s~dDhDQyC03jX|+aWT2@0E)XPW(#>TT%xm90ClvsL~J{ls@>*#1;x>*m!P}M^KXoTKVYr4+Si?_GZr+&9Jn&cTCsKyRDSGeK6HNAv!Y1KtykzUPG zBOL61H}H71Xu1upSpKynqv0??+CDv_<-)coz%YEg59`ylptrR~zZmv%EJLAUmL5qn ztfD$?0n;bmm$mar`Ucae=?ElnvGd z02V#1?60c+`z@?q2q1O;z32Z~!#!XD;8Xtd+xx$oe+5MXLM;BqHs8okEJOOP|MTlb z{JZ9Ywv`)b>#65mZ67UgKtr&1!ej$>>nlQ7Tydv+a+K{Q!9nXctaiV85IuLo7fI%F ze)f1oB-h!`jUQTp3VlZevpWL#-Z#n*#x`?bpD_H-V&d7HlIVAZlJ0A_Pw+2IKg`>s3GmBi3*?o zj}#WyK$}%_h>OFyk2ri8j%awQWku|(N;bgC{W}y(+$LdRVK9k%zAkbn-M+rGWOV*5 zF_DbD9DJJ)e1p#je5^N-d<+ad0f5105}rLUy32gyM>K~lXqC9Wh2}&vIlGuC&MJ&U zl%yy_I6xm!K2&E`rV2Y}Ammx9>i>Tbfw1)z8=N0UM@JvgiLmkT#zsV9e#>Yulym34 zB>t|&F-YMrb);P({KN@0u(`N;H65G!zv8sghBTP!<2B))vS<`}d*zM&Ljx!ehHHWE z$$&wQ{sTWE)kLwc34yf}jK*Eb>VeIE>N-;{LP23~WazPbRf+$re6tyFc`6KGve;An zi5DQI0)70XAg}0GRFq!>p9Hoq0ckuyMppL<7fYdQ%-z|su){@pkVEr|AyR29rSb9^ z{MY9U%8Nu10+zKH&6RmF~&VjLVe|Bn25~o+@w^Ax1QEA61@2|{TF=7 z%Z#ROjyxR4|r?m zA3*7nW=+tsO8NJc3*dM}yfxdY@&MJyQF!@%dtLKRTEh~qsV?{>s*$CNT5P`5(lO&~ zP;={TUCjb*q$yi^8~j&|6iMxXe~P#krNI=Ig^8D(pU*7R)z|k9uad%XbEJKKUYLc& z3Vgj4Km%Fn=*;k?z;|XD8FK-BODtTIPXCwOy%oE>dhA3I<6ItcRIhbH;smwSPPX=* zEhH9$p#R>$ctDE9niix8fU~Rm(_mN}e3%P-k4_;X3q&H6ZnP3T9aD^lkQiv4!6H#PXb zUyc9THj+1v!R@GGOd^~iE&8awLCv_B${Kk8_7A1B-&0Nl)nWHB#R|htzMD*rXDkWi->Bqh;~mgBXaHnJDN)a`ehiRp;t;2`%wp#{AxD z%jfX>){d6YNxX~7cL;JZdDyu~Fz%A{c!0y`AW_Hg>nqU}m}->#bsRRz(0q-QuzuzV zOGI!`KEu1Lufjq%I0Sd89DU+%nseNouE5JA7`CaTvr;|pfUK5%Uq00SAj;LXBaCU z${32PuAHSIMcsBLG+foQS6w;S@etm=;R6@l5*$N)=5$2O2 zRpO8s6`IuyKiF)9{$(qS0PD9nj01UzBX-bE7a>2 zIY0CC5-T76@c5FttY?+M0p~t!xDP-PeyTvjXJvA+n!rhr{*k?E+KamFg2r20)kk4| z(^DdA?G7+177Mk4|8Im)P*|ol$9{+2%Imx{cjbNIz{jvJ&^aX9J9nY}DZi%XTyCZR zyk(0}fidch%K!aCyWV#n84XoG<$9GgT`na8UEJzSHzh|GBuh~B(BT(<`Zf3Y|4Q67 z`y~_gc9xuIsB*zcJjvdf^w>VT-1{E2eX^t=L!xxaeTyMqa7K`S5evyPv>J>m1!%RH zCWB%Io-BHFL0%He%as9p6c;Pa)vA-Ov58wJmL7qWt^=V{{WrvO5B>#BHl3l~p?PD( zmO(FLwWzp#41ooSWMRKNWlGlF;{Jcy`s%Q#+UI>zL{u6PR0JfI4r!#3?pBl#VJRt< z6clk$M5Mc$6%k44P^6TWl8z-rV5yb(&f@#N*XMU#KmR$P$317ynP+C6nYr(K$Mt*F zcSqLKLseFX_8A)9W&fU8#$>;LOkK=876rD=SycQspg*Zdqt{tCOJ8c)%Y%)q{|VNe$28tm-Dt?$N~iCodyx@HD^L z&oG_WQ+F0S8)@>fU)(!tOXN~BVQiJ3pYRV6sV^=6`|V*c#iYY9p~>yBmFAVR9h~Ey z(&#X!pV$Xzw4~qBhFZ_WOqQjNS?0hV8(ooP0Q;sUk!EvrT$D=QtZR%@iHw z9u(#C+G(;QF-8$9Pk7?)9pej<&x&ek5FZb1k3wyH2I=xZw zMohT2e~|UT1|1)@IlnGLMR(+3MN-pJ3{!;izv(h@p)^lR&&r@xutcr~U7}BT3j~7P zAi>-T?MMTrQ<)sdNoa{d{3Fj1Igs$;vXb%;-X4s$ert!ybDq zI<51;a)O-}DXyyDd_v(0Z)_oFp7i;syWW=*dWjMlH^YN}Rj14v_RXuW@6E*%*n@}d z(jNVxf6L=F_~g+X5fO)AGgiZb{4bmloMcKHV}j>BFWR@h%_7jXxLwubR`sVwKjFdO z3oMiu=poK5$TH?YM5r&{yLVJTg0}HW@oPK#t!24{c;K#vra+aB;%cczLD3OA#o`4B zZWW;-$uA0p&EoY~-xlU|_1b&X>1erX^2J;^7m6Mm!I)u0eoq@F0Qv)jT57*I~$)FApy5%BijydjNwWmszZ){7GEz5H~@AWhA zlznH3U@25o3+w;=>T&AB(5d_U((_+FYH&#SEse65W+WXtfh$>E3n<~>LxnMJQnQNbv>66I1-g5SLiG)o^RY4i_ zvAn5SNtU;|umE-Y?`l00W%Sk$g51fX+S^>qyk8F8B&J_B%dM?o{Op@O`-rlI@8pmE zC`*Ai;9D(wrxE#H_SV`;P0B3&o2g65Djai_Cr(4i;BnTh#Y^_cHDt`3AKlJR(~x-J zKk+L@*ZR_jjrOA23S-MkcV6MdkOxlVE%>PhSl1=nykh3!n95D?5!$BnrdQtLMrHy!JHWbz4BC(vUv5xPo z7nql#pHXR1yqVHW9yBJ2SVky)ORPUIOSiEcGlRqCwHH$mtfFfzMOpS*KZ9e zx2s|N?yT?lg=?c^gkC z%@I;DmJuh9a7%dG$<~~~S^5wAuZCu0R`e<$IQIULm87p+v=Orn*a@4B42;K=G}^Oi zR%vO>dA0F5B{e=K|3wJrQsuNYy#QXf<>-sExXq@{363RN;WucLg z%z#^41&7FPO5_C>mz{KmKPZJZ$f>|~sIp)0*;Ojd5obsLj-+4AdS64wzqxZR?ggV__PS)*)teO|sb+;Q%mKi#I=m&i>{>K?z;uUJ^e&2KM%q$BXtc~o|$cVyX-LaZU z#UHQ{P;trbLslW}lb-EktVn~o)fkI#__66=NLVKOtZ=L>X) zZ9U#(__h;owbJ1A{Nb9VYB%W5?+M9E+|sjUOd_>y8%g?96xPklY9JPJ?`SSsKG&H{ z`xzw}hs(O4AHmL;+YYJdbR}d7cP-z1f-KQ)qZZi zua}M#hFqS{rAELncg>E3picIZa>U{wf^@s0Z!E)|P>*Kd_PeQd}%08y9d56Yj1n>ioc`R*y4O#Eo-%49naolN8b4)8ef#VaE?| zv-4hGVo%9krtCmbcjQ z_hso-2Rpv0xYWIMZQ$6_P>oS>3`FZrV=eYX@y!Z8OWn_IXV=st#MOFA&MPohh%#h~ z_Gs!{aP5@!>lkj*}#nS7~b-sn|ChTztwc{hduQh8cc35PG%Pscx@s990$a)L(-3Fn9T)d3gKP?;gBV zF}foy5_d9Qucv7i7vVEoZINCsmr>81PH-nlWQ_)VzSAsHbJ*e^ZNrReql;RGhV_w9#&Ch#V zlTRuO=XsT-olzXE)LU0hY1@8z@=DWq8rhz@vKat%iNKDrrK}BXM@ciH>iknqdMLhe zahA;*>6IA!GAoH=*!UD@Q^>kxXrpd=(d1KvY>#RDoQhYyDp&S2B~k% zHgyUoiES{NC*MTPF=;<1zpX2D7AZ4f>Kd+ z=l}^rlIVyfjf1Q6gyA3SMEwsuB{bIT(EJHI|fi8Lx3Oq9xd^gm&9f}7&$z@I~YUAPNNXzk-l`Rs&+OB=N zRG8}~7973R@=Zv+(zHzBaQ39Ib23LOZ?SXr&7;F@FQ!w_*C%tr*|ByH7Os*Ss#p+5m{ZDYx^vn^6F$D&5KBM>br+8 zUUYP;@Oi$@agl$rKftw-SzDpGdpN`#B@urFg-nLLj>7#( z==-SO?>x@li$#h`7^(giwcw6U z9Cz7qW(wVpzombC9OC-lj>hp3s#?dEeB8$P+fsl@=YKmLKUO~c4^#;8Z|y|!@80`w zBjvc}9VPnTE&SWu`2T+*;1~X@_v5|iA`OqA03gl)BhYsa1!L8+fw2AnFo~Tjqs5l8+)nMgz#HD_m>d(M zoP%*EXB5?7iHPgE&dhvw_Lel}y8>uE%y*WdP^-Xf#W@66mR_{S{KuakY{^XZ&ph<- zaBNMP1>ObFm1Pif1sxHRE=Q-76jZhP)on+-_j6x6I+lSmeV)V>kOqp1MAB{FzOD7; zhKozuhAAtY%p$QFsSgMUym4o~hR?iw1qVl?#egLu~HVGRWn?u>izU33a zpQU!%?nb2<85#J5C)(!R3S6k!HGc2xTu=1$@W3qgWPUYcj|^jyP3aah&*n&H!d5M$ zbbS4q-o$ab!a||2gjz`Zo6&eSt&b>-GM{(!$76H=>2Hsb`~H?e_yYNrl|PblKxBi- ze|HLcB$8*Jtc_I(*|tXwqGma?lF}kCxl2$z0fIvH->ejMznjQ_Bllh@P=#Ot%)0vp z5a_a=O9q9QD=@#7gBKC7-={5`EcLjzGdb?DwOq!AXlz)RF$Wvjt$?fmLDa z@Xs2@l`Cw3shS5#)?1UalJ3Bie^RG!sA|s=uO&dkQ zY<6}wjW-AbmKl1#1u*Dwa|rO@^PuP%S4EBZoPwe}uzQJnZ^39VksPg5tBAI?HeeFz ztE%#M%*w`hY)Y`wS>jsM7~UVu3JMAW35M^MrKX>%t9ftN#NBq%#T$xQ23}wz0Yzoo zOSH7MqKKsz08Xvf=StZVCKsgua<@vEj^WOG1eqBF|HO2X2tKFfVV>CE!nDoeKW~#m96J z&o9NGxdAFVW^6+>bw`IjOE8>P3oM|yDc%LZHzw_~?YmO)1=!Tg*@ir*Zqy=&iw+JB zNR_a!<80v5D!P}g&_X0VdsZ~D%nWr&#DPZXnHkCpR4rn8Zwa~wMxp^7+-1=Px?h|_`&X`o z##`LF)fKBx`QW! z@Qx1zPndDP;XQ}H`S*ZFkNfw_e-D38`=7HN3VQqcjks5ZF3eof?I8ae^Yit&;}0}boABN2(w05w z2X>XQu`z~;8*lUr2hI?K_s2zmGPP@T)ZWxoREGy^0U*47J0OW^((~a%CTLRw{fMeI zv=~A1IK^*!xI0-=_5jldRCs-aKZb`N16L>Roxh-DcKqYu{ zU`pEk0*p~G?(a7np_1}w8u?B3s0PMvv9XRvE>kNpnFJ^{A4^~`Ikg8q`7q0r*J-|HS?e{!|wmGH67HhTC&y#r| z5d_W>JUL*)0hlQbJXq*_pq7Dnv4wXD><1)qNIwG1Ru|^ocU^~nGw_=hnUu)8NO-N7 z9CG1*0H85^9-CB1NJu@fTs`}`WVw<2@Mn4~@R955>!W?JySqTFUzg%9S%v%Fdkd)x z*Q0%A!mj`H+ZhLe=B%tNph`f2Ix9wNe-Rf`b(RsJ$qM$JMxv-0N`rKGj_2j+IhPu$ zm;q4f-`_=O$R}a(u4@B~eyi~v^Am9ES{@5bj3-)vHp6cjRe?#3Nlw<}>tTFl@tm9q zWUU-BpNeQTW&B7Wusx(+yf#(x<&r)p4b~VfxiV4DBr9?Jgxb|qRRKp!g3-^WyJmvB zQ^si?4vvrj1{xYgZGg}_5V^X#@*jQt_%SMFgR+462^W9u(cvFL0)oZ$)PO_rd!6)$ zVoIIlGP{$kC#JvDhFP54$4H|s0uQePE50aRpRCufu{{t_+1Hnp`~>u3mEbf&~Qkm)Y zjL5y?g(jHV@8Ah62*_Z86W-gyc1ZVub@tc}WLMc4xgnB$gIa2BUnvv8TXBkDW2?^=T(!P{Y%l)%yL0BO+n>gYq@ z6+1(~k8HSE42n%HzwZD=7l2{`xvupHw-{h0TKGAI!4QGo{h!(D=Q6fH%ae#8kn+iq zk*4pYdOuFn2SDD7$4ed}ISeQ@X_FtjjQ^6x|0j3+H)%Z1E^(d(63V{^)1pJBolTu9 U14q(GJos}{NlWpa{GFix1KY)c(EtDd literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-2d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-2d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..699652d92a45ec09646ea0054a79526c4ca12684 GIT binary patch literal 49581 zcma%jcQ}=O{QrIIz2n$>Wsf4+yF&JeI96nnN{D0cRgoeY6|!e293zT^BC{MLghE*% z{obDE`~1d#zjIw(b)D;UpZord_xrUzC&AcAkD7vw0znY!bNbq*2tt5G5EPz_0N!b- zyHE#zDFy0S2b%d_3B2hT;EEVJ2KssV26|m};<@1(aP6wEkDR28w4|aqk9%OC-!&yE zDewRN2}$1oH>nQW>+j(z+X*%MjFM9R$6Y=7ccATe80SVwf<^i;xo4Z!#}S(O!v9p5DEPABEtOp9)UFZzb{mF z^gl1eK=a=hBEKGQz-bYj_xkDp)IDA&5)-GraN$mo&M zH^GbUQ*w#Ot^9hm!jc57i#Cl)c?Eg9pj1 za(Qaud58gGq;CHzD1!OM-o`8eF~z&wGiGVXk?Pm8M1C$VEGjQ!l&S{o|RO652+bfY(!_1fY)R^mInGE6;tOf6pra$bb& z{-Ee0;Lxpx zc+dc|t9J8;-3S?z=cn=qUgx`phc}lVhriDhV_Bo6w0n8OFz59U*U@hK-_a5i!URV~ z>%|XGFRbhw!iUb^mwd#lMRIyQ#FH=yAA<#1=pmza_{y5OW`dHm^8<8Le13%uL}q6Qlp8g$-2 zkablGScpH3czPj&kJa>O+^;z8uZ~qYFXgF(G>K*x7#J7~1?r`7Npu~;y2soar{iR# zKPVB>#9Qo3Bq=f$D=Ahc&Zll~(ui;w-2D6(Z6WRU>a6KTs2_O2hcIG;u&|M;sOF&)F_g!EiQD6*Tqv+Q~Dw_v^C}-7!at%F+5Yz^1SZ~Z%b3B(#8w^G;+}cZ;(V4k`AS!RzHh!eda0IZY4CB} z3!TRfuYzP!3z^=evzT$>zV_djGB2U4Op5HXVq;}>+~_!zIuvD?AF8yTy^jxoOJ+&f z@(ol5Icl+@iGCk$_Hw^rB&5HwWa{jXFBX@OC=fXNNF&nbW$^aODbG*QgqoQhPZM{y zWje7J%dM)uz}87eED{E6U-(>oMO0|fwJTwIDHDu8PFOVh&1x83ee-v4`o(TE=`yY0w%hH>qOE)*f45hKc9o0@BU1LQh8jKn(b)iAZg5*TR&a= z=r@d;Y_K1P#fAfdO@KZzg9H z!X&?;;YI5_%_oLkePi^w1v(TjzED+h$|*2)G2#(gruw;FuL~o|dP7oAjZPuTu08Db z9%EbctzTCbq8<%#e;*hbVVY#Xw%fURl1wq(TR+>sf$`YFXbl0vbMgOq)w>-tF~+mOy5uKg^#Sr;k# z#UJDpVl1+z5q>2H&q^|eLZQ4E#XA&R!v7vkBFToyR!uh2Ct>J9O`qkP_^n0!`Wiy_ zv5UUWSa(;{eNR-Cok}lOMSMt)vty9&@M|V9AzxsZvAXk--|AesEP~ujkjZkth-Y?P zx{8;KU`@|npB-}=nJw0$dx{!mLs5lwjRyFVox)e_HKWBl+pj&QK?MzoyMEVTmR<32 z+0-Or{y2aT)89rnUu%dz&ygu>hMDG>V+|Qv7=LBdlgzp_kkgx1xQ|tDi@VOZ zksv(Ya=k40-GF!%CANk<>sQ@S!sdEgkR^x@z8OIy^@%UW~5h;i7c~yQRyWs;@l)5)T7R&eU1VvV;(2xM5DuD>bLZiA4^~HQ)TzZ=Ps_0 zkdUL0-c-)HbnZ>+HwCZG)9A@aYB<@^b7|KL6PVeICKV}M?-e$xM9|~EzI_zFj;IA~ zAaQgu)dNu3oqw%O)FsoExQ?F}Cobdk{`gH65q5Vw^qH(L4Y+IOgP_Y1xsSycS+Xt2gIpUpFdv~=OM9>xKxjSt&y4F%s)cO=HcSU8MOg9n zzWmPG=a($)Q1??Zs68yrNiL%YbWyn42}-{V>T9zW(gZ#3=adt>U-4H5Yqypuys@mf z{*h=pGqz@cTFK9Sv;%I>k(rzt(B5$gxOoa@@=*?64r6 zLH>oN-Xz$S%bY`_uiwgWnaePBxZ)LZre^O5U*v-7T9WyhTEeDQAWr46zY{@#h#n4& zsa-nz8*TZC+%;@zz5Orq%|dq(o|_%Dwh7|9B4L1Y?VP_ML1DakaxXF)U#qqt==;pG13w(=hShUUd&{5f z>byBVpkTi@LZ3>*e%jzlSp*?z?SW10Z*OK~BNfY)5{Y3P{aojEvEJH8p6VX^DG!0X zH@a6(pFYiITXb*1VyF+z+Y+H=lP7C)o^J9-xF{k~UTvYj>m_iX&SG7YFt4|nN+~h^C+e5I zA5dD?x+Lu59OfljFTcFOdmB3P%^%aZ08R-2m|<<_bJ+Q5h%mdcj2fQ&#QDLk?;iQL zuFg(6O&LXhVH$z5`vhK}SgG4|+Pq3z^FWwEBr>8NG}lZOi)78j_Qp zUG4bjOL6`Q`2)UF_R6~wD!lK*NZt4%Y2pfeI4zfQHV?LLM&$OoYnCGu0a`LIExQFJENMorvA$j$Fo}cb{_-&YR~>7Lqx;R$DQQ)H50r1oe%RKh;G=iV)1XI34R2 zLbU1A^O?^Kb2=Sz9z00MW68`Dyuduc?=pFw_o_|wQ;b_HVx8C;K_OX47Ao50PO+_H zEnXhYwt>IBzeOLXx;Mb`sPraZjE*(gj|_H)t7P9`lSd|150ySpu|XtMDZ6`^onBhd zQa7Ni&%4tzKkmH}@N?lDhm!wXG*dfSl1lIEK=mOh+h{@06fbLjTdv3DyI30)4~}_) z7wGh1K5>F-0d~y*d_tYNyBMcZAf~_(wgVHFmgdqz8ZR}QyhulHIuk-AeNWuxj!JBO zz}NF)Vq*1Hxs~6yBl7u!r8Fh$gA~6O>Ldv%5)W`|JyZ!fy_d2Ty4A;}Mex(afWwv6 zVe?j}FF|!xl@t?noF6;ir|8eQ=d!u(P9AKpx1Yf%XTsUv55}x!7AK{8*J0BUYR`Stwr!Re}mT z6ypYM!k{11&1k}}Z!)6hBi;hk%0M63jPm=f4HuD~yr6enxo)Gfbue@jT|efW^^LJA zu|#t}iPqj5{n_6(dA<6nB1irz!#<}%L$I)>%fyp&j5}xs*>0P7mRs#TM)GU^^F6c1 zP`f-nm6vYH2y6)nVBmg>UrgLn+`((7Q{Cn`t;cN@G?65WrO&8iZUT@wQne-{-~t3{ z``gE2-^qIN*{bH|GfJm==u8it_0d5ofM2#(M!iIv;Bz*fF1%NM|NIIRCRtMG{qI%2 zyu7??PETRWy~+LaX(v5~sXh87T({$0;4%7(nZ$vlA$zx;QZij6y$ zcu<<+N|cYAn_E4Dx6~Z=EKm?;C#KI1-38P*)3vkB__6d8dvSR;mWOzAQ^zk99ie0Y z0%gLhZy$&+6?EWsH`&7ykm{E&&k|+_ z+eOMyzfxYIk3DJEe`d{o~(yGDHFxx)+S4MT5lw2lR}c{VPPbbeK(3vQ)PnB zWt@3jw;kJvR=}v^;wok+FmE!&tkT(ypC9qj$m=A>8A~Z9{sn0xY-jC(^|$i&d65x1 z+lIzZ?!LZ*U!L8GAGI!5c&i<8f5msqk*|%@{rhA?34dV8r3R1TB*nIy2zy(##?yD< zf=2b%O&IPhFkZOOe`Vm|+Z)g3Y|orK)^9H9*!}4EfhucfyNejy5z?MNdx{)X9U=^2 zCTxFNR#_LgBqg(WiFxUrpU1L@K&&V*2B$P*C^Dtt{Sn6^5pr7lH?U~jWe{v&7J*-D zg+fWq7N{Vj^K@}BFVG}TStb4Vy8o}%^qaTcuva_<5-Y*0xOal7%OrphSGgx4* zP$$-2>`{+^tnlLM$DWCa2gRXV%O-isx5i07oa%%5ZMnH_UybP~x2ZeYn@=mDKRRLi z=aX#6qgvgJx%PKTfy>65)Aanh7~#Lt6#+J(w{JuD7m(nNX}x{WxG$=zstVVTv~4WU z$jB(?<5CNoZtxsq5Im2c4nO*>cVjL`!8h#B_Sh>RQvF%f62AcFd$q3})WY_w3;Oi* z!hN9NaY~V;7w${`>6dD^YYvEc;qsvKOu&M1_4A~p{%XgrljbD|r?KasgWY!j`Pjy8 z;76Z6eS%?$YINUNcAxY@b8sjJEa(G}e*)ap`i0Md?QjmK#PO&Ta zM4$c0g7y8};_BpN3i=&Pl}b{kO3049`w+e(iZqrMBPCV!?t$DdDM`66*oQnrzyxLP zVDD1X(k?B1dTv1(JDUA{bG}#RXnClh>-VoE5D8|NmleYfgRmOAcM@4lD_s?D&IE~G zs$T}&|653lWh8cZZ%kr#b9N|+MM^S^)xJQy@O)b&@)w$HVnTw+#e^o9!(l)g)%ErF zEQqiwj-Amk3(S&s)+BhqqsTjuJGI3khu`O^tj^AMpr%`{dxl+ovfx%>Q%90bDk^3F zYWdr@-y5@CC&Vl<-EZFtuh`W%>C}wK+EimSfNOzx6EN3Jj$K(9Et7M5Pc&9+@Su?T zin`E4rLFE!8T>MIke+)ms*+~Us4g*y*Ex2PP~H0e{rd#(mWDZ<(anGW&E8Unc2zac z4^PhNCuC$rMG>+IGr&N_(W)|#VmMbH!p6IUKI4Z6*hDKp)edRD((UW!l|-CdADl2cPH)w;u81#dqG0^`Sljs^WLV=!Nq6I3~Z_GEWN zMnhXWS{7@QaO1}`c@;I=_S(cpV-%?h%?q9^ zA#!rkgY{XuNeV0T@RN!PiK#l!9idS<702^=yACgYG&yUGRA1cE*S~C$t(ikpE7TX0 z@&GI1{oRl$nZSe@XD}~_6OcB&oizvR28i&O>*S~R?`f_-_pdF60$x}lt(tw>n=Ooo zA?B#WuyJN|^aNY2|B0jdT~Ia}P8hP{RtnTs-}GHK)I@~N-QoF(?Kh&p(x2qDi|WT{ z5GLggMbKa7&Aoo}X0ITf2oVuc$;B2v)<|~mmJZLTA<(u!qW=X#Hb`VC5Gtbh@X}J2kdcC93jaa&mIg zwV)ZhUn-$YW?{5rh2ilqvn5Kd;e5`u_bTukgU18IJNz3bNN=Ujy-q4JE>FxbnEjF> zi+w%BT|_E>Ch#uNzpGUs!kKs$Xs5T?5b*D%Yh&Zu3Rz$4d}mbGmUc@(yG))33~_3_ z&T~wX?mq2ognjo%x4}GDB^*Ct)*4-*i*`LZ0oo_#rH)@2KpnO}N1%m6!+fm}L4Ep# z_=N<%Bu5HD>5q?J)A7`oP!&3^ZEbDc6K!@M=38SaKBv$uNR>|&DRFt^ zlVv{$MADM5X7g(9NZ6j<&?UjZx+B4#uK8&wcS!#H;VDaLygK7#wIkuybldH-XQNFX zwYI7t)?lSt0*CpIkXR;_VVa4SQaD@Z~sgr7Vfws*p?`{kd z&oEUrH*ZmJ)O}u#H5V=Q>!|PhyX&+Ut^gz4n5uCmeVl@Omd&7Zj4Z=2Sc?V^i?;BI zTGv zuCI)U+MJKpgPNIzLci8Ph#2rCX=!OC@9NwJ(~*K#25-S*If*nur-AZ#Zy+i7)-4&= z?$K)$9-d{c-bhaxh~QBB7 z2U%%90aW$4^DL5f7=*b%p^maVu|EU>Y$K|Nqw&(W{BsW21r)H!Mnwc~t|Asw>X{8aj7J73kBC&u7md;y1j4RKhMK^g|IjWu$SX!`8kHBblrAZ2a>}#l}U>BS+ziH$=cHdAq{=28P)0p3b|_dQF0CO8W7NIFNw@fCixyBe0}n=Q;vZjJ@Z2fC9*{R zm;9B+V}KIx2$1(ovS}O`B6$kF_J9W3PvDl9PMkD1c8Gp``Fl?a`!8^r{CG7up{o$d z0Ai@MaY%XbQCl;a$XJB7=_e7C9LY=dCBb=qp%h8gBgOgjy&IzL^j80@ z3u5HB(zz`zE_(g6Jl}lsYbVE{P2-cIV1MwFbUPh-ySQ{`p=x!k z^-HPnpwZy(fuiU6k&%ZqYI7d2PkgZNmsjLsyyiNpO>{rqJm=(l+Q>ed7|7Gc>}6lP zEDflaEU9jSPh9o>#&Jm|qa;*3w1?h2ha`JwQkFwc@bjw{Ptm-57x3vFf%or^Z61at zHTwHFR%%YAdH_(n&M|6p@QNIu;Z(x4S8I9w1;UV$l2Vi4C~I3@K#6@i&TfQm>=Nwo z1|&oEyUO+j4VO2F;>nKj0)7&tq@;V=L5x(tCN#PJ5ClO521pmnAA5w!dGSJluMsZB zAHTV=p?GbP%E`EgH-iqePBH6ho_1OZ!fK`iYcgdvH{rlfLHx`CfHf5@fn1JYZ67Q8 z^Svw^V0J|9fbpp>1ay7wyoUGoB_ldqGEwLjKVh||jf+M2Y$x%AlYC0&L)eI9pEe04 zA_iA$wXR&b!YE{bqpiPqgY30-f%IM%SG~G*Ld7(RW;%l*Wmfm7=SWF}W%n3e!PT1H zbjiyt(L^`bzkt{;F3+@%f(^$RMQdNT5-C>5H{PPzy=%>0Qy8IXxG+NJ#gwJMm zq%=w>Vsch2Z_h$HXs+wjh!-HPp~9iH;n+IY{vHCK(-P4oEPZFsoEc3zk*B76W=-Y^ zxMjh?!JP!R4|a4MZ3Ise?tyHndy(jMv(w=j`Ir_Vpc4WX;2e(=ajqZMk}~Xdsjb~6 ztF==Q~XuaA$<@+{h^D~Zbsf)HV{9fUs0;?Ae)E5WG# z!gH*WM+8V>B$p9eOmDi&X5s0EQBNBdB#Do}x>>yTxnAx`)w1WKnV}M|JgkFGCRz`Z znF1W9N-C%hJt6;Q__>9cHG?zTLey#gmzhZ>M$qVgE)FD3iUP0UQ?pN?OU4bcHAti} zxE1)HV16@~=q1Vd_XO9QPkUDwzBG3WhYzjE1Zl1k1f#AHO~2xrNK!nue^I0>mrg%Q z?TJN+d62s5iAq284-7P4r(DT=`epTjEP10X(5!QJ7NGtxGc&Ky&fgIb0Y!AK)0tR< zsLN{g39Os#T682*4^td{4nRTwCqc|wgKIytb|ty0cV=w#%0obyYmw4qvuqQyw!|IF zfG4ltV%Y+rDo^$HLsgFnx;`he$Py;U!lzFK=U$83)biwk%Kq(j63a(3*3!yj+9)6p zE7sA`VQ+7L_)L@>_`?5pK!HSXczC$Vp`C_`>QMVQ&2T4+IFI8<*|7aD{(wOGppE@F z^KfoIUH;Ffd+U@qv`h`fg}&ziiPJ|?}q7v6(jySZ1L{@d+F9EE@Z+u zwdo7d$Cof8z|GFif@X6ukP&oDVPWCJ@Iu;QU!UXeTM?AeY9df1;^RPNBe@JnYHDiO z{#NPBmmwGo9-LA}4m}79?En5f+itJ>^}p+DyT$*Y6-KO(xODs~=drU(P|bCcij%g> zKJWskoW|hc-eysoeS6`|^gknV!70{{*pJMQQd^Ng8l@P66EQaOhEAk22<8J*+^0%na`9tpgb8XXyfBsN1i5w%* zCoWCEreVz#zuG=JI#>t59c~sYBFZ)jOmzF{7c7cU>H5l(P2&UxK@d$JH~nmBY69pI z7ac89G6qy0nlZc4)GGW1^>O>lsS!hse{SO=6_!>hc;vy&g6;*zwW=S7l*Qb?>97xy zInVB-sU7_rT|sl4iDzXNv-AR{@r@k^s$X9^ZxrM}!cd1mX?=aywePkSi)QY2t;biI|g-J)Ny9_)W?dw|seMJ<(*wBZD zh6deoeZ~W0Lyo&jh!f@xzMrfobs)xia9@$6m>h|ViTReTDlac@RcUveH^@V+ef^pV zjBvO}FY4Unh*{7Fa}@5J_<91P@Vj^KAX0N`@e^=;2qkQEgD9nCc==V(@Y}bgKA&5* zSI4a09CJ=+G-9StAeV4#xIjDuoW*UCdK{a6q5VaAslfF}J^N6bUs1D+Vs!I^6SrdE+~zBGPT) z-c^*9$4A`;9=iJYq?Y5=kChxvVxv0HM&Eb<-x+Vd`tcdXiIbSR(BD4+fDgOR0<2^b zF~<6yB+S126~ZZo59QwiUV`WKoo?bK*n5+~uXeP@Um1`6358nuF0|Dw$;(OrU*pGN zN_xwM33(+G4MlLH$BHU23I76MTPnBr?=6w6;3lQ}p|z-9{UAV(n@mhb-hcSOaFD?} z&QG`jv^r#afs^*~gWm|FJF z&wi=Gvs!r|Az+wwAKnqXa4gOU>7>Mu#J#VM3Z4QM`zRxWe#zz_InmJZh4kBpjRtM@A&R zxVX57FZb-t)KXzNVw9qeTykn+V0)n3s>@-oFYMF3_9GJ0=f5nZ!rz?HK)P54AIL31 z_+am`jB^jDHb~bv_;HHL;vv?oN0RVl8~q!i>P&uToqMRV*b60_PMm(G!hfQ-HxKnqI_hL(f5^0gz08|mL|dD0Zc*e2x^D!u9DUtAg53drX@oWotCd?D z_|4Qhp?R1HWd}Afl^tEgDUXr(rA8n)igN=w3S9&rpBYB|IfHFDaYj)Q9hD4t9XSKR zt6pRESCX+dBE;vTXK-@d+|~QU?hr-Wleet5pg2jB8M#coopfk2=1wS!@P{W0V zw|*`9Z)=;;Va+79SVFGa5MR};Y*IVy;expur$gRdCf7tMb_08;F?4Wn;EFVOq;vws znpPaa*K~aW>&NN>#FC|-?lQ47cwjOg4!6e~07sdwE9)coyA|jyqEc1%pA z_nS71zAIew)`R0IMrYCJ0im^R2EZk32c569dU??0Zfl$zyKa6qI6HJGyVl_Ac?FH< zQCJOGd8BayGFGrB`;g>AnT^TjYr<1$*zBj|l$3*_=;m`#(&+V}6&j0u+40+Mc&hKX2ET$wm%88*2PL7`ce5 zQGD19yn_T?ea$WUT0wJbYirBAdUT?epE`(o-L%o3%38Q@FJ{8JXn81P;&eUZXNR+8 zoaqMqvcbAdDUBPV$ce8>o+sYa>xd*CP5KCRwuY<)$sW8LzPEwOfg0|JyuT-Uce&5d z(9i}+BugNj(Fg690As*{w1@1b4w}j))p$+3lei1=>|GSPh}BzX(URf&VAT}lb38pg zccyxKNuOfwQj~}N{weRB*@;X8E%!H#a4-_!SUdbRs5Vb(PMiyDwr8=vAi0JIeK(;* z3;%wp@^xdJ7c9oT3gkvW04Tb2d(SKF`4A2?`VBi`Rs|10h3oqox#*>N0Pf}Z`uaLV zM|6%CAz#;WNtKgBMn}ImgA9uyVibp1W|b^wEB%tZHxfwO1pPB1i0d2)2ElSip4GDZ z>0t3^gD|K20udIf`9m^<@T7qXmM90<^p8lq=E~~`GsgLfmp9kvv@c$~So5km;H#5K z6@e@x3S*5F6IQO#`H2xqbCco|$6aX8UnSfCf34w!4GIUkGd?gD)Tkax8r~0I5$07Z z=coD}N!5N7M&`oP(BB;S)YQ~O65?}j>B7>rEH0d!`~C|md(y7cEwhOxfBwRYc?P|r z?)4Y7A3Hgk+z@%tBm)#qzd;BkbeT=JJ+7^oC7(D&%7X-y-iU2i!xvw3zHF zL0<}GERa+FS)diS$F*m;u!hH{^I(7H$}NCXM`1Q3Zhv_ATkb=y@~t};iB}0Q6HI}S zBm2!%-^kbhEdQ9zU#RgIeGZXT$gvIxdl0wHrYsXKArD->YlDYq&Ft+YjMZQwPAk5-bZ={!{#hy-IAmkn3Obn5$rNyfEn zdUUL7McoCQ5lcyy=L~)P9KC)X5agiH!6#L_06Hnwj(tyh4_OPvBDp<8T9`c{N=nM) z@b7DDrX;wxyByW2$d#mO_48I%R)OUH^vp(ajLLp^1attqlN^HC9iI-Af##+rSL|vW z#p})1RUgO5fMe6+fXnpdsT=^b`#e3J`{)rU{Gdz7QeS>I!RpAmJD<+06$_^Dhc92a zX89x8>1eXu)J;jGbDXu8yYhG=s$HZBXh5A}eh!R3{<@+nWH+KGwM(L}T}Mgx<$)l_ zMEZ6AV7>jdj`d_BBo?W1z}_Ew{hIjIU&#C25|!S=vc87SoMu9Adsnc`!8^0?EVkG% z#}XJn`Vho-WtAIzQ_z?|jhk)_VToR3B%v}7)ztI~Dan9nE{9rJ?h;`Mzss?Vx#l2c zxyPIQmxf!l-2Omz8?wHQ!P_1?>^Dd>3dlW34GEqs&@%6?j`>2)acviX5EzU}Cv~TE z6~!bwO+{FqXhe}ntA23icxFswZ~s7)3@4f~`%8=oRV;=a?CnYSF0HOoZn%duqPW%C?;e&P+aF!6bn@T1(zoc`!JDjvf>GJsf2*9=cx zxNyOa$qukkjV{YOCr+Z6!do(`CB_8=nAmvg4lxe*NLm`;?sQ7PZrNO~4i^%?bnVxk zch;vH;m;M9BvQGajGZ77!akI9GfMZJ>rMb~8<3DS-C}1LN6ejarj4I-65jUB72v>s zc$yUa$D@qtGb;J#T;jN>q!ex)%nocuHEs4j)Tv+RF6Z|9u$R41dGqAlU4U7FmeT;9 zjr~eU{|vwGeil!0o(?z8bf1;52gjS-(_;~;c0P`;ZpQtsh!jZ-&(?U2^J@qV^u2ya zRDZ|tTYn<{`*(>iznB5z8zoQ?+MiGAA5y_@oguyqLg=QwRRCf3m)_b7|SL?R-yJ+F|#mN~5!rNC*1X57OR>B%k zkdtF9QWBckZ&MN?Q#}dlr<2)GG@YvkzS3J-`_qLAs?VQ4zkWcT(p(@{JN4_^RPYLH z9%0{D6Z$(dc}vaPVO)= zGO`lunmH(FUu)RGznny!J1Ap7y-M!w2;lzm;pX9&8`*eR6b&mEyE{T}589Zx3LUn|a0&PDc>F;P z!7mAiHV(D%kW{8GR(kY)mrMp{X4=7BJ5(`)RaOSdAdn%TtleMqzkd6cKsE8Q(o|Pv z+sar_P-}v{&$L{UgbF=W4rLO8;8 z_D1>Mu*!%t6nBUAu$0iwt}XyMYN2~Pgd1ROcVARQD`ID$&VeJlJniE9(0~IAf&F{J z7mqW3-U%S_IeL1E?KDAUEV9iMHH&T6F|~DsWe*&xR9d;yuNf#iaED%f&(3J_L&K7{ z6qpnptbjZ0s`GASpMpQ%v%K_t`DI(p%BOYG!3E4Q-0Dk7AIIlT)n6^5#>GDeU2VEhhjM5O^8MfiFU{B*s3M+X z1dPPTNas>(ywsgR!mI05e?RZv-ZeL^JA>LgfJL#6Qd4D<^_CJOX5w zMi6w@Sj!hquPG|qt*v(|;;pLex0i#G^!@xtFBKG$FC0qJzk?cq$w{Yck zcZpw!>$zO3R}CiHBz3vGVIXWDE z0E|C%;=^8PZW=Ol&mxE-^yh0IT--U+3HnV_OA8l73=cVGmxqgzm_(i2+f<7yBMmO9Yi_|Lc7R zJ3G5nZnabt#owWFDjZm^5N=I_d{bX)2lYqBTStF(XL#r;YatvzGIsRm;OY1%?Hk7Z zy3R;jee&Dto+XJl#)~gPoLIIF!mI8GiJ?!?5ml`|LjHcR-D3fMHe65%nQm&rq@?@`->Og z6jUx3ipun4XuYgx_$)6uK{oAzhEzI94ck<7-J*l`W2NgSL*@Sxa7LQ!-5%`@(kG*< z1ur;@mrVilPSuyjt$1^4U0>Swi*j2+$-~=^@=$2}!U``D>6M`K$+X?H-2vZ5N*S&B zenfCD-CV1e=)7a7;m{g<;)lgnag$Ofe-?vlC@3?L7h+c9&MwZxkq$V4Uj30Wyvghg%LlSIJ< zAD~t~t!g*oW@RP+kc9N?MX{Q-GGnYazm~i9XFXC2SDk@GzJO7;y51EP>mo>7ud#YTrAR#^Sg3b*1y?2vGYePG;9y+Sl@$rQ+?}xAIYsd&UK<&v629PmMgif9p1ThZu zM{_9}jxy`$Zq#^BkC0X@RS%@BQA!sQvMnZ_21ISBWMySh;iNIp61y8Z6y-fXiN|u# z-FJ)MYk(-AGHZEn+qW_rj8QOI5A|`T_bCXvBs@faWZZFhU4E>vL3X-~vu;hbuC6W! zt<+Rh+KY3-z9u<**a-}Qp;aq$_h#G=L>C3EOWf#FQKSK%+y~zIQYG0Tgb@X0~m(dkny8bkbcASrX zkYA7hw_-LVBqZcT!B&u_NKBm!=L3kYUU{EeI?p73z?MmcTkAIm&D*G2u_@O}rA`uw zrGebyVln88G?kC5bQpA45HK+LadW)*I9hJH$&&^e+=_nc>j?0FA4s$hR)D^xte~9^ zh@yu)O)OAamORgH34|g2q|H3mWb@c`03eHWtSM7UjhIAix!x z%#xN1_vcD<&drb$fBXH1AVzc+yOueAZf#gn>L?;94)zyze)gIvJ#4iDhrH_Qulm@Me ziqUjtTaztF5V&JKJv~hvk?5v?WC^y@USv*>R6>{^V(FJ8X0OQ*~a1iBG1=OeYb<;vPIn$Lm7RYs0UyL|LpKH45cE^ z?NZlJA)R2_n(c~}Mv)w#LjPO zvdHthObFn7klRcbw$)8?3^h=p<*#QjoG9_D;Z)>L)z^qWJy(m}g41$}hCwoWn-Gln zm&$^;;hJyt50$053$>$3r0EN6UPadw!P?qd&8A<52ua|}f9%{oZY>H53W7N4Y^+oK zA*3Iz7C*t6wpVI)Y81AR;2_EXt~~nzeUT>-(&kU3kRomD`5)FD?ik?Z$}eC~HXL^* zf+O^usw!WQY$v*$0Z@^6+A!)gXnNz=vse{;a`(^-C)v&<4cdmE;zZM>gVu1mXD-X_ zdfee_7XSRsd`0L^6~^;9B^{ulL$S-pM&E71Y`VhBbUd}#%<}sND-c~iN98w4{1%Qx6o-D>a%?3!Ce@WxU6F!g z^B?TwPTZ!Y&HSQj2|GvwcF` zO0?=9v(P9V2q776h7}tzHPwe9=~c#8-V5c!YAdX$H7uu7_^NDL&kZil#6 zdz`5Ep{)AH#gqm|^!SFlub{akTd!w$mBS60Sp{EnNKDk1_0 z+qOG)l$HRe8X&8P{2v=L*Lq4vr^TVA?s~wzKiN&T?FwE`@Hb1#;5PaGyA`7`Cd zpC2!(rEsZSa`<%3-(N;SftG^8^i4H{;-OO*&Gvnts9OScmK;ZfA9+i?HM;Trf!&As zBJgVco}(1`Wak>!zuz6aI2UfN6nx_8X(TQ#?qGkvM?~^wa$=$;+t*&d_H!x=SDc(W z)#}4mMoPiA0v`D2vS0#|)q0El0|+<3POkP3efiP`boFoul9=g)BWCFPJe%M!g0IkP z?<3A;d0D!<6ix>~+@JJSZvCODFr#MW?HzSO#guRr=WNj547d?xte07&~DfPYMO z<;}Bv$5!a;34K_}A!&Jeb2#JlP0Fsx7|O4UMU}nEPN%))7l3{&BF2atxFlrz{i?k0 zo{JFck4#Sker&HYyycj5z$sl!Sn@X|> zcTa?a@$T^YmsUAh+2F&yn&9#0R2ci_J|qvafE4`-@LADRWxD&|(WD=*#c$I;)=dbi zf1$uovK~ZI6B5W%$VPWqn3zYr!sS@8w>XlED3&~O+cQz)-Q7fv+ggI2X4;LbtKub1AbopA>xcs0?LW>c5KV55h9T_V%BXuTb zVYv?-V6@8Napp~6fK6LK82zv2>l|8Eihvz}$%C_mQ&dz`M2!VGaQ4SfgwPMXehG1L z(0TzRBY~S$hn>eiK@f2svVsl`9w!WfS3gN)vG)+c?e3(UIFh*}l8lOIN$cV18Xvd5 z-QI>!9mLNnCKJ|e7$%oV8&ObF{*$T$o8dGG*@1^|l`^u35ZO6HI@Aq%V zUr?pkP~wG@{%{a^)diuUr5(I0JP54TrrZ)D?x#sBX)w&sHNh3`y{Bz?Shj7@lge2} zk5llOrn_d0NaM0Z&4jpKYr;8vdfPgGs<}njjarUqqPM|Y%LND?uGIBvMU^eE96+N7 z3O$-=Sa168(@@f8*nhTE@qFS`QA)BuH~3n0l=1>{^y67Rr~O$G9%j9}io_CpsOnj{ zu0m2PM4E3Neh8q@RW0>ISmGM0AU~gn7)i=S#OWQ&)MDi!eg~KuuLqtjti;zho)cyl zyUmI-EYo0gITaLMJVAoM?1LQvqt8;l@Z(1+SrY^vD3BwlT7UQEX|Hp)`p@gi$<-|o zR{vzGhXrfoR@McT5x+1XA#VNim8kdLx!02uzn|uK3ieVvRK)16<;d?Jm#>-WnYk;m zMMd4)gL6vd%r_($HkD2JkaAVxlpvNfdj|*n1Mn*cHnAYejFMpVVYf9HYJh`eCkS#J zCKRl)J?~4LC_DItleR_54C0>eBv&V z?(1U?;UJ&<03{AMTm^y$O5oO?9ms0u`et2kx{y(Byi!buE1X_LOJk||kEhe+-S-Rm3t<|UuCnfC z&K!hvuT!z%`MiNXl3})&u=EEj{|D$!H&j=@0e=XhDH(9~I~~4<|Bfz?=anlx#TkHA zDJQFsk6#~IBF;;2GDzCz%>y~%CW3eYN<*%A~DBnI|y7FFZ!i=cMW0`d^H_byQZ{7dHCRA>G~GAzdon z-5rt=0!o)imwyb8(a8bzJV8E0yO0TaZ8J9C}5+&yw{xZ26aS> z1FrYAvJjQz`6mmCnCFTQB1^Y^t3K`9D~s$6C3pvASgpaICA^P|Qw4zqw(`c;_&iW{ z0-|1;`+#+V+Nd(e-8tpqh?4Z8HebPJinhlqboNJ#z=r=4*947W1i$Jw)~Kgzs!1=_ zoE4-@7gSOOKlla$vj2sDx{%v7c4Jfeq5h)WgTjrmQbP^T4;=_w@JpxEjcq7VnN%Pk z#SR=73WPINOd(X@wOn+qDQ^Mgrn3zjN$9=sU=nfZ0B;V~r4jZ}mUH_$dPYEDBjM%w z8{e#guP*<`^CZCet={r|XYHasMPU~G&9za%2f6?28brSvv3%OD)h!?Q*Qfhw`PE*~ zcZU5ZICdUEFYv!pnq8ELZ7pJuhZ&()&IzLiBL|a~Cl45qkg}qAH7g0-zFMF8Uigub zx8k1uxPH)kbiul4NlAsTmbb4m9!fAonn+*f0M`UUo4^+1?_7STpcTOTWssBN^8mQ} z0Fcwria4wXQ`JF-mlng3t}e+8P|(n@fe=#S;dS$t88z_Sz3x(#xak&G ze*+pg(MU&rc3#YGBXXFlb(FBhRymg&~_ z41?nUSjc4x#pk|P2oK(^2_C2M&efX{aLe^dK@j*F4CyIf_~??9nF zsEYX&S0cNa+TPuCINgkq5Q zdjLe13rG(S2?1~nX2!BuqX5rf0Jv0W2PRMib%eC~-*^L}JczWTbp-sb+~1yqxV;Y@ zRA|f^ghWIfpp1ud*qI&^10Cvp6V6-fb?uuRO|`}r{j=FWrU`HMsf}7E90MIhi}-k_ zW$Knff!b&v15=4)@rPqZ-N&T?4i0!Kf=-&6<6!cf0K7v-X9Z#g(EEx_vv3f^?;yq& zmqpf~2?LtQt^$7BZxAl5`0@X*D#^t;aA#3V(7FMb>-b5qIQcUbu%PP@Oh)*^RGEI> zXeSZ|*`wwG0ex|h1b0i{Twgzg)w_nJwE{Zpog5piMBt;}fiu}{bC{2p7jDN)OjUJ+ zLd+Y&<#oIUW8D4S86gYiJvh`#b;H`)B&vX{9o`v}>loBkRzgjKg1$O}(3&JF?p*_j z>D98C%SKo40Dtg#zM z{8O1Y0c3KLj4q&(a9#V#ZPAUat2+(4jzQ{v?pD763rNVU(G4VPkMSQNP<{G}SOn;& zP|`Uth39T=aBDM2FOxY2Eofkiv zkTHD&VnyP>gC9*cc6LApDrXFdhF2q9*M@MVPE?pmpfO{$!0-b8@*_O|Jc{3^+i(ma zVWlQ)@57MvIy+bl7)<3hGLNBX13}x0 zO}07e>wz8py~Q@lRCq#lK9EI8b}c~`0OR+I>-U)%JWi9$xD)6>%wK~aR9ZBO2gE2y zOZRM~BWF7VW)xFpdf=nl9zbaMpZ?Cv%>}iuAmZ9>z>*mHKCusKd>uslHrNmtxvwzG zJjjjzlmePT`?37X-HJA>^$!9bbXX}Q)Fp`1LV~(wdL5IJ$Q=GDgsX7fhC4lvpRp{c zSzWfDisB3#-DxHZD^pc|0NNs#)8Jks9;-30jU#-v(= z10B))JVQZzE(=(`x4#92avh~U?L6%jM3lBf2dz&kgFoPxV48pQc2Y~4M5seSs;qVW z^d=>M3tI$RfEDlG;Syq`Zx7s>2-|V*en=cUS49p7g!Ql_(y1f2y{K?+_sG58M>sD#|NmmgXdJ<4zr(`kv9K@ z?q>jVts_n5*=Gw;6tgNNAj&ne{1p>o)Zy@AZD)>b82Y2srkLQlD=Jo z8gB%g3yAyxVJtAQ7-=y^`E}?YW*NZUF_}OX0cb=}wsvA-B506s1!$>ZL%I%dTr1C< z#PF~VUG5A3s}|J2OUq6GZ>rnplW13080M-Jf%z^7txFzPMIXIdBtlvO-XLJ5@LdfI zXx*dy-UwhY!+_FzJqtMLrCPwBU6Az%s>>z=8&|9Dwvh7}>Vavog@Lg($X+_@cLYf?t?KVe_ zo}noNw2!^{hD7$xC%1qxF)Y6uN!7aVR`Q39Y5UUSV;0`iO|;?dWMF^C2w$mfwQ^nla!8*4)7e)$Y#hcQDP*f-R9QTq2JUjYf&Mg-exZMh_fz; z!@tmb;ya9c0k;a$ylEYBAR!1BylXnZ`b`k^Bm|ZE4j{B}J{IIhqj8|w88Zhj5OM;B z1KDRFk4w0q!N`BC&?*Fqop>yOu{;y^J_5|~6XQ(b7pT9whbx@2Y*}CjhNh-;@<0G) z2WjW#E^&Uau*lBNQed(7%3|!tUcz{7#ncnpU&=gxLp`pRINb~=zo)bF$s9AHMGK&_ z1e(wCprN2J>y*s^GDK@w|D-i4Y~_16L6#@pn+(SKG(*D`uzQjA3A@b9-4eAQj+{GP z+unAk*?@E%0Crz8sbJ4R21{J#4YC%~&$jW$xu*f3dnho}?N(Qy0sy*tqLY||bw)^$ zcwm<#eNI@y%?A+cD6;mQgzl(RJ_f-x2xVdJc|$Gk2ut4}eFN&V3)Hc#VTg+2!y4U$ zU8wgl`rmkW8|i+m#9~pVu6(Q&?snNbl5Ohoq4@V%0=yXz{Lr3_VS=uobODl~e zMnaA$;>{BmPfej113SzG5Q(nALj&W9U{)?Eh^%k?LZcjp;%bVKc9M}QG(%#&k6qhp zI&*V#zbyh;%bz5o7(fnTSV`ZiLzornIfD|;Zz__FTAB+Rai6Kd2ty~N9`)qt$QCT9b2IF}LLjJ6XJm`DRY2qnh4578xRH8q3$JZ$2NOTK>lON+r{Wr$17=oq zM`L(YR8(Rj?ybaV*p`66{kRfRsf~g-MxGYHFJqMll7dUMpZd>wHCTYSU+)_OR*EbwVlb7?P^|rfwm$9Vxuo4&(h*ewLxs z2L%G>`IdRBPFGG&^exRS2$u=>`1~=?{UzImVz<9Ge!nciANK8=?2yQxR_T9`{U?v{ zBEBCS4n4;&Q@=J_orMc}T{kVy|v&^a9?+$cx z4r1;^#AQHrbl?@#E(KrEv9Pc_e26CjbYq~|WZKfe!@oo@Vl}5xb<>{KmBoarl8|p! zfHbzO_~_9iph8+`3sC)|c;X!TaNhZt*Y7)JEOZFoDPUWIJY->T5N$&Q^aS<%`sE8E z6Hu6xCM8V*mxwdC1HcGC036B|6H!r0L#5@EgtFDL{axK=Kf;@B!a<*NyADDc;7>v4 z)=IQ?XcvV9`T+n57#kTOVp2S_w+FV;i}8uHCD+r(=L8p=aDWixcg^@mWtPG}@!%+h zY+4f@BT2jEs<7bf`)VbmPVInr{oZ1Eh48 z%-A;qOiaiU;QYnL1)ybVQ5q1LV44m9NkD7@=rEk0ojKP=?dh*y$#0<(lv+VN$nWf! zBcr21;OPomxd7$+#|(kCAcuLtDy5XlT&}?E0gO}!kih^Wv&^*3#F8X3@P23V;+=JN z(JpvNE&RZ*epeq^qu4JaNEzGwiNo6N@($8GNHccHr5{IQCW+)yGSB;t)cD@a=o#v^ zZ2J}^8(W3<(ML)h3_}z-kycrSN_eX@I1s&Ux_`Xu<(yAT>Rm;lc`A`VUKy z__H^5j<%`5>?B`oYwzt_-^_wTwJK1=dI7lxcv8O(117+$$PIud1K=~&R(-E*XGTZW z+otLN+DL9g2!bMKg(7MChi@Xhalkd6?ib_XKL%q_JmsVNyA$bkolId1Y-|efC$&zq z4CT&d(E~6iHQ2zDE}CGu{*p2|r6(Vtzo8(1OOT>7>Y>iOz3k6?$Ond{1OlZ$&U$T- zeXHEvC-LDl09^t~l_)AfR4@oJPOOsxOIk8t}oy#Kh3cGXWe9C8M^iX>$r2)O328E(%^z zkg#2fjn*%vl>xL#G?1O0y}YaptjP(8dY=dA>CFJ#PQ-od8%S^GzJFJTSGsu(?$Jtk zmPiN;JgBQBWo)C~<$Or|swY33f4U>9>0w5wk!X4?*Qm4~d zz2Yqqkv4b7f*pQft&mJIh)NS^HUbq^s$zOYEUF+sP-k~FF?cM!cqv`b)Rd1E0A2C# zFo3FLe2ZeDR}FIC08j<@^c4Ji?*hX!qn`y&@h_&~3J`hQxv-O0E4Qssw22pab|EaBPf!%cz{i#4@se_`f3qq5|I1bb{4hdJ9(> z5zz-|C5L$+#{e>wc1%!Be%*-&bFZ9jasROJ0BPv-DUe|RLo6Z+1bE*pa4DeZ2B<0D zfBYc#f$9r$rBMEPyRaQ0N;O!nd+*DP2xX$^d^8dQ3LK!FwDKt{F9)!*GNjP|3GlK2 zZv#HM583PmfbpX!N&&KY?|Wg23CRntKE@+nZ6qh_f4IL_F|rvP;omSKVx)6g-#||T z&hKc`LKXUA@X&PUgeejxIZ@~Fy|gzaA5Ee)d5SOG=g{Lh@iGiuRQ`AhOA4f{^jTaA zpm@R50sgcBG3!MT6v_v#`QBK@lDywj<{KMp*Js%4s}W>hBdpC~0MLR9kI_hw&! zE*L8m&tC3KL_q%jAkKT4I^o6^U}qcg`}{Fe`ao zg5Dv1)AWj~eOO>p&yXP;Ce0V1X450~pDQtUq@@+kJrt{tOSXKhQd#gAz&+97+X0d` z0CZ2_{MqbA^|u23M?_HCCsctwat@UelCz76a1IIRj(YeYF;C=xO#&cYNiuSB02OG8 z=>TO=sFA_n8Enix-1ul8!n@T}7>jq90KHZaQp64<`%qbQk*56};d4xKc6P>=mr%Pz z$8HCbZa^CV;bIF-IGE+^KlE?aX|&+QoAYn+bHvOHp?_|(*z8rURjdJcrd&Ai8UI+) z=aPk#_B#q;*V#gYFlnfVrV0cdv8RA44P-37*B9JsSpUpa;!a4ILdq(oaHF7Z`Yp=m?rlYE~Qr~ zgi*Z}p?7*12vPyi^r;6BriFxr#PC2nrax<+;LXiFRyubl=6-rh3|*Zq2>+GAj6Ivd zYw15%qbH%-tsWd5+3Qh&QcHc6aM}- zs>b{<5b7rtA)xmqkT_MJfQ_9?ppc33q%YVWfvAX_o4%~zOJYK zIrNI;AwZPRX4(qM)|oBga1x+BId)zb?@ti8egQU`;@Z$Kqd36QUH&rmH*b=YvyPv4 z5cCD}AR9P%tf8iVOx@4p-dhGJFV3|6_JO**hxhGCz7m+51AH&#Zy0QY)gUcf+|&A# zv(6qn*@?3yx1SzDN)reIo@T$_FQ1P9X9_yoG5)ns-tc)7LEBvC>pxMZ9bP+N?o}PY zSn>k!@84UBeb$5)`|np8RuK3=P-w?J7ZehLa?So)orVMmdbT^nBSB2QjoS`T;{yOK zYH7{;;a!7fV}<}i_-BtNxkW|3T@XtezEOSPw@m?pDV&=KW6=t&u#1Qp+f`J|Wb zkx}j=H>!Nt(zperoH~ zagbkBl)s(?;wV$Cv-G~W3aE9QqM5yJ``MF7)_$S72>0ihVosl9blx7NwtH>|N@j19 zjAG?-e4!V+V=MvY2p|iaz;nS`0BIiV;oWx;%*qcRPw$+oBKmFiX>)~$P&l$=cjW$i_Y3Uz8oss3SAOt%8!xHVH^h>4@o4HFNbrRk1MDipp z;aFcFQ5*$qeKpKQ%lU$$vT{fafI|HNK|rJU6jXS?=TaX1dFsej0W+PHIn8q~)QE)^ z(h=RVh5DcItntFPB>*(sXoeYb-fB*gv6~5cK?S}vFI!v)C8$7lO z!D2*8I2Ah-k9SY|Fes2|jRSr2aTu_{*9%fib^rwo_}d!3x?CV$s{&uS`1|5CyhhD( zT1xqgjIsXmW9MoDG((A4&yTj=iw?eGNJvZs6_irSz*Eq&acj#Ko@)yCZP>AaGaKbf zYR7R4#Q68Q!_?8jbMH`TpFkqJe z@%ZNV;vEo66aZvbUw^N8)4oQSoqedM=V^C1Hc;J0g@=3E|E>h>6et6(v4M0^ZNZI` zQ(#Qck2%Z(jHX!y!z`C!?h=T=cV}yMqc~eHKqaW{_G*`NYUbVJU_b$5O&Q3U#c&bK zgx2o?X$9E~3^m)?%bp&4*8;WOo%7H5@|)yJ3r1~S$bfhX6d(r%28OO_x_d$3-~+I) z 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 literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-ndsort=1-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf8b4e47ec3cd56a67222f2970d7ee48f4f319a GIT binary patch literal 46362 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 literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..85ba950d8aae430d1d929a80bb4dfb9377bb093a GIT binary patch literal 42627 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

    uc#mfF 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 IAa3CIKSRb9W&i*H literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-2d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-2d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..31d9cb50cd1c8c9b439792598a7db7e643020b73 GIT binary patch literal 49918 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

    klLeBymxWoeNhWW zq4{ji8mO+j0rgfcxyJ}}k#8f_)-^Pc-Au$YD5mX_`he^L;9Y?&dNh^D``>}u7(uIX zV_`IAbtzTPI?ZHd!X3Ht|M?hpSWl`gr}JJ2lOUc5I<;fu5BXEY3ydM3DU7&%9p47< zXn)?c;(|P92yYBEcV~_f3fs@;^?r%T$d0;I^~6n1ra6)%5$fQSs|X zLws~}T|Y4q$n9G$=`Y0poqcF~P7M4IiL9_JqSI5z-#P*#O9v-Ono(du1`LAbl3g#4 zObew}O_Eu3T{Z?tonCZGA=c#ubvQ^{TG|Z~#cL#JBhhtTEJQq~XNjA(k+vKiwx}rtk7FYX#=Bjc^ z5>NxoD^d^Pz;}2IB(d~{ze^EUH8(edJA6o&H@l#tBNxF|*_}YpSzn!-Lc%tj5@*C; zt3iNoyiRH;hq-B1_V)&ZA;!YNjql|q_EjgHnx6i6zUT^4IXtpC+W$Cj8xVE40K zOG{6Wx~@D*w}R}OWzryw9U{&hm~#f~LnKGJgR|cK+Nm6VX|0T##1YhS@vpP%B(16X zN}`QK0?yHVW-M-OZ_w6~gJZ)hl8rvtiA(eT#wr99oRyTfkO{dwKRp0xGB|MiYXy%n zu&(ggMLe6}ium-&?N9xt8pmy^XugLXVA93(`XV4@y8!yt5AC682}sFiQhK^jc6)YT zWlarlxG+d&`P^QK1p`-BZrNZZ+Ph7WJCOb{>$Tk+$^gEordcn&bzZc-qU}`vA_a8n znB=_AIXFg}hQBv9UIRKReEAN34q)hJy(1TKV>WgyEcAnBGr4g_URZBUI4pTPi4qBn z*Q*OtNaAx2yMCrD$o(_vwcf!!!O+jxxLgn5LRT+;ONzVezXlTXhqK_dx#x%g;^|o` zbzkRkS9tJILlmI!XjWWZdANBjfi&2+Z{J)}{>LAue*nJd8eq%dU}3R%+R(%n-kN+m zf_WY0<}{Vj0#RBQYfMtL$K1g9umApg|B5#M2{-?aHsb$xxUu+qJb26f_xN7})|5+9 zR@Png$D07DFP5#qiK7&F-rjECet7fd!OaJGd8{QAZf@{RoscSE0SuJupue=g2|^Sq zL4m!w-3z!3VDi^D(bf3pzZj~3D?*uJD;!K_ER2k!mk7R}^;qp0??WJN8#o=0$l*;S z4=zqlV4v!>H9|f4zBpjIr^g)3VE}eYb5o+m6#ZD}42)4Nc(wrnV6{B}O&#Lm;!;yp z<#h>7M#Ch5z_}9xiXRGcapAv=&&(|A1LW`VET1dJ)3jcbp%jj_L`{Rs;g4|OM;6!D zCu19nf`S5K?mfvzW(!l#E z4=+^Wl+~in5sI<&;qREwan(dbL;!BE7$H-&*{wkSA1O^DU`B0&FiwS!k5qndbqD4rrJi=fv-4XMrpzm+8v*U6Exz-n{d7XJWP5x zBC`u4=ayYr(CkxF*q7@fRmY6YqD|KG*Ug6UL#r24q)RPB=bvlmW8!+h78f6N9Gts0 z>f0JKCH9$ciugFc%sLf+L4keiW2j7k?ovKI9<4;b%(@-4s>v z^zN#|g>7J*dik_2Q=-ALK>FaiW>5{;LkI#YoN(=M#)8}Gc(FjIG{3ZW?5=&@hL?q? z--3H?-zB{3RpX!QQ%IHqgS6XIJn5%+!;vaRC6j4`Wuf@Dyf+NH7if>}qu-l?Ti!*9Ay0 zHA>WPD|z~$Kja4G>EkCFl%7#U_tZi@j*rr}sCcWZKgJG;n1wn*k1sn{+ltU0utOlo qBoGMhTL`#+|MT;cHVEXV)(6q@^iZAn7o`9M9MX~s5@oO6`u`s*(6#OW literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-hypercube-uniform-rep4-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..7e312007f20c3ae27568fd792bd49c4a42944d6b GIT binary patch literal 44140 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 JC~tM^{{W(&HDUk& literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-2d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-2d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..e9967f98178fc274ffab262fab5fb25feef9c0c6 GIT binary patch literal 51149 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 DzNb0e literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..a6e0de8b0c23d1f26233aee9b69f56736893b915 GIT binary patch literal 46227 zcma%jcQ}^+-}iZ4_THQ9m6;Gi_Q;5A8JE2?l9h4UWJ|JlDp5unLU!3?gpv^@D5QI!yOYJIxps@&onkPiV zzce-IG{7Hn{_5ubM&8c;fp&gQh@PFlkEgf4r<*-TfRo=1H}C7`MbC+g$_R6~`uqFb zkP{R0`tR=$_4acSYrl4L2(Cipqh)aeK`87_f1@5=dfYeLYq(s9xw&)mkSc`wrno7Y~S zZF(23riP2kK?;6NKKJ@qW%9VJ@zv|sYm{w?iHYaVojdsZzF)J{fP-6GTYJWn6t{9_ zBS${i4}W;$bIYyrhc`&E4h{}qzI-|VWu!BX?6G-W*>$NenIeygjT%>f5zXrk-l{~u zw0<2hR;l+9uHPE=n@=y#xI_shoUyHsi$T{a4)phvY^)FDo_FfYvS{*uM2}o6lI4rDV**SGm1-b+TC{ z91{kDlT6Yr;kGLE^3R$*Nw${rU)fshCfSz0aQ&0(T&qH=O>@w8_@ASe(8H^DY?aO| z;Cj!s&el8W?3O<^c^q)CWw)JeZ=`prPqUsZ@acJ%AxQ~|zT!)lc4EifZ@)6kT%66l z=zKqHb^H;XkZFlVdhJl*MV&aw^^Favu;2FGw@Z%=(Se(vGKl<7j@F(!59Zl9WD#BN znVd9jl!qs7)e`dS)2kbo!j5SBZCgU5{8vWa-`6RR$%wu5_t)jt(#=f_e+nu zy85HNk7pD@VnhZ92fGvPL>4+?Nj KEAm0XV+-D-pSD5*Xo37e%2%ZiKcWh7tgrO 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 literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-4d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-inverted-simplex-4d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..0a11b327695e88c58a9c4c2fdf6260885c987c45 GIT binary patch literal 40882 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 z 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%0ATU!TjEv8@ev@v7U$d$a2L2Szx^{lg{ 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 CBSMV; literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-3d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-3d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..b0644dd24ba30eeb58dc1859fe40e9a231106607 GIT binary patch literal 45183 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⁣}bb7l@ac#J^e7aNb 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 literal 0 HcmV?d00001 diff --git a/python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-4d-time.png b/python/doc/source/_static/bench/unbarchive_add_bench-within-concave-sphere-4d-time.png new file mode 100644 index 0000000000000000000000000000000000000000..6565fddb0bf0207a287c9f4a39f03afd01f08b88 GIT binary patch literal 45589 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 *7gR&G?M>k4#QYTnp1=(;wg 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 literal 0 HcmV?d00001 diff --git a/python/doc/source/benchmarks.inc.rst b/python/doc/source/benchmarks.inc.rst index 951d692b7..072c7d39b 100644 --- a/python/doc/source/benchmarks.inc.rst +++ b/python/doc/source/benchmarks.inc.rst @@ -260,6 +260,11 @@ The following plots benchmark the speed of computing the :ref:`epsilon indicator :width: 48% +Archiving Benchmarks +-------------------- + +See :ref:`Archiving Benchmarks `. + .. _BoFire: https://experimental-design.github.io/bofire/ .. _BoTorch: https://botorch.org/ diff --git a/python/doc/source/benchmarks_archiving.rst b/python/doc/source/benchmarks_archiving.rst new file mode 100644 index 000000000..14e83af02 --- /dev/null +++ b/python/doc/source/benchmarks_archiving.rst @@ -0,0 +1,162 @@ +:orphan: + +.. _benchmarks_archiving: + +#################### +Archiving Benchmarks +#################### + +The following plots compare the performance of archiving algorithms in `moocore`_ and `moarchiving`_. + +The sequences are generated using :func:`~moocore.generate_ndset` and :func:`~moocore.generate_sequence`. + +The source code for the benchmarks below can be found at https://github.com/multi-objective/moocore/tree/main/python/benchmarks . + +Unbounded Archiving +------------------- + +This benchmark compares :func:`moocore.UnboundedArchive` and +|moarchiving_get_mo_archive|_. Each archive is given the number of points in +the x-axis, one at a time. We measure the CPU time required to archive the +whole sequence of points and divide it by the number of points, which gives an +estimation of the time to process each point for different input sizes. In +addition, the plots show the total time required by +:func:`~moocore.filter_dominated` to process the input sequence. The time +required by :func:`~moocore.filter_dominated` can be seen as an upper-bound. + +2D +~~ + +|unbarchive_add_bench-glas2017,c=0.5-2d-time| |unbarchive_add_bench-glas2017,c=2.0-2d-time| + +|unbarchive_add_bench-hypercube-uniform-2d-time| |unbarchive_add_bench-hypercube-uniform-rep4-2d-time| + +|unbarchive_add_bench-hypercube-ndsort=-1-2d-time| |unbarchive_add_bench-hypercube-ndsort=1-2d-time| + +|unbarchive_add_bench-inverted-simplex-2d-time| |unbarchive_add_bench-within-concave-sphere-2d-time| + +.. |unbarchive_add_bench-glas2017,c=0.5-2d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=0.5-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-glas2017,c=2.0-2d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=2.0-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-inverted-simplex-2d-time| image:: _static/bench/unbarchive_add_bench-inverted-simplex-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-2d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-rep4-2d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-rep4-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=-1-2d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=-1-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=1-2d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=1-2d-time.png + :width: 49% + +.. |unbarchive_add_bench-within-concave-sphere-2d-time| image:: _static/bench/unbarchive_add_bench-within-concave-sphere-2d-time.png + :width: 49% + + + +3D +~~ + + +|unbarchive_add_bench-glas2017,c=0.5-3d-time| |unbarchive_add_bench-glas2017,c=2.0-3d-time| + +|unbarchive_add_bench-hypercube-uniform-3d-time| |unbarchive_add_bench-hypercube-uniform-rep4-3d-time| + +|unbarchive_add_bench-hypercube-ndsort=-1-3d-time| |unbarchive_add_bench-hypercube-ndsort=1-3d-time| + +|unbarchive_add_bench-inverted-simplex-3d-time| |unbarchive_add_bench-within-concave-sphere-3d-time| + +|unbarchive_add_bench-cliff-concave-3d-time| |unbarchive_add_bench-cliff-convex-3d-time| + +.. |unbarchive_add_bench-glas2017,c=0.5-3d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=0.5-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-glas2017,c=2.0-3d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=2.0-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-inverted-simplex-3d-time| image:: _static/bench/unbarchive_add_bench-inverted-simplex-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-3d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-rep4-3d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-rep4-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=-1-3d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=-1-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=1-3d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=1-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-within-concave-sphere-3d-time| image:: _static/bench/unbarchive_add_bench-within-concave-sphere-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-cliff-concave-3d-time| image:: _static/bench/unbarchive_add_bench-cliff-concave-3d-time.png + :width: 49% + +.. |unbarchive_add_bench-cliff-convex-3d-time| image:: _static/bench/unbarchive_add_bench-cliff-convex-3d-time.png + :width: 49% + +4D +~~ + +|unbarchive_add_bench-glas2017,c=0.5-4d-time| |unbarchive_add_bench-glas2017,c=2.0-4d-time| + +|unbarchive_add_bench-hypercube-uniform-4d-time| |unbarchive_add_bench-hypercube-uniform-rep4-4d-time| + +|unbarchive_add_bench-hypercube-ndsort=-1-4d-time| |unbarchive_add_bench-hypercube-ndsort=1-4d-time| + +|unbarchive_add_bench-inverted-simplex-4d-time| |unbarchive_add_bench-within-concave-sphere-4d-time| + +|unbarchive_add_bench-cliff-concave-4d-time| |unbarchive_add_bench-cliff-convex-4d-time| + +.. |unbarchive_add_bench-glas2017,c=0.5-4d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=0.5-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-glas2017,c=2.0-4d-time| image:: _static/bench/unbarchive_add_bench-glas2017,c=2.0-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-inverted-simplex-4d-time| image:: _static/bench/unbarchive_add_bench-inverted-simplex-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-4d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-uniform-rep4-4d-time| image:: _static/bench/unbarchive_add_bench-hypercube-uniform-rep4-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=-1-4d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=-1-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-hypercube-ndsort=1-4d-time| image:: _static/bench/unbarchive_add_bench-hypercube-ndsort=1-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-within-concave-sphere-4d-time| image:: _static/bench/unbarchive_add_bench-within-concave-sphere-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-cliff-concave-4d-time| image:: _static/bench/unbarchive_add_bench-cliff-concave-4d-time.png + :width: 49% + +.. |unbarchive_add_bench-cliff-convex-4d-time| image:: _static/bench/unbarchive_add_bench-cliff-convex-4d-time.png + :width: 49% + + + +.. _moarchiving: https://cma-es.github.io/moarchiving/ +.. _moocore: https://multi-objective.github.io/moocore/python/ + +.. The :func: role expects a Python cross-reference, not an arbitrary URL. + Since reStructuredText does not support nested inline markup, use a + substitution to combine code formatting with an external hyperlink. + See https://www.docutils.org/FAQ.html#is-nested-inline-markup-possible + +.. |moarchiving_get_mo_archive| replace:: :code:`moarchiving.get_mo_archive` +.. _moarchiving_get_mo_archive: https://cma-es.github.io/moarchiving/moarchiving-apidocs/moarchiving.get_archive.html#get_mo_archive diff --git a/python/doc/source/reference/functions.archiving.rst b/python/doc/source/reference/functions.archiving.rst index ccab33242..5dd46c607 100644 --- a/python/doc/source/reference/functions.archiving.rst +++ b/python/doc/source/reference/functions.archiving.rst @@ -16,9 +16,3 @@ Unbounded Archiving of a Nondominated Set UnboundedArchive BaseUnboundedArchive - - -Bibliography -============ - -.. footbibliography:: diff --git a/python/doc/source/whatsnew/index.rst b/python/doc/source/whatsnew/index.rst index 61bbaca6b..3844e36ed 100644 --- a/python/doc/source/whatsnew/index.rst +++ b/python/doc/source/whatsnew/index.rst @@ -13,6 +13,7 @@ Version 0.4.0 - New shapes ``"concave-cliff"`` and ``"convex-cliff"`` added to :func:`~moocore.generate_ndset`. - New function :func:`~moocore.generate_sequence` to generate sequences of dominated and nondominated points. - New unbounded nondominated archive :func:`~moocore.UnboundedArchive`. +- New archiving benchmarks :ref:`benchmarks_archiving`. Version 0.3.2 (11/07/2026)