pymoo 0.6.1.1__cp39-cp39-win_amd64.whl → 0.6.1.2__cp39-cp39-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pymoo might be problematic. Click here for more details.

Files changed (36) hide show
  1. pymoo/algorithms/moo/age.py +3 -2
  2. pymoo/algorithms/moo/nsga3.py +1 -2
  3. pymoo/algorithms/moo/sms.py +3 -0
  4. pymoo/algorithms/soo/nonconvex/cmaes.py +1 -1
  5. pymoo/algorithms/soo/nonconvex/es.py +1 -1
  6. pymoo/algorithms/soo/nonconvex/optuna.py +1 -4
  7. pymoo/algorithms/soo/nonconvex/pattern.py +1 -1
  8. pymoo/constraints/adaptive.py +2 -2
  9. pymoo/constraints/eps.py +1 -1
  10. pymoo/core/algorithm.py +1 -0
  11. pymoo/core/individual.py +512 -49
  12. pymoo/core/plot.py +1 -1
  13. pymoo/core/result.py +3 -0
  14. pymoo/core/variable.py +310 -16
  15. pymoo/cython/calc_perpendicular_distance.cp39-win_amd64.pyd +0 -0
  16. pymoo/cython/decomposition.cp39-win_amd64.pyd +0 -0
  17. pymoo/cython/hv.cp39-win_amd64.pyd +0 -0
  18. pymoo/cython/info.cp39-win_amd64.pyd +0 -0
  19. pymoo/cython/mnn.cp39-win_amd64.pyd +0 -0
  20. pymoo/cython/non_dominated_sorting.cp39-win_amd64.pyd +0 -0
  21. pymoo/cython/pruning_cd.cp39-win_amd64.pyd +0 -0
  22. pymoo/cython/stochastic_ranking.cp39-win_amd64.pyd +0 -0
  23. pymoo/gradient/__init__.py +3 -1
  24. pymoo/gradient/grad_autograd.py +28 -4
  25. pymoo/util/function_loader.py +31 -21
  26. pymoo/util/nds/dominance_degree_non_dominated_sort.py +159 -0
  27. pymoo/util/ref_dirs/__init__.py +2 -0
  28. pymoo/util/ref_dirs/energy.py +4 -5
  29. pymoo/util/ref_dirs/energy_layer.py +5 -4
  30. pymoo/util/ref_dirs/incremental.py +68 -0
  31. pymoo/version.py +1 -1
  32. {pymoo-0.6.1.1.dist-info → pymoo-0.6.1.2.dist-info}/METADATA +2 -3
  33. {pymoo-0.6.1.1.dist-info → pymoo-0.6.1.2.dist-info}/RECORD +36 -34
  34. {pymoo-0.6.1.1.dist-info → pymoo-0.6.1.2.dist-info}/WHEEL +1 -1
  35. {pymoo-0.6.1.1.dist-info → pymoo-0.6.1.2.dist-info}/LICENSE +0 -0
  36. {pymoo-0.6.1.1.dist-info → pymoo-0.6.1.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,159 @@
1
+ """Module which implements Dominance Degree Approaches for Non-dominated Sorting.
2
+
3
+ For the original work see:
4
+ DDA-NS https://ieeexplore.ieee.org/document/7469397
5
+ DDA-ENS https://ieeexplore.ieee.org/document/9282978
6
+
7
+ Adapted from https://github.com/rsenwar/Non-Dominated-Sorting-Algorithms/tree/master
8
+ """
9
+
10
+
11
+ from typing import Literal, List
12
+ import numpy as np
13
+
14
+
15
+ def construct_comp_matrix(vec: np.ndarray, sorted_idx: np.ndarray) -> np.ndarray:
16
+ """
17
+ const_comp_mat construct the comparison matrix from a row-vector vec.
18
+
19
+ Parameters
20
+ ----------
21
+ vec : np.ndarray
22
+ The vector of scores for the population on a single objective
23
+ sorted_idx : np.ndarray
24
+ The indices which would sort `vec`
25
+
26
+ Returns
27
+ -------
28
+ np.ndarray
29
+ The comparison matrix indicating whether each member in the population dominates the other member for the
30
+ objective in `vec`
31
+ """
32
+ n = vec.shape[0]
33
+ c = np.zeros(shape=(n, n), dtype=np.int32)
34
+
35
+ # the elements of the b(0)-th row in C are all set to 1
36
+ c[sorted_idx[0], :] = 1
37
+
38
+ for i in range(1, n):
39
+ if vec[sorted_idx[i]] == vec[sorted_idx[i - 1]]:
40
+ # the rows in C corresponding to the same elements in w are identical
41
+ c[sorted_idx[i]] = c[sorted_idx[i - 1]]
42
+ else:
43
+ c[sorted_idx[i], sorted_idx[i:]] = 1
44
+
45
+ return c
46
+
47
+
48
+ def construct_domination_matrix(f_scores: np.ndarray, **kwargs) -> np.ndarray:
49
+ """
50
+ construct_domination_matrix calculates the dominance degree matrix for a set of vectors.
51
+
52
+ The dominance degree indicate the degree of dominance of a solution, which is the number of
53
+ objectives for which it is the dominating solution.
54
+
55
+ Parameters
56
+ ----------
57
+ f_scores : np.ndarray
58
+ an N x M matrix of N (population size) objective function values for M objectives
59
+ """
60
+ d = np.zeros((f_scores.shape[0], f_scores.shape[0]), dtype=np.int32)
61
+ b = np.apply_over_axes(np.argsort, f_scores, axes=0)
62
+ for vec, srt in zip(f_scores.T, b.T):
63
+ d += construct_comp_matrix(vec, srt)
64
+ d = np.where(
65
+ np.logical_and(d == f_scores.shape[-1], d.T == f_scores.shape[-1]), 0, d
66
+ )
67
+ return d
68
+
69
+
70
+ def dda_ns(f_scores: np.ndarray, **kwargs) -> List[List[int]]:
71
+ """
72
+ dda_ns runs the DDA-NS algorithm.
73
+
74
+ Parameters
75
+ ----------
76
+ f_scores : np.ndarray
77
+ an N x M matrix of N (population size) objective function values for M objectives
78
+
79
+ Returns
80
+ -------
81
+ List[List[int]]
82
+ A list of members of each Pareto front. The index in the outer most list corresponds to the level in the Pareto front
83
+ while the value in the inner-most list is the id of the member of the population belonging to that front.
84
+ """
85
+ d_mx = construct_domination_matrix(f_scores)
86
+ max_d = np.empty((f_scores.shape[0],), dtype=np.int32)
87
+
88
+ fronts = []
89
+ count = 0
90
+ while count < f_scores.shape[0]:
91
+ # Max(D) is the row vector containing the maximum elements from each column of D
92
+ np.max(d_mx, out=max_d, axis=0)
93
+ front = [i for i, m_d in enumerate(max_d) if 0 <= m_d < f_scores.shape[-1]]
94
+ count += len(front)
95
+ d_mx[front] = -1
96
+ d_mx[:, front] = -1
97
+ fronts.append(front)
98
+
99
+ return fronts
100
+
101
+
102
+ def dda_ens(f_scores: np.ndarray, **kwargs) -> List[List[int]]:
103
+ """
104
+ dda_ens runs the DDA-ENS (efficient DDA) algorithm
105
+
106
+ Parameters
107
+ ----------
108
+ f_scores : np.ndarray
109
+ The N x M matrix of N (population size) objective function values for M objectives
110
+
111
+ Returns
112
+ -------
113
+ List[List[int]]
114
+ an N x M matrix of N (population size) objective function values for M objectives
115
+ """
116
+ d_mx = construct_domination_matrix(f_scores)
117
+
118
+ fronts: List[List[int]] = []
119
+ for s in np.lexsort(f_scores.T):
120
+ isinserted = False
121
+ for fk in fronts:
122
+ if not (d_mx[fk, s] == f_scores.shape[1]).any():
123
+ fk.append(s)
124
+ isinserted = True
125
+ break
126
+ if not isinserted:
127
+ fronts.append([s])
128
+ return fronts
129
+
130
+
131
+ def dominance_degree_non_dominated_sort(
132
+ f_scores: np.ndarray, strategy: Literal["efficient", "fast"] = "efficient"
133
+ ) -> List[List[int]]:
134
+ """
135
+ dominance_degree_non_dominated_sort performs the non-dominating sort with the specified algorithm
136
+
137
+ Parameters
138
+ ----------
139
+ f_scores : np.ndarray
140
+ The N x M matrix of N (population size) objective function values for M objectives
141
+ strategy : Literal["efficient", "fast"], optional
142
+ The dominance degree algorithm to use, by default "efficient"
143
+
144
+ Returns
145
+ -------
146
+ List[List[int]]
147
+ A list of members of each Pareto front. The index in the outer most list corresponds to the level in the Pareto front
148
+ while the value in the inner-most list is the id of the member of the population belonging to that front.
149
+
150
+ Raises
151
+ ------
152
+ ValueError
153
+ If an invalid strategy is specified
154
+ """
155
+ if strategy == "efficient":
156
+ return dda_ens(f_scores)
157
+ if strategy == "fast":
158
+ return dda_ns(f_scores)
159
+ raise ValueError("Invalid search strategy")
@@ -1,6 +1,7 @@
1
1
  from pymoo.util.ref_dirs.energy import RieszEnergyReferenceDirectionFactory
2
2
  from pymoo.util.ref_dirs.energy_layer import LayerwiseRieszEnergyReferenceDirectionFactory
3
3
  from pymoo.util.ref_dirs.reduction import ReductionBasedReferenceDirectionFactory
4
+ from pymoo.util.ref_dirs.incremental import IncrementalReferenceDirectionFactory
4
5
  from pymoo.util.reference_direction import MultiLayerReferenceDirectionFactory
5
6
 
6
7
 
@@ -14,6 +15,7 @@ def get_reference_directions(name, *args, **kwargs):
14
15
  "multi-layer": MultiLayerReferenceDirectionFactory,
15
16
  "layer-energy": LayerwiseRieszEnergyReferenceDirectionFactory,
16
17
  "reduction": ReductionBasedReferenceDirectionFactory,
18
+ "incremental": IncrementalReferenceDirectionFactory,
17
19
  }
18
20
 
19
21
  if name not in REF:
@@ -1,7 +1,6 @@
1
1
  import numpy as np
2
- import pymoo.gradient.toolbox as anp
3
-
4
2
 
3
+ from pymoo.gradient.grad_autograd import triu_indices, sqrt, log
5
4
  from pymoo.util.ref_dirs.construction import ConstructionBasedReferenceDirectionFactory
6
5
  from pymoo.util.ref_dirs.misc import project_onto_sum_equals_zero_plane, project_onto_unit_simplex_recursive
7
6
  from pymoo.util.ref_dirs.optimizer import Adam
@@ -280,9 +279,9 @@ def squared_dist(A, B):
280
279
 
281
280
 
282
281
  def calc_potential_energy(A, d):
283
- i, j = anp.triu_indices(len(A), 1)
284
- D = anp.sqrt(squared_dist(A, A)[i, j])
285
- energy = anp.log((1 / D ** d).mean())
282
+ i, j = triu_indices(len(A), 1)
283
+ D = sqrt(squared_dist(A, A)[i, j])
284
+ energy = log((1 / D ** d).mean())
286
285
  return energy
287
286
 
288
287
 
@@ -1,7 +1,8 @@
1
- import autograd.numpy as anp
1
+
2
+
2
3
  import numpy as np
3
- from autograd import value_and_grad
4
4
 
5
+ from pymoo.gradient.grad_autograd import value_and_grad, triu_indices, row_stack
5
6
  from pymoo.util.normalization import normalize
6
7
  from pymoo.util.ref_dirs.energy import squared_dist
7
8
  from pymoo.util.ref_dirs.optimizer import Adam
@@ -102,14 +103,14 @@ def get_points(X, scalings):
102
103
  vals = []
103
104
  for i in range(len(X)):
104
105
  vals.append(scale_reference_directions(X[i], scalings[i]))
105
- X = anp.row_stack(vals)
106
+ X = row_stack(vals)
106
107
  return X
107
108
 
108
109
 
109
110
  def calc_potential_energy(scalings, X):
110
111
  X = get_points(X, scalings)
111
112
 
112
- i, j = anp.triu_indices(len(X), 1)
113
+ i, j = triu_indices(len(X), 1)
113
114
  D = squared_dist(X, X)[i, j]
114
115
 
115
116
  if np.any(D < 1e-12):
@@ -0,0 +1,68 @@
1
+ import numpy as np
2
+
3
+ from pymoo.util.reference_direction import ReferenceDirectionFactory
4
+
5
+ def check_n_points(n_points, n_dim):
6
+ """
7
+ Returns n_partitions or a numeric value associated with the exception message.
8
+ """
9
+
10
+ if n_dim == 1:
11
+ return [0]
12
+
13
+ I = n_dim * np.eye(n_dim)
14
+ W = np.zeros((1, n_dim))
15
+ edgeW = W
16
+ i = 0
17
+
18
+ while len(W) < n_points:
19
+ edgeW = np.tile(edgeW, (n_dim, 1)) + np.repeat(I, edgeW.shape[0], axis=0)
20
+ edgeW = np.unique(edgeW, axis=0)
21
+ edgeW = edgeW [np.any(edgeW == 0, axis=1)]
22
+ W = np.vstack((W + 1, edgeW))
23
+ i += 1
24
+
25
+ if len(W) == n_points:
26
+ return [i]
27
+
28
+ return [len(W) - len(edgeW), i - 1, len(W), i]
29
+
30
+
31
+ def incremental_lattice(n_partitions, n_dim):
32
+ I = n_dim * np.eye(n_dim)
33
+ W = np.zeros((1, n_dim))
34
+ edgeW = W
35
+
36
+ for _ in range(n_partitions):
37
+ edgeW = np.tile(edgeW, (n_dim, 1)) + np.repeat(I, edgeW.shape[0], axis=0)
38
+ edgeW = np.unique(edgeW, axis=0)
39
+ edgeW = edgeW [np.any(edgeW == 0, axis=1)]
40
+ W = np.vstack((W + 1, edgeW))
41
+
42
+ return W / (n_dim * n_partitions)
43
+
44
+ class IncrementalReferenceDirectionFactory(ReferenceDirectionFactory):
45
+
46
+ def __init__(self, n_dim, scaling=None, n_points=None, n_partitions=None, **kwargs) -> None:
47
+ super().__init__(n_dim, scaling=scaling, **kwargs)
48
+
49
+ if n_points is not None:
50
+ results = check_n_points(n_points, n_dim)
51
+
52
+ # the number of points are not matching to any partition number
53
+ if len(results) > 1:
54
+ raise Exception("The number of points (n_points = %s) can not be created uniformly.\n"
55
+ "Either choose n_points = %s (n_partitions = %s) or "
56
+ "n_points = %s (n_partitions = %s)." %
57
+ (n_points, results[0], results[1], results[2], results[3]))
58
+
59
+ self.n_partitions = results[0]
60
+
61
+ elif n_partitions is not None:
62
+ self.n_partitions = n_partitions
63
+
64
+ else:
65
+ raise Exception("Either provide number of partitions or number of points.")
66
+
67
+ def _do(self):
68
+ return incremental_lattice(self.n_partitions, self.n_dim)
pymoo/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.6.1.1"
1
+ __version__ = "0.6.1.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymoo
3
- Version: 0.6.1.1
3
+ Version: 0.6.1.2
4
4
  Summary: Multi-Objective Optimization in Python
5
5
  Home-page: https://pymoo.org
6
6
  Author: Julian Blank
@@ -14,11 +14,10 @@ Classifier: Operating System :: OS Independent
14
14
  Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Programming Language :: Python
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.7
18
- Classifier: Programming Language :: Python :: 3.8
19
17
  Classifier: Programming Language :: Python :: 3.9
20
18
  Classifier: Programming Language :: Python :: 3.10
21
19
  Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
22
21
  Classifier: Topic :: Scientific/Engineering
23
22
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
23
  Classifier: Topic :: Scientific/Engineering :: Mathematics
@@ -2,7 +2,7 @@ pymoo/__init__.py,sha256=k4UAJinBluYML1fOx-lQQ44-T957ZA4ChW39zsMkD1o,43
2
2
  pymoo/config.py,sha256=75-7sANvZrupa8HMa4oy-ffrTx1MVeQplUFw4CZ06mI,942
3
3
  pymoo/docs.py,sha256=UDp1fdlf2FGXhaHsy7zNeTGQXwtuHnpTCinPxlK8Oa0,8853
4
4
  pymoo/optimize.py,sha256=Ba-uPGK5mGTiFpFNspoK9mAZ1_phTA5_84xPmVSs3Xk,2410
5
- pymoo/version.py,sha256=_GdYtvGoAJ4yuPFAErhc_H7g8FdowfOStIocQ9KJouc,25
5
+ pymoo/version.py,sha256=uuNh2B2CkovTwN11bijXbJPfqmEwv22wDAdOFymLx6k,25
6
6
  pymoo/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  pymoo/algorithms/hyperparameters.py,sha256=J1Ueq5BhwKSMPUHTOsSC5YY8lOuuRDXdHHwtUnPoSp8,2593
8
8
  pymoo/algorithms/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -12,35 +12,35 @@ pymoo/algorithms/base/line.py,sha256=MSu3gD6gnymSpaLs-_vo12jjH0rbTmwRvVMYtBmUruw
12
12
  pymoo/algorithms/base/local.py,sha256=4CVtB69qsAgNAzujQTfRjLjVZeKdxSfN7wuZk6Qd0xI,1555
13
13
  pymoo/algorithms/base/meta.py,sha256=Lv4Mr_glxWAypycAcZZECUyD2o3aAdezTf2JWYMFKXk,1983
14
14
  pymoo/algorithms/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- pymoo/algorithms/moo/age.py,sha256=EmL67VtEbRxJ_UI75n11NBnbyJ4IwA-lgaqcP3eG6uw,10839
15
+ pymoo/algorithms/moo/age.py,sha256=Da50lU5E50N00MOWkMjJYJIx1zcFas3rXlGn3fCx1uo,10844
16
16
  pymoo/algorithms/moo/age2.py,sha256=mqG60dfO0ok3HQXHUVULclipdL06iACMxcCibJKR_Q8,5201
17
17
  pymoo/algorithms/moo/ctaea.py,sha256=CeiqpyGUzdE5Qt95yqxXLIEZp-ngpM1umJhC8Q7MQFI,12442
18
18
  pymoo/algorithms/moo/dnsga2.py,sha256=-zopb3rU7Bsu3rrKe-GA4Mfu2mm8DaxgtBcNKUjDiZg,2954
19
19
  pymoo/algorithms/moo/kgb.py,sha256=rnDD51oQjmjbUMWvyoCkB_u7Rd5hVJYqe6-SJWZwJW8,16740
20
20
  pymoo/algorithms/moo/moead.py,sha256=n2JajN6RFB1xh-uJRRT2-TWkBTlAbxzmew1CqixVL2g,7490
21
21
  pymoo/algorithms/moo/nsga2.py,sha256=C7aIAYyArXCb5W4dByjioWZANyuF2V8i3oTAu4gM8Fo,4539
22
- pymoo/algorithms/moo/nsga3.py,sha256=o6lPQ8IbSN26v_-F1-1NCHA_j20WedKlVTvkENJ5XZo,13699
22
+ pymoo/algorithms/moo/nsga3.py,sha256=JqOU8xCjawXORyMeBZhOO9sDVXVFx5FM7sX19ECLrWk,13697
23
23
  pymoo/algorithms/moo/rnsga2.py,sha256=JZFMgNlrnSe7M5z_hmj2KoqpxIdmo8ZvcUpj9cE5HZc,7338
24
24
  pymoo/algorithms/moo/rnsga3.py,sha256=TXOz6BYQ9NbPp-4nH2w9cSkuCWTDubsrsGAWgkr8YGs,10157
25
25
  pymoo/algorithms/moo/rvea.py,sha256=aPIaXOSQY9kLHjoSFjpfshvjluo32erWqOJh64pdLec,8074
26
- pymoo/algorithms/moo/sms.py,sha256=CAAypZypd1eUOoSgUDilVUUgycQHn8kH2xw_S-dIWf0,7140
26
+ pymoo/algorithms/moo/sms.py,sha256=1-KOQNUpN0Q7Osfh-tCwR-uZygijbrsdcBbFwE-LtZc,7185
27
27
  pymoo/algorithms/moo/spea2.py,sha256=Cug308XQ92JoMPZot8Tu6hx4kfMZYd2vqre03VlBPrI,7194
28
28
  pymoo/algorithms/moo/unsga3.py,sha256=0OW1phpAYVPJXRorhwL6jeRaHFtd3NBUHDEWImU1WR8,1675
29
29
  pymoo/algorithms/soo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  pymoo/algorithms/soo/convex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  pymoo/algorithms/soo/nonconvex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  pymoo/algorithms/soo/nonconvex/brkga.py,sha256=DYzED1NdTHODpoLz3N9ER0DOoqwzfSDoiwSlFDQBJ1Q,6580
33
- pymoo/algorithms/soo/nonconvex/cmaes.py,sha256=Z4_tS3Oef2KrTjnN8lg8FF2fl_7BYeC-haueyNzta4s,20264
33
+ pymoo/algorithms/soo/nonconvex/cmaes.py,sha256=3SaAIQGIbVUpPL-X46dvCQZmr6vaaZ7CJU2oUCRU9T0,20284
34
34
  pymoo/algorithms/soo/nonconvex/de.py,sha256=0DFw6UmROQB2kPrr7g-vPxsy13nLjThUKxnUOXKZTRM,11012
35
35
  pymoo/algorithms/soo/nonconvex/direct.py,sha256=FmMGnoEDr4JVgT17kxEzQ_8hTHSkksgO147ff8KBuz8,5341
36
- pymoo/algorithms/soo/nonconvex/es.py,sha256=1ayKpaGSghjZFjMBCIkHDRcHWdIjaRirJ5thPOy4mdg,7440
36
+ pymoo/algorithms/soo/nonconvex/es.py,sha256=TkCr2tqqQDs7BFv8DrZwgCEmpmNV9miOrsbeH9x0iog,7436
37
37
  pymoo/algorithms/soo/nonconvex/g3pcx.py,sha256=y0mSA30U9luxeEc8iunoxfNNoTNSkb5qMnJKx4k-w0s,3516
38
38
  pymoo/algorithms/soo/nonconvex/ga.py,sha256=fZs0QWisKLwCzyzp_ksfZZtzSrvWRHUy1bWi0UcZqjE,3569
39
39
  pymoo/algorithms/soo/nonconvex/ga_niching.py,sha256=JA1oCopF-T1NrblAnNhoACrcNh-Fepsu8dJAWAmyFYI,8858
40
40
  pymoo/algorithms/soo/nonconvex/isres.py,sha256=75LSmIKMm-463cKmjsqz9tjIEdFaJAeKChzG0K-9cH4,2678
41
41
  pymoo/algorithms/soo/nonconvex/nelder.py,sha256=cPG68KiwkBywCbq5NzNOGcLKpT9l19pJTIb1rBX-hh0,9308
42
- pymoo/algorithms/soo/nonconvex/optuna.py,sha256=MyrPqt02Z8M_WIxVO-zGZtVSi8z4a9VG2KUVOaV86PY,2682
43
- pymoo/algorithms/soo/nonconvex/pattern.py,sha256=X50SLO-xervMh3duvqQ3l6K6vPeDwNFoAmuCLTHx0II,6811
42
+ pymoo/algorithms/soo/nonconvex/optuna.py,sha256=YmIoxK8MVqh5GBwsxcEEKGA1hqoBZ_6uUe1bGxKJpMo,2666
43
+ pymoo/algorithms/soo/nonconvex/pattern.py,sha256=zPHxBC_picCDhufRCGOGodGsxQdfxc-zG-I_rAu2_3E,6802
44
44
  pymoo/algorithms/soo/nonconvex/pso.py,sha256=GwgtNKUmqABtrHUZb0tHxtisGFbHFgpuSbtl_S0vipk,13798
45
45
  pymoo/algorithms/soo/nonconvex/pso_ep.py,sha256=9Y4ygkFlHQ5VrGox81GCEFHAH1i1ziBRMX5LrdCYUKo,10620
46
46
  pymoo/algorithms/soo/nonconvex/random_search.py,sha256=iiLde96TBbNAHCVQO6Bmpl_fGM97JqYa7YyfNtdHcoI,907
@@ -52,13 +52,13 @@ pymoo/algorithms/soo/univariate/golden.py,sha256=w0GypUz6e1cVs6yWNKGq9Zisr80IHm1
52
52
  pymoo/algorithms/soo/univariate/quadr_interp.py,sha256=4hlrHqtX5GVZQQEHyWtQR4ZEZHIb6iNcseEvL5nWjoA,2366
53
53
  pymoo/algorithms/soo/univariate/wolfe.py,sha256=GpCA1GHkJwmFRTGQRS_ROFmqUeKQOQ3uM04ALZGiv9I,5784
54
54
  pymoo/constraints/__init__.py,sha256=rqUtJyMLicobcyhmr74TepjmUQAEmlazKT3vjV_n3aA,6
55
- pymoo/constraints/adaptive.py,sha256=MLofSDLI4d50FRx0c0TyxKLvBuhArxDNvHGU7Pa_ZdI,1956
55
+ pymoo/constraints/adaptive.py,sha256=QzkBndq0IzUGYCVa7Mj-cWqVaig8p5eaXD5VY0_53J0,1996
56
56
  pymoo/constraints/as_obj.py,sha256=cuyRgzZ-hK-5L4Mc0WYi4xbbv4XtiYpyrggb8wYcRBE,1589
57
57
  pymoo/constraints/as_penalty.py,sha256=_z7sH4keOpi-QuYmaVeKonBcwRMfZzze5rIaVWTACHc,1222
58
- pymoo/constraints/eps.py,sha256=eQW4H8gFczmInUk57kTgF1qJxNlQ69tnRN_kYMBKg48,815
58
+ pymoo/constraints/eps.py,sha256=d2YeWtIGcetfCsra020WzsaD3cQD0DInhKqsks3nQyo,835
59
59
  pymoo/constraints/from_bounds.py,sha256=PmiCYzNufUW8P8UCXmEpK55hM5D0paPLQ9OOk4898Mo,1053
60
60
  pymoo/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- pymoo/core/algorithm.py,sha256=Ry8khfjJT5TMOUn0jLuPmRfEyTRNBA89WZyYbdND5JQ,12537
61
+ pymoo/core/algorithm.py,sha256=ki9dg_aljWrTHPDwnZ0Q0K2EMSDg7qQjeGO4srf6tWQ,12567
62
62
  pymoo/core/callback.py,sha256=LYnIucOVfkkrURKkn4optoPFDt1Yz2gy-kumbBEC2W4,844
63
63
  pymoo/core/crossover.py,sha256=3fSo7lZRGbfqP9OZYh0L80PNoapjYaXZWD63QDJLNro,2790
64
64
  pymoo/core/decision_making.py,sha256=OYE0QA3Fde3eLwhstl28FLBlnamDE7DR6a9mY7Ecxk0,3074
@@ -66,7 +66,7 @@ pymoo/core/decomposition.py,sha256=bZnZ9Gc_vK_l-IM8OEu49CV_q0GkSJ_uJvk8jxE0FZ8,2
66
66
  pymoo/core/duplicate.py,sha256=r9UI-dEeAsW1Emg0_0_Exa21DwrTifyL3zEbrVON-7k,4169
67
67
  pymoo/core/evaluator.py,sha256=c09KUL2wwRFI9jYtKin5AVIwj8iiSQ3mUees4feaRJk,4273
68
68
  pymoo/core/indicator.py,sha256=LkQqPJetQIMrwOFaHQ5xGhwjB76sG8Asjs7eXsuasLY,916
69
- pymoo/core/individual.py,sha256=FSbS3xbX4S1KaGq26kOI0avpUTuR0VB9zXjLWkS0Ly4,7416
69
+ pymoo/core/individual.py,sha256=TsBupw1yHVj5ERCHXuTg-nBs9uimG_JtSr2kyqBgb-A,21161
70
70
  pymoo/core/infill.py,sha256=dBBZC8p6O3AY4EmfMZuKcjHAsHjWig__Ir2X0h8ZuoE,2390
71
71
  pymoo/core/initialization.py,sha256=hWBFHzkLx9HHJnp9WbkuEDpgkL6RGdt1GCtdPnnvxBs,1501
72
72
  pymoo/core/mating.py,sha256=7DizqpuT9bWUNWR3o843Az3m2VF_6-HiqyalU80RaC8,1279
@@ -75,28 +75,28 @@ pymoo/core/mixed.py,sha256=hz8ScnmakJkrYB4R4wtb_LLtI3YiTOILhXOs-TzZ0Ug,5934
75
75
  pymoo/core/mutation.py,sha256=h3mgBVJzw6QceSm7XY1NCHEAqIPTahYMmaKlY3HxTGA,1344
76
76
  pymoo/core/operator.py,sha256=n7ZUTattsj1hG3h0sM4ekVwKJ5iy2zABZ0VdkBiyV5A,977
77
77
  pymoo/core/parameters.py,sha256=y6OhZGJPY0PbxSsplCcOuvBDdWNpH45vAQx0ifiv-UE,3331
78
- pymoo/core/plot.py,sha256=_ZGvpAw930e_KmYEcWksYip9BoP_le6cn3IlA_bXb-g,6324
78
+ pymoo/core/plot.py,sha256=rBLDZI1u5FmXbFDG9q1lZkoEtqfJYEq_Jlw0CVYgU3E,6328
79
79
  pymoo/core/population.py,sha256=ccmf_TXPdUNzJSRk4_J0RGZ4KW0WXwmVvkWA6QvkK8I,5046
80
80
  pymoo/core/problem.py,sha256=ftjO6rpwogVIpxi11zvefZEhF4Y66PD-KtaHViBNMbI,14466
81
81
  pymoo/core/recorder.py,sha256=olPHYSYWNl_jrIPPB9_SNNSRmHvj7FAD31WE0yxGo5I,2493
82
82
  pymoo/core/repair.py,sha256=FVflxWURPKotiJGHPUO4F7-QK4hlM8gdW-D0rqusEuo,454
83
83
  pymoo/core/replacement.py,sha256=XY3_QJsdNaCy4qGt8qflSZlOgxzjZosNi-mh6b_9Sx4,2897
84
- pymoo/core/result.py,sha256=xT-SyP-OtzrEx5NvSMZNipG4rfl_9LDVKsVLpIhMy04,1201
84
+ pymoo/core/result.py,sha256=X9tV1XdC1BzJQeGca6EzoJuh3aXYJlJQlniS1a8hc6Y,1273
85
85
  pymoo/core/sampling.py,sha256=2flQm_4XayCcPVLXt9QTxfG5qjMSWzt5JJvc5Jt7X94,1101
86
86
  pymoo/core/selection.py,sha256=mwltF3nFGAkS4SufnOZMpZb68zmbyWJGTtI2tD7KaG0,1902
87
87
  pymoo/core/solution.py,sha256=-UmEmzO62zImVuAd8bDeokHMWfX7xcv631ntXF_Is8U,181
88
88
  pymoo/core/survival.py,sha256=vDhy51jPjv0V7lrWZZ1IDhqI06NOUqlsEISBMS9EeLg,3176
89
89
  pymoo/core/termination.py,sha256=ehj-gWKLX0FT4YzofpHYTYyQUBblJC-6pXB76J2CR0Y,1785
90
- pymoo/core/variable.py,sha256=4qWj0brhoCbGgUq8pCMCU85qIgDir8O2ulLuusEBa1I,2306
90
+ pymoo/core/variable.py,sha256=ZMeybeksqvSgrbvpOUHCftB1PZiesALxT_kYkOrY_LY,11109
91
91
  pymoo/cython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- pymoo/cython/calc_perpendicular_distance.cp39-win_amd64.pyd,sha256=v4L7ywxeTt0gXoOLnhx2lAIwWAwMNExQuI9nje_fj_Q,186880
93
- pymoo/cython/decomposition.cp39-win_amd64.pyd,sha256=qV3FUM-s9rH7KLmRnbhFkMSliSHmDU4u-v5C340oax0,206848
94
- pymoo/cython/hv.cp39-win_amd64.pyd,sha256=XrXCHW8acKCxzu__XGwq5p3HzeFnBbdtM-Xh-WY0QQ0,187904
95
- pymoo/cython/info.cp39-win_amd64.pyd,sha256=HOqGDkvDIflPVKVFFsa7s9OoxNOtX_QoNqfZbwMkyPo,37376
96
- pymoo/cython/mnn.cp39-win_amd64.pyd,sha256=szAiDfRQHfwqAJQMThW2V-B-SPMGsiFRM9SBr5pCvqA,220672
97
- pymoo/cython/non_dominated_sorting.cp39-win_amd64.pyd,sha256=pQkUfBE-WCDRLbs36RLs1T5Ls6MsmZBGndUpQSE6Oo4,239616
98
- pymoo/cython/pruning_cd.cp39-win_amd64.pyd,sha256=PbSAcz8kz2xxpv8P3w3VNIFySkZBs5QGO6uprK2eovo,213504
99
- pymoo/cython/stochastic_ranking.cp39-win_amd64.pyd,sha256=Fy_vH6ApKq3cSLDWcCMLkYispJCwEvBBdXUYYv2ceuE,187392
92
+ pymoo/cython/calc_perpendicular_distance.cp39-win_amd64.pyd,sha256=fOLZz06JZ1kfiKolEmLN5h-jv57Jn-uVI_mkjZL3E2k,187392
93
+ pymoo/cython/decomposition.cp39-win_amd64.pyd,sha256=KlyrjJ1LJlkz-eUifBBAzfb8BX3hZssjB2zMAJ4nF1Y,206848
94
+ pymoo/cython/hv.cp39-win_amd64.pyd,sha256=uFrxFei72BOwLtVTwyS5QF29N5WGbFhVVgZFwSpaKCE,187904
95
+ pymoo/cython/info.cp39-win_amd64.pyd,sha256=_hRP129qmYQrVcCJkxmdvcfogyYk2VMGjgzBThrXRGY,37376
96
+ pymoo/cython/mnn.cp39-win_amd64.pyd,sha256=WNK9_CXV-16X5k2BZiEsNOTObdhsqO1p_58LZwhJB5w,221184
97
+ pymoo/cython/non_dominated_sorting.cp39-win_amd64.pyd,sha256=hthNItRIfaHBi2LwGyazUHLBE1hDI-HX5CZ34UpSv7c,264704
98
+ pymoo/cython/pruning_cd.cp39-win_amd64.pyd,sha256=sQ3WVuxi6a8T5OWXAq5bR8Px8AZsSBklhK8hjIiLFeY,213504
99
+ pymoo/cython/stochastic_ranking.cp39-win_amd64.pyd,sha256=lwg1h4a-RGxqgE13akTyldh7BTTAL1s3-ksEncrT-kE,188416
100
100
  pymoo/cython/utils.pxd,sha256=fPA2Kqkgguw65imTWchitlxMI911J5GkM93rVjCWN2o,2681
101
101
  pymoo/cython/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  pymoo/cython/vendor/hypervolume.h,sha256=o5TVeXek-SwZuPnQqZJZf_Uh0iaOOquV7LpM3q5lyLo,2142
@@ -111,9 +111,9 @@ pymoo/decomposition/weighted_sum.py,sha256=2rjbyrjFyb_8rqAPF9DXI_3aMRyXd3aH0VKQ3
111
111
  pymoo/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
112
  pymoo/experimental/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  pymoo/experimental/algorithms/gde3.py,sha256=sDglIcVRRS6Fqj8pRUzoqmhPkgrH8LGpXfAMu02qMsQ,2116
114
- pymoo/gradient/__init__.py,sha256=-9NpaCjRXF93-C8SoMK_upzXmUt6O8Mg822syPSn-6Q,347
114
+ pymoo/gradient/__init__.py,sha256=cXSRlssyvl4mL5g7KzTQHTav5I2bTyd66V3co35UNOE,342
115
115
  pymoo/gradient/automatic.py,sha256=_ZVyKB1QXmja1FYttHlS8ps1YZBvJk4sSv0aB86Or5k,1962
116
- pymoo/gradient/grad_autograd.py,sha256=rW6rlu8zV2FgunQBHrE47aTviJeCCR3hTzY0zC97fIg,2190
116
+ pymoo/gradient/grad_autograd.py,sha256=z5j1-heiByWnbsldVDCOGEbFe2WnPJmIaZjtyELgtqI,2701
117
117
  pymoo/gradient/grad_complex.py,sha256=6x5MuQWP4q7fzy3KJqOm-xTgWE7G8H3X_I5WJdKy0Bk,1046
118
118
  pymoo/gradient/grad_jax.py,sha256=27dOMjr6x1bupn6OW_EY9TdH4_TqPiOLihAmSk2UnbY,1166
119
119
  pymoo/gradient/toolbox/__init__.py,sha256=UT_TY-IXId93F84nWNsVgi_0LcRnExrOuD0gRey5uXQ,128
@@ -245,7 +245,7 @@ pymoo/util/archive.py,sha256=i7bNEHaX7ZakbfYn_-6gjOy67TWE7sieCaHOlznrnhY,4490
245
245
  pymoo/util/cache.py,sha256=m_cV66-SS21syDmI6Wqrks5MLyIURmPeYBFO04Uhi1Y,847
246
246
  pymoo/util/clearing.py,sha256=g6rWld8Jut3xb8ZvmWbcm2PkSQHY-WIrsFgATUro15w,1826
247
247
  pymoo/util/dominator.py,sha256=THDYsQoQdblWnMS5T6vUAlhs398KzwY-wAAMxMviKGI,1873
248
- pymoo/util/function_loader.py,sha256=DEUOvhGo_tI3QGY1r-dArN3K9rm3uYqxysOX5Rk6quo,4084
248
+ pymoo/util/function_loader.py,sha256=YHNIYwYvCnvmDcrtAFBFD3h0nK3QpDLUy-b4AnLmcoM,4528
249
249
  pymoo/util/hv.py,sha256=r0_j8wfDyrTNe-vrF3mk94sbuNiV6jen80rvehri-zg,441
250
250
  pymoo/util/matlab_engine.py,sha256=C12y81qn92kzCQiEcSGkNXb_pRTNBdh7ol9h9Cb57Ps,1279
251
251
  pymoo/util/misc.py,sha256=do1txSQ9UKmml8Lf6YRMV64i13bxeb7mdt1JG8glwlE,11587
@@ -270,17 +270,19 @@ pymoo/util/display/output.py,sha256=6hXCT_BcL_1Awj5ivz8ykLL1I4XgdS-LVXmFaiO2xTo,
270
270
  pymoo/util/display/progress.py,sha256=b3tyiAzKFKdKN3IiPBrKUXXln8oluCHC2bQWEQlZd1U,1301
271
271
  pymoo/util/display/single.py,sha256=Sz8lbwDRyvfpX93onqJPzyWROwXoavYNy_pXs_JiMe0,1840
272
272
  pymoo/util/nds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
+ pymoo/util/nds/dominance_degree_non_dominated_sort.py,sha256=MIAB-jpX9U5WoTE2T8b5akn03RRUXpwMrq6OVnsB0Uw,5308
273
274
  pymoo/util/nds/efficient_non_dominated_sort.py,sha256=V9zV1gtaKzGpgpcQGkD-iExI2ACNlDzAlk6y96GpoGI,4088
274
275
  pymoo/util/nds/fast_non_dominated_sort.py,sha256=fj1j39CCCSx5TsP2_XpgWRJ_1SLoBEk7Yg9tQZxwRNE,1749
275
276
  pymoo/util/nds/naive_non_dominated_sort.py,sha256=lTJjjBSZ7ojE6qMmud3OB2ns1GzfKyFguo91mSkW_kA,858
276
277
  pymoo/util/nds/non_dominated_sorting.py,sha256=DcSimTEn-e1JweKrByqHm4vMAD5-jD5NIDoxAJcYyvU,1994
277
278
  pymoo/util/nds/tree_based_non_dominated_sort.py,sha256=e0iefd-Wu7ctefd8Z76l8F2XxCiIi_dOiYchf1atpRc,3763
278
- pymoo/util/ref_dirs/__init__.py,sha256=OC_BMAYaxDN6zvvRyt6f0TTFOyl8seFeEzzwrEEiD-U,995
279
+ pymoo/util/ref_dirs/__init__.py,sha256=M0SghufgZ7Ku04n_EjgUq6XWpKMQP0iziHb3bvP7ETs,1139
279
280
  pymoo/util/ref_dirs/construction.py,sha256=JlA8Xyowu3AyLc_JX_qwPBcVXw33eub_r29TKHLd4sg,2817
280
281
  pymoo/util/ref_dirs/das_dennis.py,sha256=4SBmBCqVSO5uQ6QDOG_Htu2tBeHDnqV18B2mDib8LK8,1552
281
- pymoo/util/ref_dirs/energy.py,sha256=SMSe-rS4639z8rJVAFNlhBWKGEuyF37JIb9gExWoj2o,11868
282
- pymoo/util/ref_dirs/energy_layer.py,sha256=xxz5YuZVL5n8QslAx7ff2fKBSThoOKJ8TaI7Q2QPVX8,3647
282
+ pymoo/util/ref_dirs/energy.py,sha256=-X5yBpnOs9MPYPX7tQT8uO1qboLCemdsEV4wh34S-xc,11882
283
+ pymoo/util/ref_dirs/energy_layer.py,sha256=DJR6iaIh5hP6xl-AxwSB9cWYbAbm5XG43AFMykubDC8,3658
283
284
  pymoo/util/ref_dirs/genetic_algorithm.py,sha256=Pepw8BvoWgt_5SacsSnIYsovs56NIwzV5QPV9i4F8N0,1991
285
+ pymoo/util/ref_dirs/incremental.py,sha256=T0AlzXJxliNcD2PNN7xfsPziOpxgGbuH6uRLnPhkbE0,2286
284
286
  pymoo/util/ref_dirs/misc.py,sha256=ecbQmE1CTV2IhpBaffIH6klUAwaJU09xaQSwgs0yEkY,3326
285
287
  pymoo/util/ref_dirs/optimizer.py,sha256=03HerdH71QFTurJct1g8sTrfV409Wf5lrfoLOLHAx4A,1560
286
288
  pymoo/util/ref_dirs/performance.py,sha256=S7jweHGdF-Qcb-YmY-_pMgWXK-1gborroNqwoSlufno,4137
@@ -307,8 +309,8 @@ pymoo/visualization/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
307
309
  pymoo/visualization/video/callback_video.py,sha256=6h7ZYWH7Egls15vi01XxpCjAugSwgrgZzkHT9L0_uaY,2607
308
310
  pymoo/visualization/video/one_var_one_obj.py,sha256=e3YOpcwShnwaaJidI9yJ-94auPHBiC0wGGq5u5vGIXs,1974
309
311
  pymoo/visualization/video/two_var_one_obj.py,sha256=sZcnpaNbamEH8MrDdxvygDGuN-L04yMHdrDeP9e6ObE,2251
310
- pymoo-0.6.1.1.dist-info/LICENSE,sha256=c3wLHEScsIpcWMZmUKxiP6AQRnOybZKvZg71K8xefyc,10956
311
- pymoo-0.6.1.1.dist-info/METADATA,sha256=MvaXFU8sbt8dsorGVydlTGYFfNoCxQ0sEhekmOaJ-Q8,5284
312
- pymoo-0.6.1.1.dist-info/WHEEL,sha256=QEPhY-QL5bUCGe8xLO1ow2Nlf5beRmRJkZ8YmG0I2hM,100
313
- pymoo-0.6.1.1.dist-info/top_level.txt,sha256=AQwRb60Qa58G1fn7bUhX8djnZycKvhJP2y8PCaA26Cg,6
314
- pymoo-0.6.1.1.dist-info/RECORD,,
312
+ pymoo-0.6.1.2.dist-info/LICENSE,sha256=c3wLHEScsIpcWMZmUKxiP6AQRnOybZKvZg71K8xefyc,10956
313
+ pymoo-0.6.1.2.dist-info/METADATA,sha256=dHIQ55LqIju7EY6hozDn6PO-KMjRWgkfnvzO3QQ4rUA,5234
314
+ pymoo-0.6.1.2.dist-info/WHEEL,sha256=Z6c-bE0pUM47a70GvqO_SvH_XXU0lm62gEAKtoNJ08A,100
315
+ pymoo-0.6.1.2.dist-info/top_level.txt,sha256=AQwRb60Qa58G1fn7bUhX8djnZycKvhJP2y8PCaA26Cg,6
316
+ pymoo-0.6.1.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.3)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-win_amd64
5
5