From 4ff613453089083094da6d911f2a4081f59d96a2 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Sun, 16 Oct 2022 21:33:59 -0300
Subject: [PATCH 01/12] Create new metrics for rank and crowding
---
pymoo/algorithms/moo/nsga2.py | 110 +----
pymoo/cython/mnn.pyx | 397 ++++++++++++++++++
pymoo/cython/pruning_cd.pyx | 312 ++++++++++++++
.../survival/rank_and_crowding/__init__.py | 1 +
.../survival/rank_and_crowding/classes.py | 206 +++++++++
.../survival/rank_and_crowding/metrics.py | 193 +++++++++
pymoo/util/function_loader.py | 12 +
pymoo/util/mnn.py | 67 +++
pymoo/util/pruning_cd.py | 89 ++++
tests/algorithms/test_nsga2.py | 2 +-
tests/misc/test_crowding_distance.py | 2 +-
11 files changed, 1292 insertions(+), 99 deletions(-)
create mode 100644 pymoo/cython/mnn.pyx
create mode 100644 pymoo/cython/pruning_cd.pyx
create mode 100644 pymoo/operators/survival/rank_and_crowding/__init__.py
create mode 100644 pymoo/operators/survival/rank_and_crowding/classes.py
create mode 100644 pymoo/operators/survival/rank_and_crowding/metrics.py
create mode 100644 pymoo/util/mnn.py
create mode 100644 pymoo/util/pruning_cd.py
diff --git a/pymoo/algorithms/moo/nsga2.py b/pymoo/algorithms/moo/nsga2.py
index 8da9d6715..eb8f7b511 100644
--- a/pymoo/algorithms/moo/nsga2.py
+++ b/pymoo/algorithms/moo/nsga2.py
@@ -1,18 +1,17 @@
import numpy as np
+import warnings
from pymoo.algorithms.base.genetic import GeneticAlgorithm
-from pymoo.core.survival import Survival
from pymoo.docs import parse_doc_string
from pymoo.operators.crossover.sbx import SBX
from pymoo.operators.mutation.pm import PM
+from pymoo.operators.survival.rank_and_crowding import RankAndCrowding
from pymoo.operators.sampling.rnd import FloatRandomSampling
from pymoo.operators.selection.tournament import compare, TournamentSelection
from pymoo.termination.default import DefaultMultiObjectiveTermination
from pymoo.util.display.multi import MultiObjectiveOutput
from pymoo.util.dominator import Dominator
-from pymoo.util.misc import find_duplicates, has_feasible
-from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
-from pymoo.util.randomized_argsort import randomized_argsort
+from pymoo.util.misc import has_feasible
# ---------------------------------------------------------------------------------------------------------
@@ -68,47 +67,14 @@ def binary_tournament(pop, P, algorithm, **kwargs):
# ---------------------------------------------------------------------------------------------------------
-class RankAndCrowdingSurvival(Survival):
-
- def __init__(self, nds=None) -> None:
- super().__init__(filter_infeasible=True)
- self.nds = nds if nds is not None else NonDominatedSorting()
-
- def _do(self, problem, pop, *args, n_survive=None, **kwargs):
-
- # get the objective space values and objects
- F = pop.get("F").astype(float, copy=False)
-
- # the final indices of surviving individuals
- survivors = []
-
- # do the non-dominated sorting until splitting front
- fronts = self.nds.do(F, n_stop_if_ranked=n_survive)
-
- for k, front in enumerate(fronts):
-
- # calculate the crowding distance of the front
- crowding_of_front = calc_crowding_distance(F[front, :])
-
- # save rank and crowding in the individual class
- for j, i in enumerate(front):
- pop[i].set("rank", k)
- pop[i].set("crowding", crowding_of_front[j])
-
- # current front sorted by crowding distance if splitting
- if len(survivors) + len(front) > n_survive:
- I = randomized_argsort(crowding_of_front, order='descending', method='numpy')
- I = I[:(n_survive - len(survivors))]
-
- # otherwise take the whole front unsorted
- else:
- I = np.arange(len(front))
-
- # extend the survivors by all or selected individuals
- survivors.extend(front[I])
-
- return pop[survivors]
-
+class RankAndCrowdingSurvival(RankAndCrowding):
+
+ def __init__(self, nds=None, crowding_func="cd"):
+ warnings.warn(
+ "RankAndCrowdingSurvival is deprecated and will be removed in version 0.8.*; use RankAndCrowding operator instead, which supports several and custom crowding diversity metrics.",
+ DeprecationWarning, 2
+ )
+ super().__init__(nds, crowding_func)
# =========================================================================================================
# Implementation
@@ -123,9 +89,10 @@ def __init__(self,
selection=TournamentSelection(func_comp=binary_tournament),
crossover=SBX(eta=15, prob=0.9),
mutation=PM(eta=20),
- survival=RankAndCrowdingSurvival(),
+ survival=RankAndCrowding(),
output=MultiObjectiveOutput(),
**kwargs):
+
super().__init__(
pop_size=pop_size,
sampling=sampling,
@@ -147,55 +114,4 @@ def _set_optimum(self, **kwargs):
self.opt = self.pop[self.pop.get("rank") == 0]
-def calc_crowding_distance(F, filter_out_duplicates=True):
- n_points, n_obj = F.shape
-
- if n_points <= 2:
- return np.full(n_points, np.inf)
-
- else:
-
- if filter_out_duplicates:
- # filter out solutions which are duplicates - duplicates get a zero finally
- is_unique = np.where(np.logical_not(find_duplicates(F, epsilon=1e-32)))[0]
- else:
- # set every point to be unique without checking it
- is_unique = np.arange(n_points)
-
- # index the unique points of the array
- _F = F[is_unique]
-
- # sort each column and get index
- I = np.argsort(_F, axis=0, kind='mergesort')
-
- # sort the objective space values for the whole matrix
- _F = _F[I, np.arange(n_obj)]
-
- # calculate the distance from each point to the last and next
- dist = np.row_stack([_F, np.full(n_obj, np.inf)]) - np.row_stack([np.full(n_obj, -np.inf), _F])
-
- # calculate the norm for each objective - set to NaN if all values are equal
- norm = np.max(_F, axis=0) - np.min(_F, axis=0)
- norm[norm == 0] = np.nan
-
- # prepare the distance to last and next vectors
- dist_to_last, dist_to_next = dist, np.copy(dist)
- dist_to_last, dist_to_next = dist_to_last[:-1] / norm, dist_to_next[1:] / norm
-
- # if we divide by zero because all values in one columns are equal replace by none
- dist_to_last[np.isnan(dist_to_last)] = 0.0
- dist_to_next[np.isnan(dist_to_next)] = 0.0
-
- # sum up the distance to next and last and norm by objectives - also reorder from sorted list
- J = np.argsort(I, axis=0)
- _cd = np.sum(dist_to_last[J, np.arange(n_obj)] + dist_to_next[J, np.arange(n_obj)], axis=1) / n_obj
-
- # save the final vector which sets the crowding distance for duplicates to zero to be eliminated
- crowding = np.zeros(n_points)
- crowding[is_unique] = _cd
-
- # crowding[np.isinf(crowding)] = 1e+14
- return crowding
-
-
parse_doc_string(NSGA2.__init__)
diff --git a/pymoo/cython/mnn.pyx b/pymoo/cython/mnn.pyx
new file mode 100644
index 000000000..7ae772e84
--- /dev/null
+++ b/pymoo/cython/mnn.pyx
@@ -0,0 +1,397 @@
+# distutils: language = c++
+# cython: language_level=2, boundscheck=False, wraparound=False, cdivision=True
+
+# This was implemented using the full distances matrix
+# Other strategies can be more efficient depending on the population size and number of objectives
+# This approach was the most promising for N = 3
+# I believe for a large number of objectives M, some strategy based on upper bounds for distances would be helpful
+# Those interested in contributing please contact me at bruscalia12@gmail.com
+
+
+import numpy as np
+
+from libcpp cimport bool
+from libcpp.vector cimport vector
+from libcpp.set cimport set as cpp_set
+
+
+cdef extern from "math.h":
+ double HUGE_VAL
+
+
+def calc_mnn(double[:, :] X, int n_remove=0):
+
+ cdef:
+ int N, M, n
+ cpp_set[int] extremes
+ vector[int] extremes_min, extremes_max
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ if n_remove <= (N - M):
+ if n_remove < 0:
+ n_remove = 0
+ else:
+ pass
+ else:
+ n_remove = N - M
+
+ extremes_min = c_get_argmin(X)
+ extremes_max = c_get_argmax(X)
+
+ extremes = cpp_set[int]()
+
+ for n in extremes_min:
+ extremes.insert(n)
+
+ for n in extremes_max:
+ extremes.insert(n)
+
+ X = c_normalize_array(X, extremes_max, extremes_min)
+
+ return c_calc_mnn(X, n_remove, N, M, extremes)
+
+
+def calc_2nn(double[:, :] X, int n_remove=0):
+
+ cdef:
+ int N, M, n
+ cpp_set[int] extremes
+ vector[int] extremes_min, extremes_max
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ if n_remove <= (N - M):
+ if n_remove < 0:
+ n_remove = 0
+ else:
+ pass
+ else:
+ n_remove = N - M
+
+ extremes_min = c_get_argmin(X)
+ extremes_max = c_get_argmax(X)
+
+ extremes = cpp_set[int]()
+
+ for n in extremes_min:
+ extremes.insert(n)
+
+ for n in extremes_max:
+ extremes.insert(n)
+
+ X = c_normalize_array(X, extremes_max, extremes_min)
+
+ M = 2
+
+ return c_calc_mnn(X, n_remove, N, M, extremes)
+
+
+cdef c_calc_mnn(double[:, :] X, int n_remove, int N, int M, cpp_set[int] extremes):
+
+ cdef:
+ int n, mm, i, j, n_removed, k, MM
+ double dij
+ cpp_set[int] calc_items
+ cpp_set[int] H
+ double[:, :] D
+ double[:] d
+ int[:, :] Mnn
+
+ #Define items to calculate distances
+ calc_items = cpp_set[int]()
+ for n in range(N):
+ calc_items.insert(n)
+ for n in extremes:
+ calc_items.erase(n)
+
+ #Define remaining items to evaluate
+ H = cpp_set[int]()
+ for n in range(N):
+ H.insert(n)
+
+ #Instantiate distances array
+ _D = np.empty((N, N), dtype=np.double)
+ D = _D[:, :]
+
+ #Shape of X
+ MM = X.shape[1]
+
+ #Fill values on D
+ for i in range(N - 1):
+ D[i, i] = 0.0
+
+ for j in range(i + 1, N):
+
+ dij = 0
+ for mm in range(MM):
+ dij = dij + (X[j, mm] - X[i, mm]) * (X[j, mm] - X[i, mm])
+
+ D[i, j] = dij
+ D[j, i] = D[i, j]
+
+ D[N-1, N-1] = 0.0
+
+ #Initialize
+ n_removed = 0
+
+ #Initialize neighbors and distances
+ # _Mnn = np.full((N, M), -1, dtype=np.intc)
+ _Mnn = np.argpartition(D, range(1, M+1), axis=1)[:, 1:M+1].astype(np.intc)
+ dd = np.full((N,), HUGE_VAL, dtype=np.double)
+
+ Mnn = _Mnn[:, :]
+ d = dd[:]
+
+ #Obtain distance metrics
+ c_calc_d(d, Mnn, D, calc_items, M)
+
+ #While n_remove not acheived (no need to recalculate if only one item should be removed)
+ while n_removed < (n_remove - 1):
+
+ #Obtain element to drop
+ k = c_get_drop(d, H)
+ H.erase(k)
+
+ #Update index
+ n_removed = n_removed + 1
+
+ #Get items to be recalculated
+ calc_items = c_get_calc_items(Mnn, H, k, M)
+ for n in extremes:
+ calc_items.erase(n)
+
+ #Fill in neighbors and distance matrix
+ c_calc_mnn_iter(
+ X,
+ Mnn,
+ D,
+ N, M,
+ calc_items,
+ H
+ )
+
+ #Obtain distance metrics
+ c_calc_d(d, Mnn, D, calc_items, M)
+
+ return dd
+
+
+cdef c_calc_mnn_iter(
+ double[:, :] X,
+ int[:, :] Mnn,
+ double[:, :] D,
+ int N, int M,
+ cpp_set[int] calc_items,
+ cpp_set[int] H
+ ):
+
+ cdef:
+ int i, j, m
+
+ #Iterate over items to calculate
+ for i in calc_items:
+
+ #Iterate over elements in X
+ for j in H:
+
+ #Go to next if same element
+ if (j == i):
+ continue
+
+ #Replace at least the last neighbor
+ elif (D[i, j] <= D[i, Mnn[i, M-1]]) or (Mnn[i, M-1] == -1):
+
+ #Iterate over current values
+ for m in range(M):
+
+ #Set to current if unassigned
+ if (Mnn[i, m] == -1):
+
+ #Set last neighbor to index
+ Mnn[i, m] = j
+ break
+
+ #Break if checking already corresponding index
+ elif (j == Mnn[i, m]):
+ break
+
+ #Distance satisfies condition
+ elif (D[i, j] <= D[i, Mnn[i, m]]):
+
+ #Replace higher values
+ Mnn[i, m + 1:] = Mnn[i, m:-1]
+
+ #Replace current value
+ Mnn[i, m] = j
+ break
+
+
+#Calculate crowding metric
+cdef c_calc_d(double[:] d, int[:, :] Mnn, double[:, :] D, cpp_set[int] calc_items, int M):
+
+ cdef:
+ int i, m
+
+ for i in calc_items:
+
+ d[i] = 1
+ for m in range(M):
+ d[i] = d[i] * D[i, Mnn[i, m]]
+
+
+#Returns indexes of items to be recalculated after removal
+cdef cpp_set[int] c_get_calc_items(
+ int[:, :] Mnn,
+ cpp_set[int] H,
+ int k, int M):
+
+ cdef:
+ int i, m
+ cpp_set[int] calc_items
+
+ calc_items = cpp_set[int]()
+
+ for i in H:
+
+ for m in range(M):
+
+ if Mnn[i, m] == k:
+
+ Mnn[i, m:-1] = Mnn[i, m + 1:]
+ Mnn[i, M-1] = -1
+
+ calc_items.insert(i)
+
+ return calc_items
+
+
+#Returns elements to remove based on crowding metric d and heap of remaining elements H
+cdef int c_get_drop(double[:] d, cpp_set[int] H):
+
+ cdef:
+ int i, min_i
+ double min_d
+
+ min_d = HUGE_VAL
+ min_i = 0
+
+ for i in H:
+
+ if d[i] <= min_d:
+ min_d = d[i]
+ min_i = i
+
+ return min_i
+
+
+#Elements in condensed matrix
+cdef int c_square_to_condensed(int i, int j, int N):
+
+ cdef int _i = i
+
+ if i < j:
+ i = j
+ j = _i
+
+ return N * j - j * (j + 1) // 2 + i - 1 - j
+
+
+#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
+cdef vector[int] c_get_argmin(double[:, :] X):
+
+ cdef:
+ int N, M, min_i, n, m
+ double min_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ min_i = 0
+ min_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] < min_val:
+
+ min_i = n
+ min_val = X[n, m]
+
+ indexes.push_back(min_i)
+
+ return indexes
+
+
+#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
+cdef vector[int] c_get_argmax(double[:, :] X):
+
+ cdef:
+ int N, M, max_i, n, m
+ double max_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ max_i = 0
+ max_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] > max_val:
+
+ max_i = n
+ max_val = X[n, m]
+
+ indexes.push_back(max_i)
+
+ return indexes
+
+
+#Performs normalization of a 2d memoryview
+cdef double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
+
+ cdef:
+ int N = X.shape[0]
+ int M = X.shape[1]
+ int n, m, l, u
+ double l_val, u_val, diff_val
+ vector[double] min_vals, max_vals
+
+ min_vals = vector[double]()
+ max_vals = vector[double]()
+
+ m = 0
+ for u in extremes_max:
+ u_val = X[u, m]
+ max_vals.push_back(u_val)
+ m = m + 1
+
+ m = 0
+ for l in extremes_min:
+ l_val = X[l, m]
+ min_vals.push_back(l_val)
+ m = m + 1
+
+ for m in range(M):
+
+ diff_val = max_vals[m] - min_vals[m]
+ if diff_val == 0.0:
+ diff_val = 1.0
+
+ for n in range(N):
+
+ X[n, m] = (X[n, m] - min_vals[m]) / diff_val
+
+ return X
\ No newline at end of file
diff --git a/pymoo/cython/pruning_cd.pyx b/pymoo/cython/pruning_cd.pyx
new file mode 100644
index 000000000..505c29d56
--- /dev/null
+++ b/pymoo/cython/pruning_cd.pyx
@@ -0,0 +1,312 @@
+# distutils: language = c++
+# cython: language_level=2, boundscheck=False, wraparound=False, cdivision=True
+
+import numpy as np
+
+from libcpp cimport bool
+from libcpp.vector cimport vector
+from libcpp.set cimport set as cpp_set
+
+
+cdef extern from "math.h":
+ double HUGE_VAL
+
+
+#Python definition
+def calc_pcd(double[:, :] X, int n_remove=0):
+
+ cdef:
+ int N, M, n
+ cpp_set[int] extremes
+ vector[int] extremes_min, extremes_max
+ int[:, :] I
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ if n_remove <= (N - M):
+ if n_remove < 0:
+ n_remove = 0
+ else:
+ pass
+ else:
+ n_remove = N - M
+
+ extremes_min = c_get_argmin(X)
+ extremes_max = c_get_argmax(X)
+
+ extremes = cpp_set[int]()
+
+ for n in extremes_min:
+ extremes.insert(n)
+
+ for n in extremes_max:
+ extremes.insert(n)
+
+ _I = np.argsort(X, axis=0, kind='mergesort').astype(np.intc)
+ I = _I[:, :]
+
+ X = c_normalize_array(X, extremes_max, extremes_min)
+
+ return c_calc_pcd(X, I, n_remove, N, M, extremes)
+
+
+#Returns crowding metrics with recursive elimination
+cdef c_calc_pcd(double[:, :] X, int[:, :] I, int n_remove, int N, int M, cpp_set[int] extremes):
+
+ cdef:
+ int n, n_removed, k
+ cpp_set[int] calc_items
+ cpp_set[int] H
+ double[:, :] D
+ double[:] d
+
+ #Define items to calculate distances
+ calc_items = cpp_set[int]()
+ for n in range(N):
+ calc_items.insert(n)
+ for n in extremes:
+ calc_items.erase(n)
+
+ #Define remaining items to evaluate
+ H = cpp_set[int]()
+ for n in range(N):
+ H.insert(n)
+
+ #Initialize
+ n_removed = 0
+
+ #Initialize neighbors and distances
+ _D = np.full((N, M), HUGE_VAL, dtype=np.double)
+ dd = np.full((N,), HUGE_VAL, dtype=np.double)
+
+ D = _D[:, :]
+ d = dd[:]
+
+ #Fill in neighbors and distance matrix
+ c_calc_pcd_iter(
+ X,
+ I,
+ D,
+ N, M,
+ calc_items,
+ )
+
+ #Obtain distance metrics
+ c_calc_d(d, D, calc_items, M)
+
+ #While n_remove not acheived
+ while n_removed < (n_remove - 1):
+
+ #Obtain element to drop
+ k = c_get_drop(d, H)
+ H.erase(k)
+
+ #Update index
+ n_removed = n_removed + 1
+
+ #Get items to be recalculated
+ calc_items = c_get_calc_items(I, k, M, N)
+ for n in extremes:
+ calc_items.erase(n)
+
+ #Fill in neighbors and distance matrix
+ c_calc_pcd_iter(
+ X,
+ I,
+ D,
+ N, M,
+ calc_items,
+ )
+
+ #Obtain distance metrics
+ c_calc_d(d, D, calc_items, M)
+
+ return dd
+
+
+#Iterate
+cdef c_calc_pcd_iter(
+ double[:, :] X,
+ int[:, :] I,
+ double[:, :] D,
+ int N, int M,
+ cpp_set[int] calc_items,
+ ):
+
+ cdef:
+ int i, m, n, l, u
+
+ #Iterate over items to calculate
+ for i in calc_items:
+
+ #Iterate over elements in X
+ for m in range(M):
+
+ for n in range(N):
+
+ if i == I[n, m]:
+
+ l = I[n - 1, m]
+ u = I[n + 1, m]
+
+ D[i, m] = (X[u, m] - X[l, m]) / M
+
+
+#Calculate crowding metric
+cdef c_calc_d(double[:] d, double[:, :] D, cpp_set[int] calc_items, int M):
+
+ cdef:
+ int i, m
+
+ for i in calc_items:
+
+ d[i] = 0
+ for m in range(M):
+ d[i] = d[i] + D[i, m]
+
+
+#Returns indexes of items to be recalculated after removal
+cdef cpp_set[int] c_get_calc_items(
+ int[:, :] I,
+ int k, int M, int N
+ ):
+
+ cdef:
+ int n, m
+ cpp_set[int] calc_items
+
+ calc_items = cpp_set[int]()
+
+ #Iterate over all elements in I
+ for m in range(M):
+
+ for n in range(N):
+
+ if I[n, m] == k:
+
+ #Add to set of items to be recalculated
+ calc_items.insert(I[n - 1, m])
+ calc_items.insert(I[n + 1, m])
+
+ #Remove element from sorted array
+ I[n:-1, m] = I[n + 1:, m]
+
+ return calc_items
+
+
+#Returns elements to remove based on crowding metric d and heap of remaining elements H
+cdef int c_get_drop(double[:] d, cpp_set[int] H):
+
+ cdef:
+ int i, min_i
+ double min_d
+
+ min_d = HUGE_VAL
+ min_i = 0
+
+ for i in H:
+
+ if d[i] <= min_d:
+ min_d = d[i]
+ min_i = i
+
+ return min_i
+
+
+#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
+cdef vector[int] c_get_argmin(double[:, :] X):
+
+ cdef:
+ int N, M, min_i, n, m
+ double min_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ min_i = 0
+ min_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] < min_val:
+
+ min_i = n
+ min_val = X[n, m]
+
+ indexes.push_back(min_i)
+
+ return indexes
+
+
+#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
+cdef vector[int] c_get_argmax(double[:, :] X):
+
+ cdef:
+ int N, M, max_i, n, m
+ double max_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ max_i = 0
+ max_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] > max_val:
+
+ max_i = n
+ max_val = X[n, m]
+
+ indexes.push_back(max_i)
+
+ return indexes
+
+
+#Performs normalization of a 2d memoryview
+cdef double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
+
+ cdef:
+ int N = X.shape[0]
+ int M = X.shape[1]
+ int n, m, l, u
+ double l_val, u_val, diff_val
+ vector[double] min_vals, max_vals
+
+ min_vals = vector[double]()
+ max_vals = vector[double]()
+
+ m = 0
+ for u in extremes_max:
+ u_val = X[u, m]
+ max_vals.push_back(u_val)
+ m = m + 1
+
+ m = 0
+ for l in extremes_min:
+ l_val = X[l, m]
+ min_vals.push_back(l_val)
+ m = m + 1
+
+ for m in range(M):
+
+ diff_val = max_vals[m] - min_vals[m]
+ if diff_val == 0.0:
+ diff_val = 1.0
+
+ for n in range(N):
+
+ X[n, m] = (X[n, m] - min_vals[m]) / diff_val
+
+ return X
\ No newline at end of file
diff --git a/pymoo/operators/survival/rank_and_crowding/__init__.py b/pymoo/operators/survival/rank_and_crowding/__init__.py
new file mode 100644
index 000000000..9a7419410
--- /dev/null
+++ b/pymoo/operators/survival/rank_and_crowding/__init__.py
@@ -0,0 +1 @@
+from pymoo.operators.survival.rank_and_crowding.classes import RankAndCrowding, ConstrRankAndCrowding
\ No newline at end of file
diff --git a/pymoo/operators/survival/rank_and_crowding/classes.py b/pymoo/operators/survival/rank_and_crowding/classes.py
new file mode 100644
index 000000000..516a0dce3
--- /dev/null
+++ b/pymoo/operators/survival/rank_and_crowding/classes.py
@@ -0,0 +1,206 @@
+import numpy as np
+from pymoo.util.randomized_argsort import randomized_argsort
+from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
+from pymoo.core.survival import Survival, split_by_feasibility
+from pymoo.core.population import Population
+from pymoo.operators.survival.rank_and_crowding.metrics import get_crowding_function
+
+
+class RankAndCrowding(Survival):
+
+ def __init__(self, nds=None, crowding_func="cd"):
+ """
+ A generalization of the NSGA-II survival operator that ranks individuals by dominance criteria
+ and sorts the last front by some user-specified crowding metric. The default is NSGA-II's crowding distances
+ although others might be more effective.
+
+ For many-objective problems, try using 'mnn' or '2nn'.
+
+ For Bi-objective problems, 'pcd' is very effective.
+
+ Parameters
+ ----------
+ nds : str or None, optional
+ Pymoo type of non-dominated sorting. Defaults to None.
+
+ crowding_func : str or callable, optional
+ Crowding metric. Options are:
+
+ - 'cd': crowding distances
+ - 'pcd' or 'pruned-cd': pruned crowding distances
+ - 'ce': crowding entropy
+ - 'mnn': M-Neaest Neighbors
+ - '2nn': 2-Neaest Neighbors
+
+ If callable, it has the form ``fun(F, filter_out_duplicates=None, n_remove=None, **kwargs)``
+ in which F (n, m) and must return metrics in a (n,) array.
+
+ The options 'pcd', 'cd', and 'ce' are recommended for two-objective problems, whereas 'mnn' and '2nn' for many objective.
+ When using 'pcd', 'mnn', or '2nn', individuals are already eliminated in a 'single' manner.
+ Due to Cython implementation, they are as fast as the corresponding 'cd', 'mnn-fast', or '2nn-fast',
+ although they can singnificantly improve diversity of solutions.
+ Defaults to 'cd'.
+ """
+
+ crowding_func_ = get_crowding_function(crowding_func)
+
+ super().__init__(filter_infeasible=True)
+ self.nds = nds if nds is not None else NonDominatedSorting()
+ self.crowding_func = crowding_func_
+
+ def _do(self,
+ problem,
+ pop,
+ *args,
+ n_survive=None,
+ **kwargs):
+
+ # get the objective space values and objects
+ F = pop.get("F").astype(float, copy=False)
+
+ # the final indices of surviving individuals
+ survivors = []
+
+ # do the non-dominated sorting until splitting front
+ fronts = self.nds.do(F, n_stop_if_ranked=n_survive)
+
+ for k, front in enumerate(fronts):
+
+ # current front sorted by crowding distance if splitting
+ while len(survivors) + len(front) > n_survive:
+
+ #Define how many will be removed
+ n_remove = len(survivors) + len(front) - n_survive
+
+ # re-calculate the crowding distance of the front
+ crowding_of_front = \
+ self.crowding_func.do(
+ F[front, :],
+ n_remove=n_remove
+ )
+
+ I = randomized_argsort(crowding_of_front, order='descending', method='numpy')
+
+ I = I[:-n_remove]
+ front = front[I]
+
+ # otherwise take the whole front unsorted
+ else:
+ # calculate the crowding distance of the front
+ crowding_of_front = \
+ self.crowding_func.do(
+ F[front, :],
+ n_remove=0
+ )
+
+ # save rank and crowding in the individual class
+ for j, i in enumerate(front):
+ pop[i].set("rank", k)
+ pop[i].set("crowding", crowding_of_front[j])
+
+ # extend the survivors by all or selected individuals
+ survivors.extend(front)
+
+ return pop[survivors]
+
+
+class ConstrRankAndCrowding(Survival):
+
+ def __init__(self, nds=None, crowding_func="cd"):
+ """
+ The Rank and Crowding survival approach for handling constraints proposed on
+ GDE3 by Kukkonen, S. & Lampinen, J. (2005).
+
+ Parameters
+ ----------
+ nds : str or None, optional
+ Pymoo type of non-dominated sorting. Defaults to None.
+
+ crowding_func : str or callable, optional
+ Crowding metric. Options are:
+
+ - 'cd': crowding distances
+ - 'pcd' or 'pruned-cd': pruned crowding distances
+ - 'ce': crowding entropy
+ - 'mnn': M-Neaest Neighbors
+ - '2nn': 2-Neaest Neighbors
+
+ If callable, it has the form ``fun(F, filter_out_duplicates=None, n_remove=None, **kwargs)``
+ in which F (n, m) and must return metrics in a (n,) array.
+
+ The options 'pcd', 'cd', and 'ce' are recommended for two-objective problems, whereas 'mnn' and '2nn' for many objective.
+ When using 'pcd', 'mnn', or '2nn', individuals are already eliminated in a 'single' manner.
+ Due to Cython implementation, they are as fast as the corresponding 'cd', 'mnn-fast', or '2nn-fast',
+ although they can singnificantly improve diversity of solutions.
+ Defaults to 'cd'.
+ """
+
+ super().__init__(filter_infeasible=False)
+ self.nds = nds if nds is not None else NonDominatedSorting()
+ self.ranking = RankAndCrowding(nds=nds, crowding_func=crowding_func)
+
+ def _do(self,
+ problem,
+ pop,
+ *args,
+ n_survive=None,
+ **kwargs):
+
+ if n_survive is None:
+ n_survive = len(pop)
+
+ n_survive = min(n_survive, len(pop))
+
+ #If the split should be done beforehand
+ if problem.n_constr > 0:
+
+ #Split by feasibility
+ feas, infeas = split_by_feasibility(pop, eps=0.0, sort_infeasbible_by_cv=True)
+
+ #Obtain len of feasible
+ n_feas = len(feas)
+
+ #Assure there is at least_one survivor
+ if n_feas == 0:
+ survivors = Population()
+ else:
+ survivors = self.ranking.do(problem, pop[feas], *args, n_survive=min(len(feas), n_survive), **kwargs)
+
+ #Calculate how many individuals are still remaining to be filled up with infeasible ones
+ n_remaining = n_survive - len(survivors)
+
+ #If infeasible solutions need to be added
+ if n_remaining > 0:
+
+ #Constraints to new ranking
+ G = pop[infeas].get("G")
+ G = np.maximum(G, 0)
+
+ #Fronts in infeasible population
+ infeas_fronts = self.nds.do(G, n_stop_if_ranked=n_remaining)
+
+ #Iterate over fronts
+ for k, front in enumerate(infeas_fronts):
+
+ #Save ranks
+ pop[infeas][front].set("cv_rank", k)
+
+ #Current front sorted by CV
+ if len(survivors) + len(front) > n_survive:
+
+ #Obtain CV of front
+ CV = pop[infeas][front].get("CV").flatten()
+ I = randomized_argsort(CV, order='ascending', method='numpy')
+ I = I[:(n_survive - len(survivors))]
+
+ #Otherwise take the whole front unsorted
+ else:
+ I = np.arange(len(front))
+
+ # extend the survivors by all or selected individuals
+ survivors = Population.merge(survivors, pop[infeas][front[I]])
+
+ else:
+ survivors = self.ranking.do(problem, pop, *args, n_survive=n_survive, **kwargs)
+
+ return survivors
diff --git a/pymoo/operators/survival/rank_and_crowding/metrics.py b/pymoo/operators/survival/rank_and_crowding/metrics.py
new file mode 100644
index 000000000..751f4fe73
--- /dev/null
+++ b/pymoo/operators/survival/rank_and_crowding/metrics.py
@@ -0,0 +1,193 @@
+import numpy as np
+from scipy.spatial.distance import pdist, squareform
+from pymoo.util.misc import find_duplicates
+from pymoo.util.function_loader import load_function
+
+
+def get_crowding_function(label):
+
+ if label == "cd":
+ fun = FunctionalDiversity(calc_crowding_distance, filter_out_duplicates=False)
+ elif (label == "pcd") or (label == "pruning-cd"):
+ fun = FunctionalDiversity(load_function("calc_pcd"), filter_out_duplicates=True)
+ elif label == "ce":
+ fun = FunctionalDiversity(calc_crowding_entropy, filter_out_duplicates=True)
+ elif label == "mnn":
+ fun = FunctionalDiversity(load_function("calc_mnn"), filter_out_duplicates=True)
+ elif label == "2nn":
+ fun = FunctionalDiversity(load_function("calc_2nn"), filter_out_duplicates=True)
+ elif hasattr(label, "__call__"):
+ fun = FunctionalDiversity(label, filter_out_duplicates=True)
+ else:
+ raise KeyError("Crwoding function not defined")
+ return fun
+
+
+class CrowdingDiversity:
+
+ def do(self, F, n_remove=0):
+ #Converting types Python int to Cython int would fail in some cases converting to long instead
+ n_remove = np.intc(n_remove)
+ F = np.array(F, dtype=np.double)
+ return self._do(F, n_remove=n_remove)
+
+ def _do(self, F, n_remove=None):
+ pass
+
+
+class FunctionalDiversity(CrowdingDiversity):
+
+ def __init__(self, function=None, filter_out_duplicates=True):
+ self.function = function
+ self.filter_out_duplicates = filter_out_duplicates
+ super().__init__()
+
+ def _do(self, F, **kwargs):
+
+ n_points, n_obj = F.shape
+
+ if n_points <= F.shape[1]:
+ return np.full(n_points, np.inf)
+
+ else:
+
+ if self.filter_out_duplicates:
+ # filter out solutions which are duplicates - duplicates get a zero finally
+ is_unique = np.where(np.logical_not(find_duplicates(F, epsilon=1e-32)))[0]
+ else:
+ # set every point to be unique without checking it
+ is_unique = np.arange(n_points)
+
+ # index the unique points of the array
+ _F = F[is_unique]
+
+ _d = self.function(_F, **kwargs)
+
+ d = np.zeros(n_points)
+ d[is_unique] = _d
+
+ return d
+
+
+def calc_crowding_distance(F, **kwargs):
+ n_points, n_obj = F.shape
+
+ # sort each column and get index
+ I = np.argsort(F, axis=0, kind='mergesort')
+
+ # sort the objective space values for the whole matrix
+ F = F[I, np.arange(n_obj)]
+
+ # calculate the distance from each point to the last and next
+ dist = np.row_stack([F, np.full(n_obj, np.inf)]) - np.row_stack([np.full(n_obj, -np.inf), F])
+
+ # calculate the norm for each objective - set to NaN if all values are equal
+ norm = np.max(F, axis=0) - np.min(F, axis=0)
+ norm[norm == 0] = np.nan
+
+ # prepare the distance to last and next vectors
+ dist_to_last, dist_to_next = dist, np.copy(dist)
+ dist_to_last, dist_to_next = dist_to_last[:-1] / norm, dist_to_next[1:] / norm
+
+ # if we divide by zero because all values in one columns are equal replace by none
+ dist_to_last[np.isnan(dist_to_last)] = 0.0
+ dist_to_next[np.isnan(dist_to_next)] = 0.0
+
+ # sum up the distance to next and last and norm by objectives - also reorder from sorted list
+ J = np.argsort(I, axis=0)
+ cd = np.sum(dist_to_last[J, np.arange(n_obj)] + dist_to_next[J, np.arange(n_obj)], axis=1) / n_obj
+
+ return cd
+
+
+def calc_crowding_entropy(F, **kwargs):
+ """Wang, Y.-N., Wu, L.-H. & Yuan, X.-F., 2010. Multi-objective self-adaptive differential
+ evolution with elitist archive and crowding entropy-based diversity measure.
+ Soft Comput., 14(3), pp. 193-209.
+
+ Parameters
+ ----------
+ F : 2d array like
+ Objective functions.
+
+ Returns
+ -------
+ ce : 1d array
+ Crowding Entropies
+ """
+ n_points, n_obj = F.shape
+
+ # sort each column and get index
+ I = np.argsort(F, axis=0, kind='mergesort')
+
+ # sort the objective space values for the whole matrix
+ F = F[I, np.arange(n_obj)]
+
+ # calculate the distance from each point to the last and next
+ dist = np.row_stack([F, np.full(n_obj, np.inf)]) - np.row_stack([np.full(n_obj, -np.inf), F])
+
+ # calculate the norm for each objective - set to NaN if all values are equal
+ norm = np.max(F, axis=0) - np.min(F, axis=0)
+ norm[norm == 0] = np.nan
+
+ # prepare the distance to last and next vectors
+ dl = dist.copy()[:-1]
+ du = dist.copy()[1:]
+
+ #Fix nan
+ dl[np.isnan(dl)] = 0.0
+ du[np.isnan(du)] = 0.0
+
+ #Total distance
+ cd = dl + du
+
+ #Get relative positions
+ pl = (dl[1:-1] / cd[1:-1])
+ pu = (du[1:-1] / cd[1:-1])
+
+ #Entropy
+ entropy = np.row_stack([np.full(n_obj, np.inf),
+ -(pl * np.log2(pl) + pu * np.log2(pu)),
+ np.full(n_obj, np.inf)])
+
+ #Crowding entropy
+ J = np.argsort(I, axis=0)
+ _cej = cd[J, np.arange(n_obj)] * entropy[J, np.arange(n_obj)] / norm
+ _cej[np.isnan(_cej)] = 0.0
+ ce = _cej.sum(axis=1)
+
+ return ce
+
+
+def calc_mnn_fast(F, **kwargs):
+ return _calc_mnn_fast(F, F.shape[1], **kwargs)
+
+
+def calc_2nn_fast(F, **kwargs):
+ return _calc_mnn_fast(F, 2, **kwargs)
+
+
+def _calc_mnn_fast(F, n_neighbors, **kwargs):
+
+ # calculate the norm for each objective - set to NaN if all values are equal
+ norm = np.max(F, axis=0) - np.min(F, axis=0)
+ norm[norm == 0] = 1.0
+
+ # F normalized
+ F = (F - F.min(axis=0)) / norm
+
+ # Distances pairwise (Inefficient)
+ D = squareform(pdist(F, metric="sqeuclidean"))
+
+ # M neighbors
+ M = F.shape[1]
+ _D = np.partition(D, range(1, M+1), axis=1)[:, 1:M+1]
+
+ # Metric d
+ d = np.prod(_D, axis=1)
+
+ # Set top performers as np.inf
+ _extremes = np.concatenate((np.argmin(F, axis=0), np.argmax(F, axis=0)))
+ d[_extremes] = np.inf
+
+ return d
diff --git a/pymoo/util/function_loader.py b/pymoo/util/function_loader.py
index 085aa41d9..c68282632 100644
--- a/pymoo/util/function_loader.py
+++ b/pymoo/util/function_loader.py
@@ -4,6 +4,7 @@
def get_functions():
+
from pymoo.util.nds.fast_non_dominated_sort import fast_non_dominated_sort
from pymoo.util.nds.efficient_non_dominated_sort import efficient_non_dominated_sort
from pymoo.util.nds.tree_based_non_dominated_sort import tree_based_non_dominated_sort
@@ -11,6 +12,8 @@ def get_functions():
from pymoo.util.misc import calc_perpendicular_distance
from pymoo.util.hv import hv
from pymoo.util.stochastic_ranking import stochastic_ranking
+ from pymoo.util.mnn import calc_mnn, calc_2nn
+ from pymoo.util.pruning_cd import calc_pcd
FUNCTIONS = {
"fast_non_dominated_sort": {
@@ -34,6 +37,15 @@ def get_functions():
"hv": {
"python": hv, "cython": "pymoo.cython.hv"
},
+ "calc_mnn": {
+ "python": calc_mnn, "cython": "pymoo.cython.mnn"
+ },
+ "calc_2nn": {
+ "python": calc_2nn, "cython": "pymoo.cython.mnn"
+ },
+ "calc_pcd": {
+ "python": calc_pcd, "cython": "pymoo.cython.pruning_cd"
+ },
}
diff --git a/pymoo/util/mnn.py b/pymoo/util/mnn.py
new file mode 100644
index 000000000..53a641ace
--- /dev/null
+++ b/pymoo/util/mnn.py
@@ -0,0 +1,67 @@
+import numpy as np
+from scipy.spatial.distance import pdist, squareform
+
+def calc_mnn(X, n_remove=0):
+ return calc_mnn_base(X, n_remove=n_remove, twonn=False)
+
+def calc_2nn(X, n_remove=0):
+ return calc_mnn_base(X, n_remove=n_remove, twonn=True)
+
+def calc_mnn_base(X, n_remove=0, twonn=False):
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ if n_remove <= (N - M):
+ if n_remove < 0:
+ n_remove = 0
+ else:
+ pass
+ else:
+ n_remove = N - M
+
+ if twonn:
+ M = 2
+
+ extremes_min = np.argmin(X, axis=0)
+ extremes_max = np.argmax(X, axis=0)
+
+ min_vals = np.min(X, axis=0)
+ max_vals = np.max(X, axis=0)
+
+ extremes = np.concatenate((extremes_min, extremes_max))
+
+ X = (X - min_vals) / (max_vals - min_vals)
+
+ H = np.arange(N)
+
+ D = squareform(pdist(X, metric="sqeuclidean"))
+ Dnn = np.partition(D, range(1, M+1), axis=1)[:, 1:M+1]
+ d = np.product(Dnn, axis=1)
+ d[extremes] = np.inf
+
+ n_removed = 0
+
+ #While n_remove not acheived
+ while n_removed < (n_remove - 1):
+
+ #Obtain element to drop
+ _d = d[H]
+ _k = np.argmin(_d)
+ k = H[_k]
+ H = H[H != k]
+
+ #Update index
+ n_removed = n_removed + 1
+ if n_removed == n_remove:
+ break
+
+ else:
+
+ D[:, k] = np.inf
+ Dnn[H] = np.partition(D[H], range(1, M+1), axis=1)[:, 1:M+1]
+ d[H] = np.product(Dnn[H], axis=1)
+ d[extremes] = np.inf
+
+ return d
+
diff --git a/pymoo/util/pruning_cd.py b/pymoo/util/pruning_cd.py
new file mode 100644
index 000000000..4407a1d81
--- /dev/null
+++ b/pymoo/util/pruning_cd.py
@@ -0,0 +1,89 @@
+import numpy as np
+
+def calc_pcd(X, n_remove=0):
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ if n_remove <= (N - M):
+ if n_remove < 0:
+ n_remove = 0
+ else:
+ pass
+ else:
+ n_remove = N - M
+
+ extremes_min = np.argmin(X, axis=0)
+ extremes_max = np.argmax(X, axis=0)
+
+ min_vals = np.min(X, axis=0)
+ max_vals = np.max(X, axis=0)
+
+ extremes = np.concatenate((extremes_min, extremes_max))
+
+ X = (X - min_vals) / (max_vals - min_vals)
+
+ H = np.arange(N)
+ d = np.full(N, np.inf)
+
+ I = np.argsort(X, axis=0, kind='mergesort')
+
+ # sort the objective space values for the whole matrix
+ _X = X[I, np.arange(M)]
+
+ # calculate the distance from each point to the last and next
+ dist = np.row_stack([_X, np.full(M, np.inf)]) - np.row_stack([np.full(M, -np.inf), _X])
+
+ # prepare the distance to last and next vectors
+ dist_to_last, dist_to_next = dist, np.copy(dist)
+ dist_to_last, dist_to_next = dist_to_last[:-1], dist_to_next[1:]
+
+ # if we divide by zero because all values in one columns are equal replace by none
+ dist_to_last[np.isnan(dist_to_last)] = 0.0
+ dist_to_next[np.isnan(dist_to_next)] = 0.0
+
+ # sum up the distance to next and last and norm by objectives - also reorder from sorted list
+ J = np.argsort(I, axis=0)
+ _d = np.sum(dist_to_last[J, np.arange(M)] + dist_to_next[J, np.arange(M)], axis=1)
+ d[H] = _d
+ d[extremes] = np.inf
+
+ n_removed = 0
+
+ #While n_remove not acheived
+ while n_removed < (n_remove - 1):
+
+ #Obtain element to drop
+ _d = d[H]
+ _k = np.argmin(_d)
+ k = H[_k]
+
+ H = H[H != k]
+
+ #Update index
+ n_removed = n_removed + 1
+
+ I = np.argsort(X[H].copy(), axis=0, kind='mergesort')
+
+ # sort the objective space values for the whole matrix
+ _X = X[H].copy()[I, np.arange(M)]
+
+ # calculate the distance from each point to the last and next
+ dist = np.row_stack([_X, np.full(M, np.inf)]) - np.row_stack([np.full(M, -np.inf), _X])
+
+ # prepare the distance to last and next vectors
+ dist_to_last, dist_to_next = dist, np.copy(dist)
+ dist_to_last, dist_to_next = dist_to_last[:-1], dist_to_next[1:]
+
+ # if we divide by zero because all values in one columns are equal replace by none
+ dist_to_last[np.isnan(dist_to_last)] = 0.0
+ dist_to_next[np.isnan(dist_to_next)] = 0.0
+
+ # sum up the distance to next and last and norm by objectives - also reorder from sorted list
+ J = np.argsort(I, axis=0)
+ _d = np.sum(dist_to_last[J, np.arange(M)] + dist_to_next[J, np.arange(M)], axis=1)
+ d[H] = _d
+ d[extremes] = np.inf
+
+ return d
+
diff --git a/tests/algorithms/test_nsga2.py b/tests/algorithms/test_nsga2.py
index ce692b9c2..262dc94fa 100644
--- a/tests/algorithms/test_nsga2.py
+++ b/tests/algorithms/test_nsga2.py
@@ -3,7 +3,7 @@
import numpy as np
import pytest
-from pymoo.algorithms.moo.nsga2 import calc_crowding_distance
+from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance
from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
from tests.test_util import load_to_test_resource
diff --git a/tests/misc/test_crowding_distance.py b/tests/misc/test_crowding_distance.py
index 4245f6927..750c67c98 100644
--- a/tests/misc/test_crowding_distance.py
+++ b/tests/misc/test_crowding_distance.py
@@ -3,7 +3,7 @@
import numpy as np
import pytest
-from pymoo.algorithms.moo.nsga2 import calc_crowding_distance
+from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance
from pymoo.config import get_pymoo
From 8da25a82c1b991e859a37d84364892623ad2b83c Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 17 Oct 2022 13:43:50 -0300
Subject: [PATCH 02/12] Fix RankAndCrowding docs pcd
---
pymoo/operators/survival/rank_and_crowding/classes.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pymoo/operators/survival/rank_and_crowding/classes.py b/pymoo/operators/survival/rank_and_crowding/classes.py
index 516a0dce3..dcf3bc1fd 100644
--- a/pymoo/operators/survival/rank_and_crowding/classes.py
+++ b/pymoo/operators/survival/rank_and_crowding/classes.py
@@ -27,7 +27,7 @@ def __init__(self, nds=None, crowding_func="cd"):
Crowding metric. Options are:
- 'cd': crowding distances
- - 'pcd' or 'pruned-cd': pruned crowding distances
+ - 'pcd' or 'pruning-cd': improved pruning based on crowding distances
- 'ce': crowding entropy
- 'mnn': M-Neaest Neighbors
- '2nn': 2-Neaest Neighbors
@@ -120,7 +120,7 @@ def __init__(self, nds=None, crowding_func="cd"):
Crowding metric. Options are:
- 'cd': crowding distances
- - 'pcd' or 'pruned-cd': pruned crowding distances
+ - 'pcd' or 'pruning-cd': improved pruning based on crowding distances
- 'ce': crowding entropy
- 'mnn': M-Neaest Neighbors
- '2nn': 2-Neaest Neighbors
From 91c7aad6b61cb9f7d1f78238a5eaaa6da1a1fb30 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 21:27:31 -0300
Subject: [PATCH 03/12] Include tests for new crowding metrics
---
MANIFEST.in | 2 +-
pymoo/cython/mnn.pyx | 131 +--------------------
pymoo/cython/pruning_cd.pyx | 119 +------------------
pymoo/cython/utils.pxd | 129 ++++++++++++++++++++
tests/algorithms/test_rank_and_crowding.py | 117 ++++++++++++++++++
5 files changed, 251 insertions(+), 247 deletions(-)
create mode 100644 pymoo/cython/utils.pxd
create mode 100644 tests/algorithms/test_rank_and_crowding.py
diff --git a/MANIFEST.in b/MANIFEST.in
index 182882a01..f84b358f4 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,4 @@
prune .
-recursive-include pymoo *.py *.pyx
+recursive-include pymoo *.py *.pyx *.pxd
recursive-include pymoo/cython/vendor *.cpp *.h
include LICENSE Makefile
diff --git a/pymoo/cython/mnn.pyx b/pymoo/cython/mnn.pyx
index 7ae772e84..a3a8552fd 100644
--- a/pymoo/cython/mnn.pyx
+++ b/pymoo/cython/mnn.pyx
@@ -10,6 +10,8 @@
import numpy as np
+from pymoo.cython.utils cimport c_get_drop, c_get_argmin, c_get_argmax, c_normalize_array
+
from libcpp cimport bool
from libcpp.vector cimport vector
from libcpp.set cimport set as cpp_set
@@ -266,132 +268,3 @@ cdef cpp_set[int] c_get_calc_items(
calc_items.insert(i)
return calc_items
-
-
-#Returns elements to remove based on crowding metric d and heap of remaining elements H
-cdef int c_get_drop(double[:] d, cpp_set[int] H):
-
- cdef:
- int i, min_i
- double min_d
-
- min_d = HUGE_VAL
- min_i = 0
-
- for i in H:
-
- if d[i] <= min_d:
- min_d = d[i]
- min_i = i
-
- return min_i
-
-
-#Elements in condensed matrix
-cdef int c_square_to_condensed(int i, int j, int N):
-
- cdef int _i = i
-
- if i < j:
- i = j
- j = _i
-
- return N * j - j * (j + 1) // 2 + i - 1 - j
-
-
-#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
-cdef vector[int] c_get_argmin(double[:, :] X):
-
- cdef:
- int N, M, min_i, n, m
- double min_val
- vector[int] indexes
-
- N = X.shape[0]
- M = X.shape[1]
-
- indexes = vector[int]()
-
- for m in range(M):
-
- min_i = 0
- min_val = X[0, m]
-
- for n in range(N):
-
- if X[n, m] < min_val:
-
- min_i = n
- min_val = X[n, m]
-
- indexes.push_back(min_i)
-
- return indexes
-
-
-#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
-cdef vector[int] c_get_argmax(double[:, :] X):
-
- cdef:
- int N, M, max_i, n, m
- double max_val
- vector[int] indexes
-
- N = X.shape[0]
- M = X.shape[1]
-
- indexes = vector[int]()
-
- for m in range(M):
-
- max_i = 0
- max_val = X[0, m]
-
- for n in range(N):
-
- if X[n, m] > max_val:
-
- max_i = n
- max_val = X[n, m]
-
- indexes.push_back(max_i)
-
- return indexes
-
-
-#Performs normalization of a 2d memoryview
-cdef double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
-
- cdef:
- int N = X.shape[0]
- int M = X.shape[1]
- int n, m, l, u
- double l_val, u_val, diff_val
- vector[double] min_vals, max_vals
-
- min_vals = vector[double]()
- max_vals = vector[double]()
-
- m = 0
- for u in extremes_max:
- u_val = X[u, m]
- max_vals.push_back(u_val)
- m = m + 1
-
- m = 0
- for l in extremes_min:
- l_val = X[l, m]
- min_vals.push_back(l_val)
- m = m + 1
-
- for m in range(M):
-
- diff_val = max_vals[m] - min_vals[m]
- if diff_val == 0.0:
- diff_val = 1.0
-
- for n in range(N):
-
- X[n, m] = (X[n, m] - min_vals[m]) / diff_val
-
- return X
\ No newline at end of file
diff --git a/pymoo/cython/pruning_cd.pyx b/pymoo/cython/pruning_cd.pyx
index 505c29d56..a08c07f5a 100644
--- a/pymoo/cython/pruning_cd.pyx
+++ b/pymoo/cython/pruning_cd.pyx
@@ -3,6 +3,8 @@
import numpy as np
+from pymoo.cython.utils cimport c_get_drop, c_get_argmin, c_get_argmax, c_normalize_array
+
from libcpp cimport bool
from libcpp.vector cimport vector
from libcpp.set cimport set as cpp_set
@@ -193,120 +195,3 @@ cdef cpp_set[int] c_get_calc_items(
I[n:-1, m] = I[n + 1:, m]
return calc_items
-
-
-#Returns elements to remove based on crowding metric d and heap of remaining elements H
-cdef int c_get_drop(double[:] d, cpp_set[int] H):
-
- cdef:
- int i, min_i
- double min_d
-
- min_d = HUGE_VAL
- min_i = 0
-
- for i in H:
-
- if d[i] <= min_d:
- min_d = d[i]
- min_i = i
-
- return min_i
-
-
-#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
-cdef vector[int] c_get_argmin(double[:, :] X):
-
- cdef:
- int N, M, min_i, n, m
- double min_val
- vector[int] indexes
-
- N = X.shape[0]
- M = X.shape[1]
-
- indexes = vector[int]()
-
- for m in range(M):
-
- min_i = 0
- min_val = X[0, m]
-
- for n in range(N):
-
- if X[n, m] < min_val:
-
- min_i = n
- min_val = X[n, m]
-
- indexes.push_back(min_i)
-
- return indexes
-
-
-#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
-cdef vector[int] c_get_argmax(double[:, :] X):
-
- cdef:
- int N, M, max_i, n, m
- double max_val
- vector[int] indexes
-
- N = X.shape[0]
- M = X.shape[1]
-
- indexes = vector[int]()
-
- for m in range(M):
-
- max_i = 0
- max_val = X[0, m]
-
- for n in range(N):
-
- if X[n, m] > max_val:
-
- max_i = n
- max_val = X[n, m]
-
- indexes.push_back(max_i)
-
- return indexes
-
-
-#Performs normalization of a 2d memoryview
-cdef double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
-
- cdef:
- int N = X.shape[0]
- int M = X.shape[1]
- int n, m, l, u
- double l_val, u_val, diff_val
- vector[double] min_vals, max_vals
-
- min_vals = vector[double]()
- max_vals = vector[double]()
-
- m = 0
- for u in extremes_max:
- u_val = X[u, m]
- max_vals.push_back(u_val)
- m = m + 1
-
- m = 0
- for l in extremes_min:
- l_val = X[l, m]
- min_vals.push_back(l_val)
- m = m + 1
-
- for m in range(M):
-
- diff_val = max_vals[m] - min_vals[m]
- if diff_val == 0.0:
- diff_val = 1.0
-
- for n in range(N):
-
- X[n, m] = (X[n, m] - min_vals[m]) / diff_val
-
- return X
\ No newline at end of file
diff --git a/pymoo/cython/utils.pxd b/pymoo/cython/utils.pxd
new file mode 100644
index 000000000..1d15b672c
--- /dev/null
+++ b/pymoo/cython/utils.pxd
@@ -0,0 +1,129 @@
+# distutils: language = c++
+# cython: language_level=2, boundscheck=False, wraparound=False, cdivision=True
+
+import numpy as np
+
+from libcpp cimport bool
+from libcpp.vector cimport vector
+from libcpp.set cimport set as cpp_set
+
+
+cdef extern from "math.h":
+ double HUGE_VAL
+
+
+#Returns elements to remove based on crowding metric d and heap of remaining elements H
+cdef inline int c_get_drop(double[:] d, cpp_set[int] H):
+
+ cdef:
+ int i, min_i
+ double min_d
+
+ min_d = HUGE_VAL
+ min_i = 0
+
+ for i in H:
+
+ if d[i] <= min_d:
+ min_d = d[i]
+ min_i = i
+
+ return min_i
+
+
+#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
+cdef inline vector[int] c_get_argmin(double[:, :] X):
+
+ cdef:
+ int N, M, min_i, n, m
+ double min_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ min_i = 0
+ min_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] < min_val:
+
+ min_i = n
+ min_val = X[n, m]
+
+ indexes.push_back(min_i)
+
+ return indexes
+
+
+#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
+cdef inline vector[int] c_get_argmax(double[:, :] X):
+
+ cdef:
+ int N, M, max_i, n, m
+ double max_val
+ vector[int] indexes
+
+ N = X.shape[0]
+ M = X.shape[1]
+
+ indexes = vector[int]()
+
+ for m in range(M):
+
+ max_i = 0
+ max_val = X[0, m]
+
+ for n in range(N):
+
+ if X[n, m] > max_val:
+
+ max_i = n
+ max_val = X[n, m]
+
+ indexes.push_back(max_i)
+
+ return indexes
+
+
+#Performs normalization of a 2d memoryview
+cdef inline double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
+
+ cdef:
+ int N = X.shape[0]
+ int M = X.shape[1]
+ int n, m, l, u
+ double l_val, u_val, diff_val
+ vector[double] min_vals, max_vals
+
+ min_vals = vector[double]()
+ max_vals = vector[double]()
+
+ m = 0
+ for u in extremes_max:
+ u_val = X[u, m]
+ max_vals.push_back(u_val)
+ m = m + 1
+
+ m = 0
+ for l in extremes_min:
+ l_val = X[l, m]
+ min_vals.push_back(l_val)
+ m = m + 1
+
+ for m in range(M):
+
+ diff_val = max_vals[m] - min_vals[m]
+ if diff_val == 0.0:
+ diff_val = 1.0
+
+ for n in range(N):
+
+ X[n, m] = (X[n, m] - min_vals[m]) / diff_val
+
+ return X
\ No newline at end of file
diff --git a/tests/algorithms/test_rank_and_crowding.py b/tests/algorithms/test_rank_and_crowding.py
new file mode 100644
index 000000000..b08adde36
--- /dev/null
+++ b/tests/algorithms/test_rank_and_crowding.py
@@ -0,0 +1,117 @@
+import pytest
+
+import numpy as np
+from pymoo.optimize import minimize
+from pymoo.problems import get_problem
+from pymoo.indicators.igd import IGD
+from pymoo.algorithms.moo.nsga2 import NSGA2
+from pymoo.operators.survival.rank_and_crowding import RankAndCrowding, ConstrRankAndCrowding
+from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance
+from pymoo.util.function_loader import load_function
+from pymoo.util.mnn import calc_mnn as calc_mnn_python
+from pymoo.util.mnn import calc_2nn as calc_2nn_python
+
+
+calc_mnn = load_function("calc_mnn")
+calc_2nn = load_function("calc_2nn")
+calc_pcd = load_function("calc_pcd")
+
+
+@pytest.mark.parametrize('crowding_func', ["mnn", "2nn", "cd", "pcd", "ce"])
+@pytest.mark.parametrize('survival', [RankAndCrowding, ConstrRankAndCrowding])
+def test_multi_run(crowding_func, survival):
+
+ problem = get_problem("truss2d")
+
+ NGEN = 250
+ POPSIZE = 100
+ SEED = 5
+
+ nsga2 = NSGA2(pop_size=POPSIZE, survival=survival(crowding_func=crowding_func))
+
+ res = minimize(problem,
+ nsga2,
+ ('n_gen', NGEN),
+ seed=SEED,
+ save_history=False,
+ verbose=False)
+
+ assert len(res.opt) > 0
+
+
+def test_cd_and_pcd():
+
+ problem = get_problem("truss2d")
+
+ NGEN = 200
+ POPSIZE = 100
+ SEED = 5
+
+ nsga2 = NSGA2(pop_size=POPSIZE, survival=RankAndCrowding(crowding_func="pcd"))
+
+ res = minimize(problem,
+ nsga2,
+ ('n_gen', NGEN),
+ seed=SEED,
+ save_history=False,
+ verbose=False)
+
+ cd = calc_crowding_distance(res.F)
+ pcd = calc_pcd(res.F)
+
+ assert np.sum(np.abs(cd[~np.isinf(cd)] - pcd[~np.isinf(pcd)])) <= 1e-8
+
+ new_F = res.F.copy()
+
+ for j in range(10):
+
+ cd = calc_crowding_distance(new_F)
+ k = np.argmin(cd)
+ new_F = new_F[np.arange(len(new_F)) != k]
+
+ pcd = calc_pcd(res.F, n_remove=10)
+ ind = np.argpartition(pcd, 10)[:10]
+
+ new_F_alt = res.F.copy()[np.setdiff1d(np.arange(len(res.F)), ind)]
+
+ assert np.sum(np.abs(new_F - new_F_alt)) <= 1e-8
+
+
+def test_mnn():
+
+ problem = get_problem("dtlz2")
+
+ NGEN = 200
+ POPSIZE = 100
+ SEED = 5
+
+ nsga2 = NSGA2(pop_size=POPSIZE, survival=RankAndCrowding(crowding_func="mnn"))
+
+ res = minimize(problem,
+ nsga2,
+ ('n_gen', NGEN),
+ seed=SEED,
+ save_history=False,
+ verbose=False)
+
+ surv_mnn = RankAndCrowding(crowding_func="mnn")
+ surv_2nn = RankAndCrowding(crowding_func="2nn")
+
+ surv_mnn_py = RankAndCrowding(crowding_func=calc_mnn_python)
+ surv_2nn_py = RankAndCrowding(crowding_func=calc_2nn_python)
+
+ np.random.seed(12)
+ pop_mnn = surv_mnn.do(problem, res.pop, n_survive=80)
+
+ np.random.seed(12)
+ pop_mnn_py = surv_mnn_py.do(problem, res.pop, n_survive=80)
+
+ assert np.sum(np.abs(pop_mnn.get("F") - pop_mnn_py.get("F"))) <= 1e-8
+
+ np.random.seed(12)
+ pop_2nn = surv_2nn.do(problem, res.pop, n_survive=70)
+
+ np.random.seed(12)
+ pop_2nn_py = surv_2nn_py.do(problem, res.pop, n_survive=70)
+
+ assert np.sum(np.abs(pop_2nn.get("F") - pop_2nn_py.get("F"))) <= 1e-8
\ No newline at end of file
From d850b3d15e87b723bc617cbc9907187e73de9ca0 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 21:40:17 -0300
Subject: [PATCH 04/12] Fix constrained rank and crowding
---
pymoo/operators/survival/rank_and_crowding/classes.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pymoo/operators/survival/rank_and_crowding/classes.py b/pymoo/operators/survival/rank_and_crowding/classes.py
index dcf3bc1fd..56493bc3f 100644
--- a/pymoo/operators/survival/rank_and_crowding/classes.py
+++ b/pymoo/operators/survival/rank_and_crowding/classes.py
@@ -155,7 +155,7 @@ def _do(self,
if problem.n_constr > 0:
#Split by feasibility
- feas, infeas = split_by_feasibility(pop, eps=0.0, sort_infeasbible_by_cv=True)
+ feas, infeas = feas, infeas = split_by_feasibility(pop, sort_infeas_by_cv=True, sort_feas_by_obj=False, return_pop=False)
#Obtain len of feasible
n_feas = len(feas)
From 97bf0ca21aa9045a972ebcb600cd0801cf9220e7 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 21:46:30 -0300
Subject: [PATCH 05/12] Fix crowding dist w duplicates test
---
tests/misc/test_crowding_distance.py | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/tests/misc/test_crowding_distance.py b/tests/misc/test_crowding_distance.py
index 750c67c98..e6434fbe3 100644
--- a/tests/misc/test_crowding_distance.py
+++ b/tests/misc/test_crowding_distance.py
@@ -3,31 +3,32 @@
import numpy as np
import pytest
-from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance
+from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance, FunctionalDiversity
from pymoo.config import get_pymoo
+crowding_func = FunctionalDiversity(calc_crowding_distance, filter_out_duplicates=True)
@pytest.mark.skip(reason="check if this is supposed to work or not at all")
def test_crowding_distance():
D = np.loadtxt(os.path.join(get_pymoo(), "tests", "resources", "test_crowding.dat"))
F, cd = D[:, :-1], D[:, -1]
- assert np.all(np.abs(cd - calc_crowding_distance(F)) < 0.001)
+ assert np.all(np.abs(cd - crowding_func.do(F)) < 0.001)
def test_crowding_distance_one_duplicate():
F = np.array([[1.0, 1.0], [1.0, 1.0], [0.5, 1.5], [0.0, 2.0]])
- cd = calc_crowding_distance(F)
+ cd = crowding_func.do(F)
np.testing.assert_almost_equal(cd, np.array([np.inf, 0.0, 1.0, np.inf]))
def test_crowding_distance_two_duplicates():
F = np.array([[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [0.5, 1.5], [0.0, 2.0]])
- cd = calc_crowding_distance(F)
+ cd = crowding_func.do(F)
np.testing.assert_almost_equal(cd, np.array([np.inf, 0.0, 0.0, 1.0, np.inf]))
def test_crowding_distance_norm_equals_zero():
F = np.array([[1.0, 1.5, 0.5, 1.0], [1.0, 0.5, 1.5, 1.0], [1.0, 0.0, 2.0, 1.5]])
- cd = calc_crowding_distance(F)
+ cd = crowding_func.do(F)
np.testing.assert_almost_equal(cd, np.array([np.inf, 0.75, np.inf]))
From 2cd022cef0151d6481bf818204b19070df41b0c4 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 23:10:11 -0300
Subject: [PATCH 06/12] Fix functional diversity n_points n_obj
---
pymoo/operators/survival/rank_and_crowding/metrics.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pymoo/operators/survival/rank_and_crowding/metrics.py b/pymoo/operators/survival/rank_and_crowding/metrics.py
index 751f4fe73..f40924ce7 100644
--- a/pymoo/operators/survival/rank_and_crowding/metrics.py
+++ b/pymoo/operators/survival/rank_and_crowding/metrics.py
@@ -46,7 +46,7 @@ def _do(self, F, **kwargs):
n_points, n_obj = F.shape
- if n_points <= F.shape[1]:
+ if n_points <= 2:
return np.full(n_points, np.inf)
else:
From 5ceda2a0815560f90a32283492983e7150c5c42c Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 23:44:02 -0300
Subject: [PATCH 07/12] Fix mnn N versus M
---
pymoo/cython/mnn.pyx | 3 +++
pymoo/operators/survival/rank_and_crowding/metrics.py | 2 +-
pymoo/util/mnn.py | 3 +++
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/pymoo/cython/mnn.pyx b/pymoo/cython/mnn.pyx
index a3a8552fd..854400a95 100644
--- a/pymoo/cython/mnn.pyx
+++ b/pymoo/cython/mnn.pyx
@@ -31,6 +31,9 @@ def calc_mnn(double[:, :] X, int n_remove=0):
N = X.shape[0]
M = X.shape[1]
+ if N <= M:
+ return np.full(N, HUGE_VAL)
+
if n_remove <= (N - M):
if n_remove < 0:
n_remove = 0
diff --git a/pymoo/operators/survival/rank_and_crowding/metrics.py b/pymoo/operators/survival/rank_and_crowding/metrics.py
index f40924ce7..f1ebeb8bc 100644
--- a/pymoo/operators/survival/rank_and_crowding/metrics.py
+++ b/pymoo/operators/survival/rank_and_crowding/metrics.py
@@ -19,7 +19,7 @@ def get_crowding_function(label):
elif hasattr(label, "__call__"):
fun = FunctionalDiversity(label, filter_out_duplicates=True)
else:
- raise KeyError("Crwoding function not defined")
+ raise KeyError("Crowding function not defined")
return fun
diff --git a/pymoo/util/mnn.py b/pymoo/util/mnn.py
index 53a641ace..39aa63271 100644
--- a/pymoo/util/mnn.py
+++ b/pymoo/util/mnn.py
@@ -11,6 +11,9 @@ def calc_mnn_base(X, n_remove=0, twonn=False):
N = X.shape[0]
M = X.shape[1]
+
+ if N <= M:
+ return np.full(N, np.inf)
if n_remove <= (N - M):
if n_remove < 0:
From f64dbd5133d625def17b970174307679013cbccd Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Mon, 31 Oct 2022 23:58:33 -0300
Subject: [PATCH 08/12] Include CowdingDiversity as a valid kwarg
---
.../survival/rank_and_crowding/metrics.py | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/pymoo/operators/survival/rank_and_crowding/metrics.py b/pymoo/operators/survival/rank_and_crowding/metrics.py
index f1ebeb8bc..f6fb4b846 100644
--- a/pymoo/operators/survival/rank_and_crowding/metrics.py
+++ b/pymoo/operators/survival/rank_and_crowding/metrics.py
@@ -13,11 +13,13 @@ def get_crowding_function(label):
elif label == "ce":
fun = FunctionalDiversity(calc_crowding_entropy, filter_out_duplicates=True)
elif label == "mnn":
- fun = FunctionalDiversity(load_function("calc_mnn"), filter_out_duplicates=True)
+ fun = FuncionalDiversityMNN(load_function("calc_mnn"), filter_out_duplicates=True)
elif label == "2nn":
- fun = FunctionalDiversity(load_function("calc_2nn"), filter_out_duplicates=True)
+ fun = FuncionalDiversityMNN(load_function("calc_2nn"), filter_out_duplicates=True)
elif hasattr(label, "__call__"):
fun = FunctionalDiversity(label, filter_out_duplicates=True)
+ elif isinstance(label, CrowdingDiversity):
+ fun = label
else:
raise KeyError("Crowding function not defined")
return fun
@@ -69,6 +71,19 @@ def _do(self, F, **kwargs):
return d
+class FuncionalDiversityMNN(FunctionalDiversity):
+
+ def _do(self, F, **kwargs):
+
+ n_points, n_obj = F.shape
+
+ if n_points <= n_obj:
+ return np.full(n_points, np.inf)
+
+ else:
+ return super()._do(F, **kwargs)
+
+
def calc_crowding_distance(F, **kwargs):
n_points, n_obj = F.shape
From e73644db7915241a183a66ce8cba090fc9da9755 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Fri, 18 Nov 2022 00:14:40 -0300
Subject: [PATCH 09/12] Style code formatting with autopep8
---
pymoo/cython/mnn.pyx | 84 +++++++++----------
pymoo/cython/pruning_cd.pyx | 58 ++++++-------
pymoo/cython/utils.pxd | 38 ++++-----
.../survival/rank_and_crowding/classes.py | 70 ++++++++--------
.../survival/rank_and_crowding/metrics.py | 58 ++++++-------
5 files changed, 154 insertions(+), 154 deletions(-)
diff --git a/pymoo/cython/mnn.pyx b/pymoo/cython/mnn.pyx
index 854400a95..11496135e 100644
--- a/pymoo/cython/mnn.pyx
+++ b/pymoo/cython/mnn.pyx
@@ -52,7 +52,7 @@ def calc_mnn(double[:, :] X, int n_remove=0):
for n in extremes_max:
extremes.insert(n)
-
+
X = c_normalize_array(X, extremes_max, extremes_min)
return c_calc_mnn(X, n_remove, N, M, extremes)
@@ -88,7 +88,7 @@ def calc_2nn(double[:, :] X, int n_remove=0):
extremes.insert(n)
X = c_normalize_array(X, extremes_max, extremes_min)
-
+
M = 2
return c_calc_mnn(X, n_remove, N, M, extremes)
@@ -104,27 +104,27 @@ cdef c_calc_mnn(double[:, :] X, int n_remove, int N, int M, cpp_set[int] extreme
double[:, :] D
double[:] d
int[:, :] Mnn
-
- #Define items to calculate distances
+
+ # Define items to calculate distances
calc_items = cpp_set[int]()
for n in range(N):
calc_items.insert(n)
for n in extremes:
calc_items.erase(n)
-
- #Define remaining items to evaluate
+
+ # Define remaining items to evaluate
H = cpp_set[int]()
for n in range(N):
H.insert(n)
-
- #Instantiate distances array
+
+ # Instantiate distances array
_D = np.empty((N, N), dtype=np.double)
D = _D[:, :]
- #Shape of X
+ # Shape of X
MM = X.shape[1]
-
- #Fill values on D
+
+ # Fill values on D
for i in range(N - 1):
D[i, i] = 0.0
@@ -139,10 +139,10 @@ cdef c_calc_mnn(double[:, :] X, int n_remove, int N, int M, cpp_set[int] extreme
D[N-1, N-1] = 0.0
- #Initialize
+ # Initialize
n_removed = 0
- #Initialize neighbors and distances
+ # Initialize neighbors and distances
# _Mnn = np.full((N, M), -1, dtype=np.intc)
_Mnn = np.argpartition(D, range(1, M+1), axis=1)[:, 1:M+1].astype(np.intc)
dd = np.full((N,), HUGE_VAL, dtype=np.double)
@@ -150,25 +150,25 @@ cdef c_calc_mnn(double[:, :] X, int n_remove, int N, int M, cpp_set[int] extreme
Mnn = _Mnn[:, :]
d = dd[:]
- #Obtain distance metrics
+ # Obtain distance metrics
c_calc_d(d, Mnn, D, calc_items, M)
- #While n_remove not acheived (no need to recalculate if only one item should be removed)
+ # While n_remove not acheived (no need to recalculate if only one item should be removed)
while n_removed < (n_remove - 1):
- #Obtain element to drop
+ # Obtain element to drop
k = c_get_drop(d, H)
H.erase(k)
- #Update index
+ # Update index
n_removed = n_removed + 1
- #Get items to be recalculated
+ # Get items to be recalculated
calc_items = c_get_calc_items(Mnn, H, k, M)
for n in extremes:
calc_items.erase(n)
-
- #Fill in neighbors and distance matrix
+
+ # Fill in neighbors and distance matrix
c_calc_mnn_iter(
X,
Mnn,
@@ -178,7 +178,7 @@ cdef c_calc_mnn(double[:, :] X, int n_remove, int N, int M, cpp_set[int] extreme
H
)
- #Obtain distance metrics
+ # Obtain distance metrics
c_calc_d(d, Mnn, D, calc_items, M)
return dd
@@ -195,51 +195,51 @@ cdef c_calc_mnn_iter(
cdef:
int i, j, m
-
- #Iterate over items to calculate
+
+ # Iterate over items to calculate
for i in calc_items:
- #Iterate over elements in X
+ # Iterate over elements in X
for j in H:
- #Go to next if same element
+ # Go to next if same element
if (j == i):
continue
-
- #Replace at least the last neighbor
+
+ # Replace at least the last neighbor
elif (D[i, j] <= D[i, Mnn[i, M-1]]) or (Mnn[i, M-1] == -1):
-
- #Iterate over current values
+
+ # Iterate over current values
for m in range(M):
- #Set to current if unassigned
+ # Set to current if unassigned
if (Mnn[i, m] == -1):
- #Set last neighbor to index
+ # Set last neighbor to index
Mnn[i, m] = j
break
- #Break if checking already corresponding index
+ # Break if checking already corresponding index
elif (j == Mnn[i, m]):
break
- #Distance satisfies condition
+ # Distance satisfies condition
elif (D[i, j] <= D[i, Mnn[i, m]]):
-
- #Replace higher values
+
+ # Replace higher values
Mnn[i, m + 1:] = Mnn[i, m:-1]
-
- #Replace current value
+
+ # Replace current value
Mnn[i, m] = j
break
-#Calculate crowding metric
+# Calculate crowding metric
cdef c_calc_d(double[:] d, int[:, :] Mnn, double[:, :] D, cpp_set[int] calc_items, int M):
cdef:
int i, m
-
+
for i in calc_items:
d[i] = 1
@@ -247,7 +247,7 @@ cdef c_calc_d(double[:] d, int[:, :] Mnn, double[:, :] D, cpp_set[int] calc_item
d[i] = d[i] * D[i, Mnn[i, m]]
-#Returns indexes of items to be recalculated after removal
+# Returns indexes of items to be recalculated after removal
cdef cpp_set[int] c_get_calc_items(
int[:, :] Mnn,
cpp_set[int] H,
@@ -256,7 +256,7 @@ cdef cpp_set[int] c_get_calc_items(
cdef:
int i, m
cpp_set[int] calc_items
-
+
calc_items = cpp_set[int]()
for i in H:
@@ -269,5 +269,5 @@ cdef cpp_set[int] c_get_calc_items(
Mnn[i, M-1] = -1
calc_items.insert(i)
-
+
return calc_items
diff --git a/pymoo/cython/pruning_cd.pyx b/pymoo/cython/pruning_cd.pyx
index a08c07f5a..6a602d60e 100644
--- a/pymoo/cython/pruning_cd.pyx
+++ b/pymoo/cython/pruning_cd.pyx
@@ -14,7 +14,7 @@ cdef extern from "math.h":
double HUGE_VAL
-#Python definition
+# Python definition
def calc_pcd(double[:, :] X, int n_remove=0):
cdef:
@@ -53,7 +53,7 @@ def calc_pcd(double[:, :] X, int n_remove=0):
return c_calc_pcd(X, I, n_remove, N, M, extremes)
-#Returns crowding metrics with recursive elimination
+# Returns crowding metrics with recursive elimination
cdef c_calc_pcd(double[:, :] X, int[:, :] I, int n_remove, int N, int M, cpp_set[int] extremes):
cdef:
@@ -62,30 +62,30 @@ cdef c_calc_pcd(double[:, :] X, int[:, :] I, int n_remove, int N, int M, cpp_set
cpp_set[int] H
double[:, :] D
double[:] d
-
- #Define items to calculate distances
+
+ # Define items to calculate distances
calc_items = cpp_set[int]()
for n in range(N):
calc_items.insert(n)
for n in extremes:
calc_items.erase(n)
-
- #Define remaining items to evaluate
+
+ # Define remaining items to evaluate
H = cpp_set[int]()
for n in range(N):
H.insert(n)
- #Initialize
+ # Initialize
n_removed = 0
- #Initialize neighbors and distances
+ # Initialize neighbors and distances
_D = np.full((N, M), HUGE_VAL, dtype=np.double)
dd = np.full((N,), HUGE_VAL, dtype=np.double)
D = _D[:, :]
d = dd[:]
- #Fill in neighbors and distance matrix
+ # Fill in neighbors and distance matrix
c_calc_pcd_iter(
X,
I,
@@ -94,25 +94,25 @@ cdef c_calc_pcd(double[:, :] X, int[:, :] I, int n_remove, int N, int M, cpp_set
calc_items,
)
- #Obtain distance metrics
+ # Obtain distance metrics
c_calc_d(d, D, calc_items, M)
- #While n_remove not acheived
+ # While n_remove not acheived
while n_removed < (n_remove - 1):
- #Obtain element to drop
+ # Obtain element to drop
k = c_get_drop(d, H)
H.erase(k)
- #Update index
+ # Update index
n_removed = n_removed + 1
- #Get items to be recalculated
+ # Get items to be recalculated
calc_items = c_get_calc_items(I, k, M, N)
for n in extremes:
calc_items.erase(n)
-
- #Fill in neighbors and distance matrix
+
+ # Fill in neighbors and distance matrix
c_calc_pcd_iter(
X,
I,
@@ -121,13 +121,13 @@ cdef c_calc_pcd(double[:, :] X, int[:, :] I, int n_remove, int N, int M, cpp_set
calc_items,
)
- #Obtain distance metrics
+ # Obtain distance metrics
c_calc_d(d, D, calc_items, M)
return dd
-#Iterate
+# Iterate
cdef c_calc_pcd_iter(
double[:, :] X,
int[:, :] I,
@@ -138,11 +138,11 @@ cdef c_calc_pcd_iter(
cdef:
int i, m, n, l, u
-
- #Iterate over items to calculate
+
+ # Iterate over items to calculate
for i in calc_items:
- #Iterate over elements in X
+ # Iterate over elements in X
for m in range(M):
for n in range(N):
@@ -155,12 +155,12 @@ cdef c_calc_pcd_iter(
D[i, m] = (X[u, m] - X[l, m]) / M
-#Calculate crowding metric
+# Calculate crowding metric
cdef c_calc_d(double[:] d, double[:, :] D, cpp_set[int] calc_items, int M):
cdef:
int i, m
-
+
for i in calc_items:
d[i] = 0
@@ -168,7 +168,7 @@ cdef c_calc_d(double[:] d, double[:, :] D, cpp_set[int] calc_items, int M):
d[i] = d[i] + D[i, m]
-#Returns indexes of items to be recalculated after removal
+# Returns indexes of items to be recalculated after removal
cdef cpp_set[int] c_get_calc_items(
int[:, :] I,
int k, int M, int N
@@ -177,21 +177,21 @@ cdef cpp_set[int] c_get_calc_items(
cdef:
int n, m
cpp_set[int] calc_items
-
+
calc_items = cpp_set[int]()
- #Iterate over all elements in I
+ # Iterate over all elements in I
for m in range(M):
for n in range(N):
if I[n, m] == k:
- #Add to set of items to be recalculated
+ # Add to set of items to be recalculated
calc_items.insert(I[n - 1, m])
calc_items.insert(I[n + 1, m])
- #Remove element from sorted array
+ # Remove element from sorted array
I[n:-1, m] = I[n + 1:, m]
-
+
return calc_items
diff --git a/pymoo/cython/utils.pxd b/pymoo/cython/utils.pxd
index 1d15b672c..303807cf2 100644
--- a/pymoo/cython/utils.pxd
+++ b/pymoo/cython/utils.pxd
@@ -10,9 +10,9 @@ from libcpp.set cimport set as cpp_set
cdef extern from "math.h":
double HUGE_VAL
-
-#Returns elements to remove based on crowding metric d and heap of remaining elements H
+
+# Returns elements to remove based on crowding metric d and heap of remaining elements H
cdef inline int c_get_drop(double[:] d, cpp_set[int] H):
cdef:
@@ -27,23 +27,23 @@ cdef inline int c_get_drop(double[:] d, cpp_set[int] H):
if d[i] <= min_d:
min_d = d[i]
min_i = i
-
+
return min_i
-#Returns vector of positions of minimum values along axis 0 of a 2d memoryview
+# Returns vector of positions of minimum values along axis 0 of a 2d memoryview
cdef inline vector[int] c_get_argmin(double[:, :] X):
cdef:
int N, M, min_i, n, m
double min_val
vector[int] indexes
-
+
N = X.shape[0]
M = X.shape[1]
indexes = vector[int]()
-
+
for m in range(M):
min_i = 0
@@ -55,25 +55,25 @@ cdef inline vector[int] c_get_argmin(double[:, :] X):
min_i = n
min_val = X[n, m]
-
+
indexes.push_back(min_i)
-
+
return indexes
-#Returns vector of positions of maximum values along axis 0 of a 2d memoryview
+# Returns vector of positions of maximum values along axis 0 of a 2d memoryview
cdef inline vector[int] c_get_argmax(double[:, :] X):
cdef:
int N, M, max_i, n, m
double max_val
vector[int] indexes
-
+
N = X.shape[0]
M = X.shape[1]
indexes = vector[int]()
-
+
for m in range(M):
max_i = 0
@@ -85,13 +85,13 @@ cdef inline vector[int] c_get_argmax(double[:, :] X):
max_i = n
max_val = X[n, m]
-
+
indexes.push_back(max_i)
-
+
return indexes
-#Performs normalization of a 2d memoryview
+# Performs normalization of a 2d memoryview
cdef inline double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_max, vector[int] extremes_min):
cdef:
@@ -100,7 +100,7 @@ cdef inline double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_
int n, m, l, u
double l_val, u_val, diff_val
vector[double] min_vals, max_vals
-
+
min_vals = vector[double]()
max_vals = vector[double]()
@@ -109,13 +109,13 @@ cdef inline double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_
u_val = X[u, m]
max_vals.push_back(u_val)
m = m + 1
-
+
m = 0
for l in extremes_min:
l_val = X[l, m]
min_vals.push_back(l_val)
m = m + 1
-
+
for m in range(M):
diff_val = max_vals[m] - min_vals[m]
@@ -125,5 +125,5 @@ cdef inline double[:, :] c_normalize_array(double[:, :] X, vector[int] extremes_
for n in range(N):
X[n, m] = (X[n, m] - min_vals[m]) / diff_val
-
- return X
\ No newline at end of file
+
+ return X
diff --git a/pymoo/operators/survival/rank_and_crowding/classes.py b/pymoo/operators/survival/rank_and_crowding/classes.py
index 56493bc3f..bc326221c 100644
--- a/pymoo/operators/survival/rank_and_crowding/classes.py
+++ b/pymoo/operators/survival/rank_and_crowding/classes.py
@@ -13,9 +13,9 @@ def __init__(self, nds=None, crowding_func="cd"):
A generalization of the NSGA-II survival operator that ranks individuals by dominance criteria
and sorts the last front by some user-specified crowding metric. The default is NSGA-II's crowding distances
although others might be more effective.
-
+
For many-objective problems, try using 'mnn' or '2nn'.
-
+
For Bi-objective problems, 'pcd' is very effective.
Parameters
@@ -25,29 +25,29 @@ def __init__(self, nds=None, crowding_func="cd"):
crowding_func : str or callable, optional
Crowding metric. Options are:
-
+
- 'cd': crowding distances
- 'pcd' or 'pruning-cd': improved pruning based on crowding distances
- 'ce': crowding entropy
- 'mnn': M-Neaest Neighbors
- '2nn': 2-Neaest Neighbors
-
+
If callable, it has the form ``fun(F, filter_out_duplicates=None, n_remove=None, **kwargs)``
in which F (n, m) and must return metrics in a (n,) array.
-
+
The options 'pcd', 'cd', and 'ce' are recommended for two-objective problems, whereas 'mnn' and '2nn' for many objective.
When using 'pcd', 'mnn', or '2nn', individuals are already eliminated in a 'single' manner.
Due to Cython implementation, they are as fast as the corresponding 'cd', 'mnn-fast', or '2nn-fast',
although they can singnificantly improve diversity of solutions.
Defaults to 'cd'.
"""
-
+
crowding_func_ = get_crowding_function(crowding_func)
super().__init__(filter_infeasible=True)
self.nds = nds if nds is not None else NonDominatedSorting()
self.crowding_func = crowding_func_
-
+
def _do(self,
problem,
pop,
@@ -68,19 +68,19 @@ def _do(self,
# current front sorted by crowding distance if splitting
while len(survivors) + len(front) > n_survive:
-
- #Define how many will be removed
+
+ # Define how many will be removed
n_remove = len(survivors) + len(front) - n_survive
-
+
# re-calculate the crowding distance of the front
crowding_of_front = \
self.crowding_func.do(
F[front, :],
n_remove=n_remove
)
-
+
I = randomized_argsort(crowding_of_front, order='descending', method='numpy')
-
+
I = I[:-n_remove]
front = front[I]
@@ -105,7 +105,7 @@ def _do(self,
class ConstrRankAndCrowding(Survival):
-
+
def __init__(self, nds=None, crowding_func="cd"):
"""
The Rank and Crowding survival approach for handling constraints proposed on
@@ -118,27 +118,27 @@ def __init__(self, nds=None, crowding_func="cd"):
crowding_func : str or callable, optional
Crowding metric. Options are:
-
+
- 'cd': crowding distances
- 'pcd' or 'pruning-cd': improved pruning based on crowding distances
- 'ce': crowding entropy
- 'mnn': M-Neaest Neighbors
- '2nn': 2-Neaest Neighbors
-
+
If callable, it has the form ``fun(F, filter_out_duplicates=None, n_remove=None, **kwargs)``
in which F (n, m) and must return metrics in a (n,) array.
-
+
The options 'pcd', 'cd', and 'ce' are recommended for two-objective problems, whereas 'mnn' and '2nn' for many objective.
When using 'pcd', 'mnn', or '2nn', individuals are already eliminated in a 'single' manner.
Due to Cython implementation, they are as fast as the corresponding 'cd', 'mnn-fast', or '2nn-fast',
although they can singnificantly improve diversity of solutions.
Defaults to 'cd'.
"""
-
+
super().__init__(filter_infeasible=False)
self.nds = nds if nds is not None else NonDominatedSorting()
self.ranking = RankAndCrowding(nds=nds, crowding_func=crowding_func)
-
+
def _do(self,
problem,
pop,
@@ -151,49 +151,49 @@ def _do(self,
n_survive = min(n_survive, len(pop))
- #If the split should be done beforehand
+ # If the split should be done beforehand
if problem.n_constr > 0:
- #Split by feasibility
+ # Split by feasibility
feas, infeas = feas, infeas = split_by_feasibility(pop, sort_infeas_by_cv=True, sort_feas_by_obj=False, return_pop=False)
- #Obtain len of feasible
+ # Obtain len of feasible
n_feas = len(feas)
- #Assure there is at least_one survivor
+ # Assure there is at least_one survivor
if n_feas == 0:
survivors = Population()
else:
survivors = self.ranking.do(problem, pop[feas], *args, n_survive=min(len(feas), n_survive), **kwargs)
- #Calculate how many individuals are still remaining to be filled up with infeasible ones
+ # Calculate how many individuals are still remaining to be filled up with infeasible ones
n_remaining = n_survive - len(survivors)
- #If infeasible solutions need to be added
+ # If infeasible solutions need to be added
if n_remaining > 0:
-
- #Constraints to new ranking
+
+ # Constraints to new ranking
G = pop[infeas].get("G")
G = np.maximum(G, 0)
-
- #Fronts in infeasible population
+
+ # Fronts in infeasible population
infeas_fronts = self.nds.do(G, n_stop_if_ranked=n_remaining)
-
- #Iterate over fronts
+
+ # Iterate over fronts
for k, front in enumerate(infeas_fronts):
- #Save ranks
+ # Save ranks
pop[infeas][front].set("cv_rank", k)
- #Current front sorted by CV
+ # Current front sorted by CV
if len(survivors) + len(front) > n_survive:
-
- #Obtain CV of front
+
+ # Obtain CV of front
CV = pop[infeas][front].get("CV").flatten()
I = randomized_argsort(CV, order='ascending', method='numpy')
I = I[:(n_survive - len(survivors))]
- #Otherwise take the whole front unsorted
+ # Otherwise take the whole front unsorted
else:
I = np.arange(len(front))
diff --git a/pymoo/operators/survival/rank_and_crowding/metrics.py b/pymoo/operators/survival/rank_and_crowding/metrics.py
index f6fb4b846..ba45dee32 100644
--- a/pymoo/operators/survival/rank_and_crowding/metrics.py
+++ b/pymoo/operators/survival/rank_and_crowding/metrics.py
@@ -23,29 +23,29 @@ def get_crowding_function(label):
else:
raise KeyError("Crowding function not defined")
return fun
-
+
class CrowdingDiversity:
-
+
def do(self, F, n_remove=0):
- #Converting types Python int to Cython int would fail in some cases converting to long instead
+ # Converting types Python int to Cython int would fail in some cases converting to long instead
n_remove = np.intc(n_remove)
F = np.array(F, dtype=np.double)
return self._do(F, n_remove=n_remove)
-
+
def _do(self, F, n_remove=None):
pass
class FunctionalDiversity(CrowdingDiversity):
-
+
def __init__(self, function=None, filter_out_duplicates=True):
self.function = function
self.filter_out_duplicates = filter_out_duplicates
super().__init__()
-
+
def _do(self, F, **kwargs):
-
+
n_points, n_obj = F.shape
if n_points <= 2:
@@ -62,24 +62,24 @@ def _do(self, F, **kwargs):
# index the unique points of the array
_F = F[is_unique]
-
+
_d = self.function(_F, **kwargs)
-
+
d = np.zeros(n_points)
d[is_unique] = _d
-
+
return d
class FuncionalDiversityMNN(FunctionalDiversity):
-
+
def _do(self, F, **kwargs):
-
+
n_points, n_obj = F.shape
if n_points <= n_obj:
return np.full(n_points, np.inf)
-
+
else:
return super()._do(F, **kwargs)
@@ -113,7 +113,7 @@ def calc_crowding_distance(F, **kwargs):
cd = np.sum(dist_to_last[J, np.arange(n_obj)] + dist_to_next[J, np.arange(n_obj)], axis=1) / n_obj
return cd
-
+
def calc_crowding_entropy(F, **kwargs):
"""Wang, Y.-N., Wu, L.-H. & Yuan, X.-F., 2010. Multi-objective self-adaptive differential
@@ -148,24 +148,24 @@ def calc_crowding_entropy(F, **kwargs):
# prepare the distance to last and next vectors
dl = dist.copy()[:-1]
du = dist.copy()[1:]
-
- #Fix nan
+
+ # Fix nan
dl[np.isnan(dl)] = 0.0
du[np.isnan(du)] = 0.0
-
- #Total distance
+
+ # Total distance
cd = dl + du
- #Get relative positions
+ # Get relative positions
pl = (dl[1:-1] / cd[1:-1])
pu = (du[1:-1] / cd[1:-1])
- #Entropy
+ # Entropy
entropy = np.row_stack([np.full(n_obj, np.inf),
-(pl * np.log2(pl) + pu * np.log2(pu)),
np.full(n_obj, np.inf)])
-
- #Crowding entropy
+
+ # Crowding entropy
J = np.argsort(I, axis=0)
_cej = cd[J, np.arange(n_obj)] * entropy[J, np.arange(n_obj)] / norm
_cej[np.isnan(_cej)] = 0.0
@@ -176,8 +176,8 @@ def calc_crowding_entropy(F, **kwargs):
def calc_mnn_fast(F, **kwargs):
return _calc_mnn_fast(F, F.shape[1], **kwargs)
-
-
+
+
def calc_2nn_fast(F, **kwargs):
return _calc_mnn_fast(F, 2, **kwargs)
@@ -187,20 +187,20 @@ def _calc_mnn_fast(F, n_neighbors, **kwargs):
# calculate the norm for each objective - set to NaN if all values are equal
norm = np.max(F, axis=0) - np.min(F, axis=0)
norm[norm == 0] = 1.0
-
+
# F normalized
F = (F - F.min(axis=0)) / norm
-
+
# Distances pairwise (Inefficient)
D = squareform(pdist(F, metric="sqeuclidean"))
-
+
# M neighbors
M = F.shape[1]
_D = np.partition(D, range(1, M+1), axis=1)[:, 1:M+1]
-
+
# Metric d
d = np.prod(_D, axis=1)
-
+
# Set top performers as np.inf
_extremes = np.concatenate((np.argmin(F, axis=0), np.argmax(F, axis=0)))
d[_extremes] = np.inf
From 40fb9f90e4b84f522c4c092218ff5650dac69e23 Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Sat, 7 Jan 2023 20:36:48 -0300
Subject: [PATCH 10/12] DOCS survival rank and crowding
---
docs/source/operators/survival.ipynb | 276 +++++++++++++++++++++++++++
docs/source/references.bib | 45 ++++-
2 files changed, 320 insertions(+), 1 deletion(-)
create mode 100644 docs/source/operators/survival.ipynb
diff --git a/docs/source/operators/survival.ipynb b/docs/source/operators/survival.ipynb
new file mode 100644
index 000000000..f0a1e5f29
--- /dev/null
+++ b/docs/source/operators/survival.ipynb
@@ -0,0 +1,276 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ ".. _nb_survival:"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Survival"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Rank and Crowding"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The original survival strategy proposed in [NSGA-II](../algorithms/moo/nsga2.ipynb#nsga-ii-non-dominated-sorting-genetic-algorithm) ranks solutions in fronts by dominance criterion and uses a diversity metric denoted crowding distances to sort individuals in each front. This is used as criterion to compare individuals in elitist parent selection schemes and to truncate the population in the survival selection stage of algorithms.\n",
+ "\n",
+ "Variants of the original algorithm have been proposed in the literature to address different performance aspects. Therefore the class ``RankAndCrowding`` from pymoo is a generalization of NSGA-II's survival in which several crowding metrics can be used. Some are already implemented and can be parsed as strings in the ``crowding_func`` argument, while others might be defined from scratch and parsed as callables. The ones available are:\n",
+ "\n",
+ "- **Crowding Distance** (*'cd'*): Proposed by Deb et al. in NSGA-II.\n",
+ "- **Pruning Crowding Distance** (*'pruning-cd'* or *'pcd'*): Proposed by Kukkonen & Deb , it recursively recalculates crowding distances as removes individuals from a population to improve diversity.\n",
+ "- ***M*-Nearest Neighbors** (*'mnn'*): Proposed by Kukkonen & Deb in an extension of GDE3 to many-objective problems.\n",
+ "- **2-Nearest Neighbors** (*'2nn'*): Also proposed by Kukkonen & Deb , it is a variant of M-Nearest Neighbors in which the number of neighbors is two.\n",
+ "- **Crowding Entropy** (*'ce'*): Proposed by Wang et al. it considers the relative position of a solution between its neighors.\n",
+ "\n",
+ "We encourage users to try ``crowding_func='pcd'`` for two-objective problems and ``crowding_func='mnn'`` for problems with more than two objectives.\n",
+ "\n",
+ "If callable, it has the form ``fun(F, filter_out_duplicates=None, n_remove=None, **kwargs)`` in which F (n, m) and must return metrics in a (n,) array.\n",
+ "\n",
+ "The ``ConstrRankAndCrowding`` class has the constraint handling approach proposed by Kukkonen, S. & Lampinen, J. implemented in which solutions are also sorted in constraint violations space."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the following examples the code for plotting was ommited although it is available in the [end of the page](#plots)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Pymoo imports\n",
+ "from pymoo.algorithms.moo.nsga2 import NSGA2\n",
+ "from pymoo.operators.survival.rank_and_crowding import RankAndCrowding\n",
+ "from pymoo.problems import get_problem\n",
+ "from pymoo.optimize import minimize\n",
+ "\n",
+ "# External imports\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Problem definition Truss-2d - a two-objective problem\n",
+ "problem = get_problem(\"truss2d\")\n",
+ "\n",
+ "# Algorithms\n",
+ "nsga2 = NSGA2(70, survival=RankAndCrowding(crowding_func=\"cd\"))\n",
+ "nsga2_p = NSGA2(70, survival=RankAndCrowding(crowding_func=\"pcd\"))\n",
+ "\n",
+ "# Minimization results\n",
+ "res_nsga2 = minimize(\n",
+ " problem,\n",
+ " nsga2,\n",
+ " ('n_gen', 200),\n",
+ " seed=12,\n",
+ ")\n",
+ "\n",
+ "# Minimization results\n",
+ "res_nsga2_p = minimize(\n",
+ " problem,\n",
+ " nsga2_p,\n",
+ " ('n_gen', 200),\n",
+ " seed=12,\n",
+ ")"
+ ]
+ },
+ {
+ "attachments": {
+ "image.png": {
+ "image/png": "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WLJkiaqqW7ZsEULYbDYt9P7770uSpP0VH3vssaFDh/b09Gihv//972PHjtV+v+KKK6ZNm+Z8rszMzBtuuGHgJzoat+e/Q4cU139BulZ9s0cuPnRIOdEDAjgebsxY3vt2RpshqqqqDAbDjh071N4z1g033DBu3Ljt27f3eZSiKHFxcdqn1gCKiory8vJUVX3kkUf+7//+b+Acjvzd1aeffiqEaG5udo78+te/TklJWb169YYNGywWy5lnnvnDDz+oqvrMM88MHjw4KytrzZo1n3/++ffff+96zOuuu+6000774IMPNm/e/Jvf/CY6OvpoJV9SUtJLL7305Zdf3nTTTVFRUe3t7aqq/vDDD8XFxTab7euvv37hhReGDBnyyiuv9Jv5+++/Hx4e3t3d3eeF+FXJ5xQo853q7nvlOHTI9R98rlXf8smTHYcOndDRAOjFjQnUe1/3BO4Eetppp0VHR997771bt259+OGHZVlevny5ltvEiRNTU1OXL1/+1Vdfvf322++9956qqmvXrg0LC7vvvvu2bt1aVlYWFxfnWvJ9//33YWFhH330UZ/ndW++0/lavm3btjU3N+fk5Gg3Y2NjMzMza2trhRC1tbVxcXHp6elaKCcnJywsbN26dVpoypQp4eHhWshisWzdulVb/K2trXUeTQtpRxvgiVz19PR0unDvRTVUN7V929VPQBVtOzobqpvcOywAz1IUR0WhVai9R1UhhKiYu9wjZ3j+5je/Offcc++8884+43feeWdcXNyoUaPGjh17zTXXvPrqqw6HQwjx3Xff7d27d+zYsc57nn/++VFRUVFRUTNnztRGHA7Hs88++7vf/U4IMWPGjI8//njbtm1uZ/jNN9/IspyQkKDd/PLLL5cuXfrkk09mZ2dPmDDhxRdf3Llzp/PUxIMHDz722GNZWVljx451PVezq6vrueeee+CBBy6++OK0tLRnnnlGOfrpPddcc83MmTPPPPPM0tLSffv2ffLJJ0KIwYMH33333enp6aNHj541a9a111776quv9vvw4cOH//DDD83NzW6/ZL3423wnPDHltdts3f3+LVS1225vt9ncOCYA/6cqSn1JiVB7z6CqKoSonz/fI2d4BtwEqpk8efJtt902ZsyYP//5z3l5eQ899JAQ4oMPPvjkk0+qqqp+/vOfn3766ZdeeukvfvELIURZWdkll1xy6623jhkz5qabbrJYLK6HGjJkSGxs7DfffON2hq50Lvm0aTsxMdE5kpiYqA02Nze7vomDBg069dRTnaE+D3Ee6siQc/xoT+Tq3nvvjf3RyJEj3XtRe+z73I4C8BnffDtz3333Pffcc42NvS7lNZvNtbW1mzdvLiwsPHTo0OzZsy+55BJt0urjjTfe0FbbDhw4oI2sWLHi+++//+UvfymEMBqNP//5z59++mkhRHV1ddSPXnzxxeNM78CBAxEREc7L4hsbGwcNGpSZmandjI+PHzt2rDP58PDwc84558iDfP311wcPHrzgggu0m7Gxsa6Tbh/OI5xyyikxMTGtra3azfLy8vPPP3/YsGFRUVEVFRVNTf2//5GRkUKI/fv3H+cL9B/+Nt8JT0x5PT/++dyIAghcvvm6J7AmUM2kSZNcf9eS37BhQ1JS0pgxY/ocobGx0Tnh9nmsJjIy0lPzHTt29nL77bd3/GjHjh3uHWSoeaCLOAeOAvAZ33w7M2XKFIvFcvvttx8ZSktL+9Of/vTCCy+sWLFixYoVq1atGjZsWFxc3NatW533SU5OPvPMM6Ojo50jTz311O7duyMjIwcNGjRo0KD33nvvueeeczgc6enpG37061//+jjTMxqN+/fv/+GHH47nzpGRkSffqHfw4MHO3yVJ0ubpl19++W9/+9ucOXOWL1++YcOGa6+99mgp7d69WwgxbNiwk0wDwhNTXkTvr7dPKAogcPnm656gmUC1LyvdsHv3bk/NdzqXfCaTSQjR0tLiHGlpadEGTSZTq8t/MYcOHdq9e7cz1OchzkMdGXKOH+2JXEVERMS4cO9FjctKCpP7/1dRmCyNy0py77AAPMtn384sXLjw7bff7vfMOs3ZZ58thNDO2r/iiiteeOGFXbt29XvP9vb2t9566+WXX3ZOTp999tmePXuWL1+ubYiicZ3hBnbuuecKIbRryYQQKSkphw4d0k4p1J5u69atWnoDOP300wcPHmz78Wvdjo6OL7744jgT0KxZsyYrK+tPf/rTeeedd+aZZ3711VdHu2d9fX1SUpLRaDyh4/sDf5vvhCemvPiMDIPJJI78IkCSDGZzfEaGG8cE4P989nVPAE2gmrVr17r+npKSIoQ455xzvv322yNnxpSUFOeE2+exQoivvvqqu7v7vPPOO858BqZzyTd69GiTyfThhx9qNzs7O9etW6cta06aNGnv3r3r16/XQv/5z38cDoe2+jlp0qTVq1cfPHhQC61YsWLs2LFDhw7VQs6jaSHtaAM8kcd9XvOtQ1H7DTkU9fOab73xpABOVGp2sjEpWhz5/YwkjCNjUrOTPfVE48ePnzVrlutWy3/84x/nz5+/Zs2ab775Zu3atb///e+HDRumfSKVlpaOGDHiggsuePrppzdt2vTVV1+98cYbtbW1siwLIZ5//vn4+Pgrrrgi7UcTJkz45S9/+dRTT7mX27Bhw37yk598/PHH2s2zzjpr+vTp119//ccff7xx48bf/e53I0aMmD59+sAHiY6Onj179i233PLRRx81NDTMmTMnLCzshNYDzzrrrLq6OqvV+sUXXxQVFdmOflJQdXX11KlTj//I/iMo5ztJltOKi4UQvao+SRJCpBUVSbLsjScFoDuffd0TQBOoZs2aNYsWLfriiy/Ky8tfe+21wsJCIcRPf/rTKVOmXH755StWrNi2bdv777+/bNkyIcRNN920bNmyBx544Msvv3z00Ue1Qafq6urTTz/9jDPOcC+9PnxX8u3bt08rqYUQ27Zt27BhQ1NTkyRJc+fOXbBgwdKlSzdv3vz73/9++PDhWrvDlJSUSy655Prrr//kk0/WrFlz4403zpgxY/jw4UKIq666Kjw8fM6cOQ0NDa+88kpZWdlf/vIX7VkKCwuXLVv24IMPfv7553fddVddXd2NN94ohBjgiTyOa/mAgCDLYfllFiFEr6pPEkKI/MVTZdmTH48lJSWuVxrk5OSsXbv2t7/97ZgxYy6//HKDwfDhhx/Gx8cLIeLj4z/55JPf//73999//wUXXDB+/Pi77rrryiuvfOKJJ4QQTz/99G9+85s+1dTll1++dOnStrY293K77rrrXC9deOaZZ84///xLL7100qRJqqq+9957rqdiHs0///nPSZMmXXrppTk5OZMnT05JSTEYDMefww033JCbm3vllVdmZma2t7f/6U9/6vdu3d3db7755vXXX3/8R9ZF6Mx3QgizxZJeXm5wuXTQYDKll5ebe+9DACCY+PLrngCaQIUQf/3rX+vq6s4777wFCxb885//dO7I8vrrr2dkZMycOfPss8++9dZbtU3OJk6c+MQTT5SVlU2YMGH58uX/+Mc/XA+1ZMkST853R93E1NM++uijPk89e/ZsVVUd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ulNOOcVisXR3d2uhWbNmNTQ0rFix4p133lm9enV+fr423tnZOXXq1NNOO239+vX333//XXfdVVFRoYVqampmzpw5Z86czz777LLLLrvsssvq6/u/rM576NMAACErpOY7IYTdaq0rKHDtyd7d0lJXUEDVBwA+Jjm/YtTLpZdempiY+NRTT2k3L7/88sjIyBdeeEFFZMD6AAAgAElEQVRV1eHDh//1r3/929/+JoTo6OhITEx89tlnZ8yY0djYePbZZ9tstvT0dCHEsmXLfvnLX3777bfDhw//17/+dccddzQ3N4eHhwshbrvttjfffPPzzz8XQlx55ZXff//9O++8oz3RxIkTzz333Mcff/xoiXV2dsbGxnZ0dMTExHjw9dZUNZbmVQohhPONl4QQYl5lXlZuigefCABCnJc+xt3mt/Od8MJ7pSrKB1OmuNZ7/yNJBpMpZ9UqrusDAE855me4/qt8WVlZH3744RdffCGE2Lhx48cff/yLX/xCCLFt27bm5uacnBztbrGxsZmZmbW1tUKI2trauLg4bf4TQuTk5ISFha1bt04LTZkyRZv/hBAWi2Xr1q179uzRQs6jaSHtaK56eno6XXjl9eamzKvMM46Ido4Yk2Ko9wAg6PnVfCe8POW122z91HtCCFXtttvbbTbPPh0AYAD679h52223dXZ2jhs3TpZlRVHuueeeWbNmCSGam5uFEIku+zsnJiZqg83NzQkJCc7xQYMGnXrqqc7Q6NGjXR+iDQ4dOrS5ubnfo7m699577777bm+8TFdZuSmZ08c2VDftse8bao5KzU6mDzsABD2/mu+El6e8ntZWt6MAAM/Sv9J49dVXX3zxxZdeeunTTz997rnnHnjggeeee06vZG6//faOH+3YscN7TyTLYanZyUPNUXvs+xqqm+jIBwBBz6/mO+HlKS/CpVI90SgAwLP0X+W75ZZbbrvtthkzZgghxo8f/80339x7772zZ882mUxCiJaWFrPZrN2zpaXl3HPPFUKYTKZWly8IDx06tHv3bu3+JpOppaXFGdJ+P1pIG3cVERERERHhnRfaS01VY0Wh1dmjz5gUnV9m4dxOAAhifjXfCS9PefEZGQaTqbulRfTZMkCSDCZTfEaGl54XAHAk/Vf59u/fHxZ2OA1Zlh0OhxBi9OjRJpPpww8/1MY7OzvXrVs3adIkIcSkSZP2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"
+ }
+ },
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![image.png](attachment:image.png)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Problem definition DTLZ2 - a three-objective problem\n",
+ "problem = get_problem(\"dtlz2\")\n",
+ "\n",
+ "# Algorithms\n",
+ "nsga2 = NSGA2(130, survival=RankAndCrowding(crowding_func=\"cd\"))\n",
+ "nsga2_mnn = NSGA2(130, survival=RankAndCrowding(crowding_func=\"mnn\"))\n",
+ "\n",
+ "# Minimization results\n",
+ "res_nsga2 = minimize(\n",
+ " problem,\n",
+ " nsga2,\n",
+ " ('n_gen', 150),\n",
+ " seed=12,\n",
+ ")\n",
+ "\n",
+ "# Minimization results\n",
+ "res_nsga2_mnn = minimize(\n",
+ " problem,\n",
+ " nsga2_mnn,\n",
+ " ('n_gen', 150),\n",
+ " seed=12,\n",
+ ")"
+ ]
+ },
+ {
+ "attachments": {
+ "image.png": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABDQAAAHqCAIAAAB0gInVAAAAAXNSR0IArs4c6QAAIABJREFUeJzsvWeYJFd5932qOuc4OefZ3dk8M1qFlQQIIVbCQgiEQEKICzAG/AIPxoBtDIYXZDDCGONEUCBKyCDB+jFYErJAq11tkDZ2T845dJjOqarO8+GwRW2nqe6uDrNz/z7stdPh9OmZ7vuu/7kThTFGAAAAAAAAAAAA5YYu9wYAAAAAAAAAAAAQAnECAAAAAAAAAECFAOIEAAAAAAAAAICKAMQJAAAAAAAAAAAVAYgTAAAAAAAAAAAqAhAnAAAAAAAAAABUBCBOAAAAAAAAAACoCECcAAAAAAAAAABQEYA4AQAAAAAAAACgIgBxAgAAAAAAAABARQDiBAAAAAAAAACAigDECQAAAAAAAAAAFQGIEwAAAAAAAAAAKgIQJwAAAAAAAAAAVAQgTgAAAAAAAAAAqAjk5d4AAAD5wLJsIpEo9y6A0qFQKGQyWbl3AQAAUDbA8W05lEolTeccCAFxAgBbDIzxysrKxsZGuTcClBqz2VxbW0tRVLk3AgAAUFLA8W1RaJpua2tTKpU5PYvCGBdpQwAAFIPl5eWNjY3q6mqtVgvXqdsEjHE4HF5bWzObzXV1deXeDgAAQEkBx7cV4ThuaWlJoVA0Nzfn9FeDyAkAbCVYliUG2mazlXsvQEnRaDQIobW1terqasjvAgBg+wCOb+tSVVW1tLTEMIxCoRD/LCiIB4CtBEm31Wq15d4IUAbI3x1SrgEA2FaA49u6kIQulmVzehaIEwDYekBQe3sCf3cAALYtYAC3Ivn91UCcAAAAAAAAAABQEYA4AQBgW/Ce97znoYceyvVZDz744Fvf+tZNH9ba2vpP//RPee0r+VXuvffeb3zjG3kvBQAAAACE/BxfHhw6dOgXv/iFVKuBOAEAIE8efPBBiqK++tWv8rf88pe/FMZwv/e97+3du1ev15vN5v379//93/89f5ff7//bv/3bXbt2aTQam802MDDwD//wD16vV7j+E088IZPJPvrRj2bfA39Zn0VIXLhw4de//vXHPvaxXN/jt771rccff3zTh505c+ZP//RPc108LZ/73Oe+8pWv+Hw+SVYDAAAAJGQ7OL48+NznPvfZz36W4zhJVgNxAgBA/qjV6q997WtJtpXw6KOPfuITn/jYxz52/vz548ePf/rTnw4Gg+Quj8dz6NChxx577FOf+tSpU6fOnj37la985dy5cz/96U+FKzzyyCOf/vSnn3jiiWg0WuA+v/3tb7/jHe/Q6/Xin8KyLMdxJpPJbDZv+uCqqiqpijX7+vo6Ojp+/OMfS7IaAAAAIC1XsePLmze/+c2BQOA3v/mNJKuBOAGA7cLimPvV30wsjrslXPOWW26pra0VngzxHD169J577nn/+9/f2dm5a9eud73rXV/5ylfIXX/91389Nzd3+vTp973vfXv27Glpabn11lufeOKJj3zkI/zTp6enT5w48dnPfra7u/vpp58uZJMsy/785z9/y1vewt/i9XofeOABi8Wi1Wrf/OY3j4+Pk9sff/xxs9l89OjRnTt3qlSqubk54aFUIBC47777dDpdXV3dN7/5zZtvvvkTn/gEuUuY1kVR1Pe///277rpLq9V2dXUdPXqU38b73//+trY2jUbT09PzrW99K9OG3/KWtzz55JOFvGUAAAAAIRScnl793e+C09MSrrlFHV9ra+uXv/zlBx54QK/Xt7S0HD16dH19/c4779Tr9Xv27Hn11VfJw4gffPbZZ3fs2KHX62+77bbl5WVyF3GIDz/8cF1dnc1m++hHP8p3j5TJZEeOHJHKc4E4AYCrn4An8vnbfvqhnn/7uyNPfKj73z5/20+D3ogkK8tksoceeujb3/72wsJC0l21tbUnT56cnZ1Nup3juJ/97Gf3339/fX190l3CyPhjjz12++23m0ym+++//5FHHilkkxcvXvT5fP39/fwtDz744Kuvvnr06NFXXnkFY3zkyBHewobD4a997Wvf//73nU5ndXW1cJ1PfvKTx48fP3r06PPPP3/s2LGzZ89mesUvfvGL99xzz8WLF48cOXLfffd5PB7yxhsbG//zP/9zaGjo85///F//9V8/9dRTaZ8+ODh4+vTpWCxWyLsGAADYzsQ3Nk4++OCLt9xy+v3vf/GWW04++GBconTZLer4EELf/OY3r7/++nPnzt1+++3vec97Hnjggfvvv//s2bMdHR0PPPAAP5Y9HA4//PDDP/rRj1566aW5ublPfepT/Aovvvji5OTkiy+++IMf/ODxxx8Xpj0PDg4eO3askD3zgDgBgKufr7/7mfO/neJ/PP/bqX941zNSLX7XXXft27fvC1/4QtLtX/jCF8xm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"
+ }
+ },
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![image.png](attachment:image.png)"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### API"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ ".. autoclass:: pymoo.operators.survival.rank_and_crowding.RankAndCrowding\n",
+ " :noindex:\n",
+ "\n",
+ ".. autoclass:: pymoo.operators.survival.rank_and_crowding.ConstrRankAndCrowding\n",
+ " :noindex:"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Plots"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```python\n",
+ "fig, ax = plt.subplots(1, 2, figsize=[12, 5], dpi=100)\n",
+ "\n",
+ "ax[0].scatter(\n",
+ " res_nsga2.F[:, 0], res_nsga2.F[:, 1],\n",
+ " color=\"indigo\", label=\"NSGA-II (original)\", marker=\"o\",\n",
+ ")\n",
+ "ax[0].set_ylabel(\"$f_2$\")\n",
+ "ax[0].set_xlabel(\"$f_1$\")\n",
+ "ax[0].legend()\n",
+ "\n",
+ "ax[1].scatter(\n",
+ " res_nsga2_p.F[:, 0], res_nsga2_p.F[:, 1],\n",
+ " color=\"firebrick\", label=\"NSGA-II (pcd)\", marker=\"o\",\n",
+ ")\n",
+ "ax[1].set_ylabel(\"$f_2$\")\n",
+ "ax[1].set_xlabel(\"$f_1$\")\n",
+ "ax[1].legend()\n",
+ "\n",
+ "fig.tight_layout()\n",
+ "plt.show()\n",
+ "```\n",
+ "\n",
+ "```python\n",
+ "fig, ax = plt.subplots(1, 2, figsize=[12, 5], dpi=100, subplot_kw={'projection':'3d'})\n",
+ "\n",
+ "ax[0].scatter(\n",
+ " res_nsga2.F[:, 0], res_nsga2.F[:, 1], res_nsga2.F[:, 2],\n",
+ " color=\"indigo\", label=\"NSGA-II (original)\", marker=\"o\",\n",
+ ")\n",
+ "ax[0].set_ylabel(\"$f_2$\")\n",
+ "ax[0].set_xlabel(\"$f_1$\")\n",
+ "ax[0].set_zlabel(\"$f_3$\")\n",
+ "ax[0].legend()\n",
+ "\n",
+ "ax[1].scatter(\n",
+ " res_nsga2_mnn.F[:, 0], res_nsga2_mnn.F[:, 1], res_nsga2_mnn.F[:, 2],\n",
+ " color=\"firebrick\", label=\"NSGA-II (mnn)\", marker=\"o\",\n",
+ ")\n",
+ "ax[1].set_ylabel(\"$f_2$\")\n",
+ "ax[1].set_xlabel(\"$f_1$\")\n",
+ "ax[1].set_zlabel(\"$f_3$\")\n",
+ "ax[1].legend()\n",
+ "\n",
+ "ax[0].view_init(elev=30, azim=30)\n",
+ "ax[1].view_init(elev=30, azim=30)\n",
+ "\n",
+ "fig.tight_layout()\n",
+ "plt.show()\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "venv",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.7"
+ },
+ "orig_nbformat": 4,
+ "vscode": {
+ "interpreter": {
+ "hash": "8ec0d6c9b8d50a94217d7ab4804e268ea3c783f3ca99db20a683c9c8ae9602ac"
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/source/references.bib b/docs/source/references.bib
index 4f6259e1a..e0e640192 100644
--- a/docs/source/references.bib
+++ b/docs/source/references.bib
@@ -715,4 +715,47 @@ @ARTICLE{isres
volume={35},
number={2},
pages={233-243},
-doi={10.1109/TSMCC.2004.841906}}
\ No newline at end of file
+doi={10.1109/TSMCC.2004.841906}}
+
+
+@inproceedings{gde3,
+ title={GDE3: The third evolution step of generalized differential evolution},
+ author={Kukkonen, Saku and Lampinen, Jouni},
+ booktitle={2005 IEEE congress on evolutionary computation},
+ volume={1},
+ pages={443--450},
+ year={2005},
+ organization={IEEE}
+}
+
+
+@inproceedings{kukkonen2006improved,
+ title={Improved pruning of non-dominated solutions based on crowding distance for bi-objective optimization problems},
+ author={Kukkonen, Saku and Deb, Kalyanmoy},
+ booktitle={2006 IEEE International Conference on Evolutionary Computation},
+ pages={1179--1186},
+ year={2006},
+ organization={IEEE}
+}
+
+
+@incollection{kukkonen2006fast,
+ title={A fast and effective method for pruning of non-dominated solutions in many-objective problems},
+ author={Kukkonen, Saku and Deb, Kalyanmoy},
+ booktitle={Parallel problem solving from nature-PPSN IX},
+ pages={553--562},
+ year={2006},
+ publisher={Springer}
+}
+
+
+@article{wangmosade,
+ title={Multi-objective self-adaptive differential evolution with elitist archive and crowding entropy-based diversity measure},
+ author={Wang, Yao-Nan and Wu, Liang-Hong and Yuan, Xiao-Fang},
+ journal={Soft Computing},
+ volume={14},
+ number={3},
+ pages={193--209},
+ year={2010},
+ publisher={Springer}
+}
\ No newline at end of file
From c4fc3ebd36ea46af0733c96c884593d0a228a82d Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Sun, 8 Jan 2023 22:44:30 -0300
Subject: [PATCH 11/12] DOCS Rank and Crowding
---
docs/source/operators/survival.ipynb | 10 +++++-----
docs/source/references.bib | 11 +++--------
2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/docs/source/operators/survival.ipynb b/docs/source/operators/survival.ipynb
index f0a1e5f29..f26344b01 100644
--- a/docs/source/operators/survival.ipynb
+++ b/docs/source/operators/survival.ipynb
@@ -34,10 +34,10 @@
"Variants of the original algorithm have been proposed in the literature to address different performance aspects. Therefore the class ``RankAndCrowding`` from pymoo is a generalization of NSGA-II's survival in which several crowding metrics can be used. Some are already implemented and can be parsed as strings in the ``crowding_func`` argument, while others might be defined from scratch and parsed as callables. The ones available are:\n",
"\n",
"- **Crowding Distance** (*'cd'*): Proposed by Deb et al. in NSGA-II.\n",
- "- **Pruning Crowding Distance** (*'pruning-cd'* or *'pcd'*): Proposed by Kukkonen & Deb , it recursively recalculates crowding distances as removes individuals from a population to improve diversity.\n",
- "- ***M*-Nearest Neighbors** (*'mnn'*): Proposed by Kukkonen & Deb in an extension of GDE3 to many-objective problems.\n",
- "- **2-Nearest Neighbors** (*'2nn'*): Also proposed by Kukkonen & Deb , it is a variant of M-Nearest Neighbors in which the number of neighbors is two.\n",
- "- **Crowding Entropy** (*'ce'*): Proposed by Wang et al. it considers the relative position of a solution between its neighors.\n",
+ "- **Pruning Crowding Distance** (*'pruning-cd'* or *'pcd'*): Proposed by Kukkonen & Deb , it recursively recalculates crowding distances as removes individuals from a population to improve diversity.\n",
+ "- ***M*-Nearest Neighbors** (*'mnn'*): Proposed by Kukkonen & Deb in an extension of GDE3 to many-objective problems.\n",
+ "- **2-Nearest Neighbors** (*'2nn'*): Also proposed by Kukkonen & Deb , it is a variant of M-Nearest Neighbors in which the number of neighbors is two.\n",
+ "- **Crowding Entropy** (*'ce'*): Proposed by Wang et al. it considers the relative position of a solution between its neighors.\n",
"\n",
"We encourage users to try ``crowding_func='pcd'`` for two-objective problems and ``crowding_func='mnn'`` for problems with more than two objectives.\n",
"\n",
@@ -262,7 +262,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.7"
+ "version": "3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)]"
},
"orig_nbformat": 4,
"vscode": {
diff --git a/docs/source/references.bib b/docs/source/references.bib
index e0e640192..dcb616dfd 100644
--- a/docs/source/references.bib
+++ b/docs/source/references.bib
@@ -164,11 +164,6 @@ @ARTICLE{nsga3-part2
}
-
-
-
-
-
@ARTICLE{moead,
author = {Qingfu Zhang and Hui Li},
title = {A multi-objective evolutionary algorithm based on decomposition},
@@ -729,7 +724,7 @@ @inproceedings{gde3
}
-@inproceedings{kukkonen2006improved,
+@inproceedings{gde3pruning,
title={Improved pruning of non-dominated solutions based on crowding distance for bi-objective optimization problems},
author={Kukkonen, Saku and Deb, Kalyanmoy},
booktitle={2006 IEEE International Conference on Evolutionary Computation},
@@ -739,7 +734,7 @@ @inproceedings{kukkonen2006improved
}
-@incollection{kukkonen2006fast,
+@incollection{gde3many,
title={A fast and effective method for pruning of non-dominated solutions in many-objective problems},
author={Kukkonen, Saku and Deb, Kalyanmoy},
booktitle={Parallel problem solving from nature-PPSN IX},
@@ -749,7 +744,7 @@ @incollection{kukkonen2006fast
}
-@article{wangmosade,
+@article{mosade,
title={Multi-objective self-adaptive differential evolution with elitist archive and crowding entropy-based diversity measure},
author={Wang, Yao-Nan and Wu, Liang-Hong and Yuan, Xiao-Fang},
journal={Soft Computing},
From 3c729f43b63f0c1442ef48cd805bf362f1527e8f Mon Sep 17 00:00:00 2001
From: mooscalia project <93492480+mooscaliaproject@users.noreply.github.com>
Date: Tue, 10 Jan 2023 14:40:29 -0300
Subject: [PATCH 12/12] DOCS plots for rank and crowding
---
docs/source/operators/plots.py | 54 ++++++++++
docs/source/operators/survival.ipynb | 152 ++++++++++++++++-----------
2 files changed, 146 insertions(+), 60 deletions(-)
create mode 100644 docs/source/operators/plots.py
diff --git a/docs/source/operators/plots.py b/docs/source/operators/plots.py
new file mode 100644
index 000000000..a20e5598a
--- /dev/null
+++ b/docs/source/operators/plots.py
@@ -0,0 +1,54 @@
+import matplotlib.pyplot as plt
+
+
+def plot_pairs_3d(first, second, colors=("indigo", "firebrick"), **kwargs):
+
+ fig, ax = plt.subplots(1, 2, subplot_kw={'projection':'3d'}, **kwargs)
+
+ ax[0].scatter(
+ *first[1].T,
+ color=colors[0], label=first[0], marker="o",
+ )
+ ax[0].set_ylabel("$f_2$")
+ ax[0].set_xlabel("$f_1$")
+ ax[0].set_zlabel("$f_3$")
+ ax[0].legend()
+
+ ax[1].scatter(
+ *second[1].T,
+ color=colors[1], label=second[0], marker="o",
+ )
+ ax[1].set_ylabel("$f_2$")
+ ax[1].set_xlabel("$f_1$")
+ ax[1].set_zlabel("$f_3$")
+ ax[1].legend()
+
+ ax[0].view_init(elev=30, azim=30)
+ ax[1].view_init(elev=30, azim=30)
+
+ fig.tight_layout()
+ plt.show()
+
+
+def plot_pairs_2d(first, second, colors=("indigo", "firebrick"), **kwargs):
+
+ fig, ax = plt.subplots(1, 2, **kwargs)
+
+ ax[0].scatter(
+ *first[1].T,
+ color=colors[0], label=first[0], marker="o",
+ )
+ ax[0].set_ylabel("$f_2$")
+ ax[0].set_xlabel("$f_1$")
+ ax[0].legend()
+
+ ax[1].scatter(
+ *second[1].T,
+ color=colors[1], label=second[0], marker="o",
+ )
+ ax[1].set_ylabel("$f_2$")
+ ax[1].set_xlabel("$f_1$")
+ ax[1].legend()
+
+ fig.tight_layout()
+ plt.show()
\ No newline at end of file
diff --git a/docs/source/operators/survival.ipynb b/docs/source/operators/survival.ipynb
index f26344b01..e966d4b3c 100644
--- a/docs/source/operators/survival.ipynb
+++ b/docs/source/operators/survival.ipynb
@@ -51,12 +51,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "In the following examples the code for plotting was ommited although it is available in the [end of the page](#plots)."
+ "In the following examples the code for plotting was ommited although it is available at the [end of the page](#plots)."
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -67,12 +67,12 @@
"from pymoo.optimize import minimize\n",
"\n",
"# External imports\n",
- "import matplotlib.pyplot as plt"
+ "from plots import plot_pairs_2d, plot_pairs_3d"
]
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -101,20 +101,33 @@
]
},
{
- "attachments": {
- "image.png": {
- "image/png": "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WLJkiaqqW7ZsEULYbDYt9P7770uSpP0VH3vssaFDh/b09Gihv//972PHjtV+v+KKK6ZNm+Z8rszMzBtuuGHgJzoat+e/Q4cU139BulZ9s0cuPnRIOdEDAjgebsxY3vt2RpshqqqqDAbDjh071N4z1g033DBu3Ljt27f3eZSiKHFxcdqn1gCKiory8vJUVX3kkUf+7//+b+Acjvzd1aeffiqEaG5udo78+te/TklJWb169YYNGywWy5lnnvnDDz+oqvrMM88MHjw4KytrzZo1n3/++ffff+96zOuuu+6000774IMPNm/e/Jvf/CY6OvpoJV9SUtJLL7305Zdf3nTTTVFRUe3t7aqq/vDDD8XFxTab7euvv37hhReGDBnyyiuv9Jv5+++/Hx4e3t3d3eeF+FXJ5xQo853q7nvlOHTI9R98rlXf8smTHYcOndDRAOjFjQnUe1/3BO4Eetppp0VHR997771bt259+OGHZVlevny5ltvEiRNTU1OXL1/+1Vdfvf322++9956qqmvXrg0LC7vvvvu2bt1aVlYWFxfnWvJ9//33YWFhH330UZ/ndW++0/lavm3btjU3N+fk5Gg3Y2NjMzMza2trhRC1tbVxcXHp6elaKCcnJywsbN26dVpoypQp4eHhWshisWzdulVb/K2trXUeTQtpRxvgiVz19PR0unDvRTVUN7V929VPQBVtOzobqpvcOywAz1IUR0WhVai9R1UhhKiYu9wjZ3j+5je/Offcc++8884+43feeWdcXNyoUaPGjh17zTXXvPrqqw6HQwjx3Xff7d27d+zYsc57nn/++VFRUVFRUTNnztRGHA7Hs88++7vf/U4IMWPGjI8//njbtm1uZ/jNN9/IspyQkKDd/PLLL5cuXfrkk09mZ2dPmDDhxRdf3Llzp/PUxIMHDz722GNZWVljx451PVezq6vrueeee+CBBy6++OK0tLRnnnlGOfrpPddcc83MmTPPPPPM0tLSffv2ffLJJ0KIwYMH33333enp6aNHj541a9a111776quv9vvw4cOH//DDD83NzW6/ZL3423wnPDHltdts3f3+LVS1225vt9ncOCYA/6cqSn1JiVB7z6CqKoSonz/fI2d4BtwEqpk8efJtt902ZsyYP//5z3l5eQ899JAQ4oMPPvjkk0+qqqp+/vOfn3766ZdeeukvfvELIURZWdkll1xy6623jhkz5qabbrJYLK6HGjJkSGxs7DfffON2hq50Lvm0aTsxMdE5kpiYqA02Nze7vomDBg069dRTnaE+D3Ee6siQc/xoT+Tq3nvvjf3RyJEj3XtRe+z73I4C8BnffDtz3333Pffcc42NvS7lNZvNtbW1mzdvLiwsPHTo0OzZsy+55BJt0urjjTfe0FbbDhw4oI2sWLHi+++//+UvfymEMBqNP//5z59++mkhRHV1ddSPXnzxxeNM78CBAxEREc7L4hsbGwcNGpSZmandjI+PHzt2rDP58PDwc84558iDfP311wcPHrzgggu0m7Gxsa6Tbh/OI5xyyikxMTGtra3azfLy8vPPP3/YsGFRUVEVFRVNTf2//5GRkUKI/fv3H+cL9B/+Nt8JT0x5PT/++dyIAghcvvm6J7AmUM2kSZNcf9eS37BhQ1JS0pgxY/ocobGx0Tnh9nmsJjIy0lPzHTt29nL77bd3/GjHjh3uHWSoeaCLOAeOAvAZ33w7M2XKFIvFcvvttx8ZSktL+9Of/vTCCy+sWLFixYoVq1atGjZsWFxc3NatW533SU5OPvPMM6Ojo50jTz311O7duyMjIwcNGjRo0KD33nvvueeeczgc6enpG37061//+jjTMxqN+/fv/+GHH47nzpGRkSffqHfw4MHO3yVJ0ubpl19++W9/+9ucOXOWL1++YcOGa6+99mgp7d69WwgxbNiwk0wDwhNTXkTvr7dPKAogcPnm656gmUC1LyvdsHv3bk/NdzqXfCaTSQjR0tLiHGlpadEGTSZTq8t/MYcOHdq9e7cz1OchzkMdGXKOH+2JXEVERMS4cO9FjctKCpP7/1dRmCyNy0py77AAPMtn384sXLjw7bff7vfMOs3ZZ58thNDO2r/iiiteeOGFXbt29XvP9vb2t9566+WXX3ZOTp999tmePXuWL1+ubYiicZ3hBnbuuecKIbRryYQQKSkphw4d0k4p1J5u69atWnoDOP300wcPHmz78Wvdjo6OL7744jgT0KxZsyYrK+tPf/rTeeedd+aZZ3711VdHu2d9fX1SUpLRaDyh4/sDf5vvhCemvPiMDIPJJI78IkCSDGZzfEaGG8cE4P989nVPAE2gmrVr17r+npKSIoQ455xzvv322yNnxpSUFOeE2+exQoivvvqqu7v7vPPOO858BqZzyTd69GiTyfThhx9qNzs7O9etW6cta06aNGnv3r3r16/XQv/5z38cDoe2+jlp0qTVq1cfPHhQC61YsWLs2LFDhw7VQs6jaSHtaAM8kcd9XvOtQ1H7DTkU9fOab73xpABOVGp2sjEpWhz5/YwkjCNjUrOTPfVE48ePnzVrlutWy3/84x/nz5+/Zs2ab775Zu3atb///e+HDRumfSKVlpaOGDHiggsuePrppzdt2vTVV1+98cYbtbW1siwLIZ5//vn4+Pgrrrgi7UcTJkz45S9/+dRTT7mX27Bhw37yk598/PHH2s2zzjpr+vTp119//ccff7xx48bf/e53I0aMmD59+sAHiY6Onj179i233PLRRx81NDTMmTMnLCzshNYDzzrrrLq6OqvV+sUXXxQVFdmOflJQdXX11KlTj//I/iMo5ztJltOKi4UQvao+SRJCpBUVSbLsjScFoDuffd0TQBOoZs2aNYsWLfriiy/Ky8tfe+21wsJCIcRPf/rTKVOmXH755StWrNi2bdv777+/bNkyIcRNN920bNmyBx544Msvv3z00Ue1Qafq6urTTz/9jDPOcC+9PnxX8u3bt08rqYUQ27Zt27BhQ1NTkyRJc+fOXbBgwdKlSzdv3vz73/9++PDhWrvDlJSUSy655Prrr//kk0/WrFlz4403zpgxY/jw4UKIq666Kjw8fM6cOQ0NDa+88kpZWdlf/vIX7VkKCwuXLVv24IMPfv7553fddVddXd2NN94ohBjgiTyOa/mAgCDLYfllFiFEr6pPEkKI/MVTZdmTH48lJSWuVxrk5OSsXbv2t7/97ZgxYy6//HKDwfDhhx/Gx8cLIeLj4z/55JPf//73999//wUXXDB+/Pi77rrryiuvfOKJJ4QQTz/99G9+85s+1dTll1++dOnStrY293K77rrrXC9deOaZZ84///xLL7100qRJqqq+9957rqdiHs0///nPSZMmXXrppTk5OZMnT05JSTEYDMefww033JCbm3vllVdmZma2t7f/6U9/6vdu3d3db7755vXXX3/8R9ZF6Mx3QgizxZJeXm5wuXTQYDKll5ebe+9DACCY+PLrngCaQIUQf/3rX+vq6s4777wFCxb885//dO7I8vrrr2dkZMycOfPss8++9dZbtU3OJk6c+MQTT5SVlU2YMGH58uX/+Mc/XA+1ZMkST853R93E1NM++uijPk89e/ZsVVUd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ulNOOcVisXR3d2uhWbNmNTQ0rFix4p133lm9enV+fr423tnZOXXq1NNOO239+vX333//XXfdVVFRoYVqampmzpw5Z86czz777LLLLrvsssvq6/u/rM576NMAACErpOY7IYTdaq0rKHDtyd7d0lJXUEDVBwA+Jjm/YtTLpZdempiY+NRTT2k3L7/88sjIyBdeeEFFZMD6AAAgAElEQVRV1eHDh//1r3/929/+JoTo6OhITEx89tlnZ8yY0djYePbZZ9tstvT0dCHEsmXLfvnLX3777bfDhw//17/+dccddzQ3N4eHhwshbrvttjfffPPzzz8XQlx55ZXff//9O++8oz3RxIkTzz333Mcff/xoiXV2dsbGxnZ0dMTExHjw9dZUNZbmVQohhPONl4QQYl5lXlZuigefCABCnJc+xt3mt/Od8MJ7pSrKB1OmuNZ7/yNJBpMpZ9UqrusDAE855me4/qt8WVlZH3744RdffCGE2Lhx48cff/yLX/xCCLFt27bm5uacnBztbrGxsZmZmbW1tUKI2trauLg4bf4TQuTk5ISFha1bt04LTZkyRZv/hBAWi2Xr1q179uzRQs6jaSHtaK56eno6XXjl9eamzKvMM46Ido4Yk2Ko9wAg6PnVfCe8POW122z91HtCCFXtttvbbTbPPh0AYAD679h52223dXZ2jhs3TpZlRVHuueeeWbNmCSGam5uFEIku+zsnJiZqg83NzQkJCc7xQYMGnXrqqc7Q6NGjXR+iDQ4dOrS5ubnfo7m699577777bm+8TFdZuSmZ08c2VDftse8bao5KzU6mDzsABD2/mu+El6e8ntZWt6MAAM/Sv9J49dVXX3zxxZdeeunTTz997rnnHnjggeeee06vZG6//faOH+3YscN7TyTLYanZyUPNUXvs+xqqm+jIBwBBz6/mO+HlKS/CpVI90SgAwLP0X+W75ZZbbrvtthkzZgghxo8f/80339x7772zZ882mUxCiJaWFrPZrN2zpaXl3HPPFUKYTKZWly8IDx06tHv3bu3+JpOppaXFGdJ+P1pIG3cVERERERHhnRfaS01VY0Wh1dmjz5gUnV9m4dxOAAhifjXfCS9PefEZGQaTqbulRfTZMkCSDCZTfEaGl54XAHAk/Vf59u/fHxZ2OA1Zlh0OhxBi9OjRJpPpww8/1MY7OzvXrVs3adIkIcSkSZP2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"
- }
- },
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 3,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABKYAAAHqCAYAAAA+vEZWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAACLb0lEQVR4nOzde1hc5bn38d8wSZiYAImMMJMQjK02IkStgkloyatX2RmrbbWRemhq1aZl74qaaOuhqUGbaGy1rYkV60atWo2HSqlN1TpJrElQQiTRNIJ4aLcRjRyERCAqSVys9w9gysAMDGSYE9/PdXHpWuueNfcM6DzcPM/9WEzTNAUAAAAAAACEWFy4EwAAAAAAAMDYRGEKAAAAAAAAYUFhCgAAAAAAAGFBYQoAAAAAAABhQWEKAAAAAAAAYUFhCgAAAAAAAGFBYQoAAAAAAABhQWEKAAAAAAAAYTEu3AmMVV1dXfrwww+VkJAgi8US7nQAAIAfpmmqo6ND06ZNU1wcf9MLN8ZQAABEvuGMnyhMhcmHH36oGTNmhDsNAAAQoPfff19paWnhTmPMYwwFAED0CGT8RGEqTBISEiR1f5MSExPDnA0AAPCnvb1dM2bM8Hx2I7wYQwEAEPmGM36iMBUmvVPPExMTGVQBABAFWDYWGRhDAQAQPQIZP9EoAQAAAAAAAGFBYQoAAAAAAABhQWEKAAAAAAAAYUGPKQBAyBiGoUOHDoU7DcDL+PHjZbVaw50GAAADMHZCpArm+InCFABg1JmmqcbGRn388cfhTgXwacqUKXI4HDQ4BwBEBMZOiAbBGj9RmAIAjLregVVKSoqOOOIIfvlHxDBNU59++qmam5slSU6nM8wZAQDA2AmRLdjjJwpTAIBRZRiGZ2CVnJwc7nSAASZOnChJam5uVkpKCsv6AABhxdgJ0SCY4yeanwMARlVvX4QjjjgizJkA/vX+fNLHAwAQboydEC2CNX6iMAUACAmmoCOS8fMJAIg0fDYh0gXrZ5TCFAAAAAAAAMKCwhQAAGPcxRdfrFWrVh32fS699FKde+65w3rMzJkztXr16sN+7sHyuPDCC/Wb3/wmqM8BAADGrmCNnYLl9NNP19KlS4N6zzfeeENpaWn65JNPgnpfXyhMxRjD6NKuTbu1+fEa7dq0W4bRFe6UACBqXXrppbJYLPrlL3/pdf7pp58eMHX5vvvu00knnaTJkydrypQp+vKXv6zbbrvNK6a9vV3Lly9XZmamJk6cqOTkZOXk5Oj222/Xvn37Bjz/448/LqvVqqKiooDz7VuQCaRQ9M9//lPPPfecrrrqqoCeYzBr1qzRQw89NKzHVFdXq7Cw8LCfezA33nijbr31VrW1tY3q8yB6mYahlqoq7Vm3Ti1VVTINI9wpAUBUYuwUHuXl5Vq5cmVQ73nCCSdo7ty5+u1vfxvU+/oSUYWpLVu26Jvf/KamTZsmi8Wip59+2uu6aZoqLi6W0+nUxIkTlZ+fr3feeccrZu/evVq0aJESExM1ZcoULV68WPv37/eK2bVrl/Ly8mSz2TRjxgzdfvvtA3J56qmndPzxx8tms2n27Nl67rnnhp1LqFWW12nxzLu07IxHdMd3/6JlZzyixTPvUmV5XVjzAoBgCUfx3Waz6Ve/+pXPwU+vP/zhD1q6dKmuuuoq7dy5Uy+//LKuu+46r8+fvXv3au7cuXrwwQf105/+VNu2bdOrr76qW2+9Va+99poee+yxAfd94IEHdN111+nxxx9XZ2fnqLy+3/3ud/rOd76jyZMnj/gehmGoq6tLSUlJmjJlyrAee9RRR416c9esrCx98Ytf1KOPPjqqzxMujJ8OT4PbrY3z52vrokV69eqrtXXRIm2cP18NbndY8wKAYAhH4Z2xU2CCueHKkUceqYSEhKDdr9dll12m3//+9/r888+Dfu++Iqow9cknn+ikk05SSUmJz+u333677rrrLt17773atm2bJk2aJJfL5fUDt2jRItXW1mrDhg165plntGXLFq+/xLa3t2vBggU6+uijtWPHDt1xxx26+eabVVpa6omprKzURRddpMWLF+u1117Tueeeq3PPPVc1NTXDyiWUKsvrtKqgTC0fdHidb9nToVUFZRSnAES9cBXf8/Pz5XA4BvwFr69169bp/PPP1+LFi3XssccqMzNTF110kW699VZPzLJly1RfX69XXnlFl112mU488UQdffTRWrBggR5//HFdfvnlXvd89913VVlZqRtuuEFf+tKXVF5eHvTXZhiGysrK9M1vftPr/L59+/T9739fU6dO1RFHHKGvf/3rXsWDhx56SFOmTNG6det0wgknKD4+XvX19QP+ytjR0aFFixZp0qRJcjqduvPOOwdMNe+/lM9isej+++/Xt7/9bR1xxBE6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9B8UphA2LS0tMgxDqampXudTU1PV2Njo8zGNjY3Dioe3ULznnZ2duv7663XRRRcpMTExOIlHudF835955hlNnjxZNptNd955pzZs2CC73R7cFxCFRus9/9WvfqVx48bpqquuCn7SUW603vMzzzxTf/zjH/XCCy/oV7/6lTZv3qyvf/3rMgwj+C8CiAKMn0KP8VPoMXYKPcZOocfY6T/GhTsBALHj0KFDOv/882Wapn7/+9+HO50x4YwzztDOnTvV0tKi++67T+eff762bdumlJSUcKcWc3bs2KE1a9bo1VdflcViCXc6Y8aFF17o+ffZs2frxBNP1Be/+EVt2rRJX/va18KYGQAEB+On0GLsFDqMncIjGsdOzJhC2NjtdlmtVjU1NXmdb2pqksPh8PkYh8MxrHh4G833vHdQ9d5772nDhg38ta+P0XzfJ02apGOPPVZz587VAw88oHHjxumBBx4I7guIQqPxnldUVKi5uVnp6ekaN26cxo0bp/fee08/+clPNHPmzFF5HdEkVP9P/8IXviC73a5//etfh580EIUYP4Ue46fQY+wUeoydQo+x039QmELYTJgwQaeeeqpeeOEFz7muri698MILmjdvns/HzJs3zytekjZs2OA3Ht5G6z3vHVS988472rhxo5KTk0fnBUSpUP6sd3V16cCBA4efdJQbjff84osv1q5du7Rz507P17Rp03TttdfK7XaP3ouJEqH6Of/ggw/U2toq5/9v7+5Zo1jDMAA/yrqBuOIHCImIaaKNiB9IIBDQQiwsAoKli1goWNmk0Cp/wC4/QLEKWgVMJ1hJQghko6KVmE4RrDR+FT4WssHogcM5u2fe3eN1wRTLTPG8bzHc3DvMDA93Z3DoM/JT9eSn6slO1ZOdqic7/aT029f5s83OzubAwEDeuXMnnz9/nlevXs1du3blmzdvMjOz2WzmjRs3Nq5//Phx1mq1vHXrVr548SKnp6d/+zzmu3fvcmVlJefn5zMicnZ2NldWVvL169eVr68XdXvPv379mpOTk7l///5stVqbPkv65cuXImvsRd3e9w8fPuTNmzdzYWEh19bWcnl5OS9fvpwDAwP57NmzImvsNf/F/eVXviyzWbf3/P379zk1NZULCwv56tWrfPjwYZ44cSIPHjyYnz9/LrJG6AXyU/Xkp+rJTtWTnaonO/2gmKK4mZmZPHDgQNbr9RwbG8vFxcWNc6dOncpLly5tuv7evXt56NChrNfrefjw4Zyfn990/vbt2xkRvx3T09MVrKY/dHPP25+V/qvj0aNHFa2oP3Rz3z99+pTnz5/Pffv2Zb1ez+Hh4ZycnMylpaWqltMXun1/+ZVw9btu7vnHjx/z7NmzuXfv3ty2bVuOjIzklStXNsIa/Mnkp+rJT9WTnaonO1VPdsrckplZ3fNZAAAAAPCDd0wBAAAAUIRiCgAAAIAiFFMAAAAAFKGYAgAAAKAIxRQAAAAARSimAAAAAChCMQUAAABAEYopAAAAAIpQTAEAAABQhGIKoAtmZmZiZGQkarVaTE1NlR4HAKAvyFDAlszM0kMA9LPV1dU4efJkzM3NxfHjx2Pnzp0xODhYeiwAgJ4mQwEREbXSAwD0uwcPHsTY2FicO3eu9CgAAH1DhgIiPDEF0JHR0dF4+fLlxu9msxl3794tOBEAQO+ToYA2xRRAB96+fRvj4+Nx7dq1uHjxYjQajWg0GqXHAgDoaTIU0Obl5wAdaDQasba2FhMTEzE0NBTNZjN2794dFy5cKD0aAEDPkqGANsUUQAeePHkSERFHjhyJiIjr1697DB0A4G/IUECbYgqgA61WK0ZHR2P79u0REXH69OnYsWNH4akAAHqbDAW0KaYAOtBqteLo0aOlxwAA6CsyFNCmmALoQKvVimPHjpUeAwCgr8hQQJtiCuBf+vbtWzx9+tS/fQAA/4AMBfysVnoAgH61devWWF9fLz0GAEBfkaGAn23JzCw9BMD/xZkzZ2J1dTXW19djz549cf/+/RgfHy89FgBAT5Oh4M+lmAIAAACgCO+YAgAAAKAIxRQAAAAARSimAAAAAChCMQUAAABAEYopAAAAAIpQTAEAAABQhGIKAAAAgCIUUwAAAAAUoZgCAAAAoAjFFAAAAABFKKYAAAAAKEIxBQAAAEAR3wGN20o7aMX08wAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "