pymoo 0.6.1.2__tar.gz → 0.6.1.5.dev0__tar.gz

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 (339) hide show
  1. pymoo-0.6.1.5.dev0/MANIFEST.in +6 -0
  2. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/Makefile +5 -3
  3. {pymoo-0.6.1.2/pymoo.egg-info → pymoo-0.6.1.5.dev0}/PKG-INFO +16 -9
  4. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/age.py +13 -7
  5. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/age2.py +49 -19
  6. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/ctaea.py +2 -2
  7. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/kgb.py +9 -9
  8. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/nsga2.py +0 -4
  9. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/nsga3.py +2 -2
  10. pymoo-0.6.1.5.dev0/pymoo/algorithms/moo/pinsga2.py +370 -0
  11. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rnsga3.py +2 -2
  12. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/es.py +3 -2
  13. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/config.py +1 -1
  14. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/algorithm.py +1 -1
  15. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/individual.py +8 -7
  16. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/replacement.py +5 -5
  17. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/survival.py +1 -1
  18. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/variable.py +9 -9
  19. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/calc_perpendicular_distance.pyx +0 -0
  20. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/non_dominated_sorting.pyx +1 -1
  21. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/docs.py +1 -1
  22. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_autograd.py +2 -2
  23. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/ox.py +1 -1
  24. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/rnd.py +2 -2
  25. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/tournament.py +5 -5
  26. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/optimize.py +2 -2
  27. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/df.py +4 -4
  28. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/traveling_salesman.py +1 -1
  29. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/misc.py +2 -2
  30. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/mnn.py +2 -2
  31. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/fast_non_dominated_sort.py +5 -3
  32. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/non_dominated_sorting.py +2 -2
  33. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/normalization.py +5 -8
  34. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/energy.py +4 -2
  35. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/reduction.py +1 -1
  36. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/reference_direction.py +3 -2
  37. pymoo-0.6.1.5.dev0/pymoo/util/value_functions.py +719 -0
  38. pymoo-0.6.1.5.dev0/pymoo/util/vf_dominator.py +99 -0
  39. pymoo-0.6.1.5.dev0/pymoo/version.py +1 -0
  40. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/heatmap.py +3 -3
  41. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/pcp.py +1 -1
  42. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/radar.py +1 -1
  43. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0/pymoo.egg-info}/PKG-INFO +16 -9
  44. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/SOURCES.txt +4 -8
  45. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/requires.txt +2 -2
  46. pymoo-0.6.1.5.dev0/pyproject.toml +59 -0
  47. pymoo-0.6.1.5.dev0/setup.py +8 -0
  48. pymoo-0.6.1.2/MANIFEST.in +0 -4
  49. pymoo-0.6.1.2/pymoo/cython/calc_perpendicular_distance.cpp +0 -27447
  50. pymoo-0.6.1.2/pymoo/cython/decomposition.cpp +0 -28940
  51. pymoo-0.6.1.2/pymoo/cython/hv.cpp +0 -27617
  52. pymoo-0.6.1.2/pymoo/cython/info.cpp +0 -5799
  53. pymoo-0.6.1.2/pymoo/cython/mnn.cpp +0 -30218
  54. pymoo-0.6.1.2/pymoo/cython/non_dominated_sorting.cpp +0 -35290
  55. pymoo-0.6.1.2/pymoo/cython/pruning_cd.cpp +0 -29357
  56. pymoo-0.6.1.2/pymoo/cython/stochastic_ranking.cpp +0 -27791
  57. pymoo-0.6.1.2/pymoo/version.py +0 -1
  58. pymoo-0.6.1.2/setup.py +0 -208
  59. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/LICENSE +0 -0
  60. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/README.rst +0 -0
  61. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/__init__.py +0 -0
  62. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/__init__.py +0 -0
  63. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/__init__.py +0 -0
  64. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/bracket.py +0 -0
  65. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/genetic.py +0 -0
  66. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/line.py +0 -0
  67. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/local.py +0 -0
  68. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/meta.py +0 -0
  69. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/hyperparameters.py +0 -0
  70. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/__init__.py +0 -0
  71. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/dnsga2.py +0 -0
  72. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/moead.py +0 -0
  73. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rnsga2.py +0 -0
  74. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rvea.py +0 -0
  75. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/sms.py +0 -0
  76. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/spea2.py +0 -0
  77. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/unsga3.py +0 -0
  78. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/__init__.py +0 -0
  79. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/convex/__init__.py +0 -0
  80. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/__init__.py +0 -0
  81. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/brkga.py +0 -0
  82. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/cmaes.py +0 -0
  83. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/de.py +0 -0
  84. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/direct.py +0 -0
  85. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/g3pcx.py +0 -0
  86. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/ga.py +0 -0
  87. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/ga_niching.py +0 -0
  88. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/isres.py +0 -0
  89. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/nelder.py +0 -0
  90. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/optuna.py +0 -0
  91. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pattern.py +0 -0
  92. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pso.py +0 -0
  93. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pso_ep.py +0 -0
  94. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/random_search.py +0 -0
  95. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/sres.py +0 -0
  96. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/__init__.py +0 -0
  97. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/backtracking.py +0 -0
  98. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/exp.py +0 -0
  99. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/golden.py +0 -0
  100. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/quadr_interp.py +0 -0
  101. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/wolfe.py +0 -0
  102. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/__init__.py +0 -0
  103. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/adaptive.py +0 -0
  104. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/as_obj.py +0 -0
  105. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/as_penalty.py +0 -0
  106. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/eps.py +0 -0
  107. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/from_bounds.py +0 -0
  108. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/__init__.py +0 -0
  109. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/callback.py +0 -0
  110. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/crossover.py +0 -0
  111. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/decision_making.py +0 -0
  112. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/decomposition.py +0 -0
  113. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/duplicate.py +0 -0
  114. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/evaluator.py +0 -0
  115. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/indicator.py +0 -0
  116. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/infill.py +0 -0
  117. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/initialization.py +0 -0
  118. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mating.py +0 -0
  119. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/meta.py +0 -0
  120. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mixed.py +0 -0
  121. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mutation.py +0 -0
  122. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/operator.py +0 -0
  123. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/parameters.py +0 -0
  124. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/plot.py +0 -0
  125. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/population.py +0 -0
  126. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/problem.py +0 -0
  127. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/recorder.py +0 -0
  128. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/repair.py +0 -0
  129. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/result.py +0 -0
  130. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/sampling.py +0 -0
  131. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/selection.py +0 -0
  132. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/solution.py +0 -0
  133. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/termination.py +0 -0
  134. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/__init__.py +0 -0
  135. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/decomposition.pyx +0 -0
  136. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/hv.pyx +0 -0
  137. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/info.pyx +0 -0
  138. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/mnn.pyx +0 -0
  139. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/pruning_cd.pyx +0 -0
  140. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/stochastic_ranking.pyx +0 -0
  141. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/utils.pxd +0 -0
  142. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/__init__.py +0 -0
  143. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/hypervolume.cpp +0 -0
  144. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/hypervolume.h +0 -0
  145. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/__init__.py +0 -0
  146. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/aasf.py +0 -0
  147. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/asf.py +0 -0
  148. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/pbi.py +0 -0
  149. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/perp_dist.py +0 -0
  150. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/tchebicheff.py +0 -0
  151. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/util.py +0 -0
  152. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/weighted_sum.py +0 -0
  153. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/__init__.py +0 -0
  154. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/algorithms/__init__.py +0 -0
  155. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/algorithms/gde3.py +0 -0
  156. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/__init__.py +0 -0
  157. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/automatic.py +0 -0
  158. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_complex.py +0 -0
  159. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_jax.py +0 -0
  160. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/toolbox/__init__.py +0 -0
  161. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/__init__.py +0 -0
  162. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/distance_indicator.py +0 -0
  163. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/gd.py +0 -0
  164. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/gd_plus.py +0 -0
  165. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/__init__.py +0 -0
  166. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/exact.py +0 -0
  167. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/exact_2d.py +0 -0
  168. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/monte_carlo.py +0 -0
  169. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/igd.py +0 -0
  170. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/igd_plus.py +0 -0
  171. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/kktpm.py +0 -0
  172. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/migd.py +0 -0
  173. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/rmetric.py +0 -0
  174. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/spacing.py +0 -0
  175. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/__init__.py +0 -0
  176. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/compromise_programming.py +0 -0
  177. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/high_tradeoff.py +0 -0
  178. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/pseudo_weights.py +0 -0
  179. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/__init__.py +0 -0
  180. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/control.py +0 -0
  181. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/__init__.py +0 -0
  182. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/binx.py +0 -0
  183. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/dex.py +0 -0
  184. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/erx.py +0 -0
  185. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/expx.py +0 -0
  186. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/hux.py +0 -0
  187. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/nox.py +0 -0
  188. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/pcx.py +0 -0
  189. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/pntx.py +0 -0
  190. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/sbx.py +0 -0
  191. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/spx.py +0 -0
  192. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/ux.py +0 -0
  193. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/__init__.py +0 -0
  194. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/bitflip.py +0 -0
  195. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/gauss.py +0 -0
  196. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/inversion.py +0 -0
  197. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/nom.py +0 -0
  198. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/pm.py +0 -0
  199. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/rm.py +0 -0
  200. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/__init__.py +0 -0
  201. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/bounce_back.py +0 -0
  202. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/bounds_repair.py +0 -0
  203. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/inverse_penalty.py +0 -0
  204. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/rounding.py +0 -0
  205. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/to_bound.py +0 -0
  206. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/vtype.py +0 -0
  207. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/__init__.py +0 -0
  208. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/lhs.py +0 -0
  209. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/rnd.py +0 -0
  210. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/__init__.py +0 -0
  211. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/__init__.py +0 -0
  212. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/__init__.py +0 -0
  213. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/classes.py +0 -0
  214. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/metrics.py +0 -0
  215. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/__init__.py +0 -0
  216. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dyn.py +0 -0
  217. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/__init__.py +0 -0
  218. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/cec2015.py +0 -0
  219. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/misc.py +0 -0
  220. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/functional.py +0 -0
  221. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/__init__.py +0 -0
  222. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/cdtlz.py +0 -0
  223. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/dcdtlz.py +0 -0
  224. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/dtlz.py +0 -0
  225. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/wfg.py +0 -0
  226. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/__init__.py +0 -0
  227. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/bnh.py +0 -0
  228. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/carside.py +0 -0
  229. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/clutch.py +0 -0
  230. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/csi.py +0 -0
  231. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/ctp.py +0 -0
  232. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/dascmop.py +0 -0
  233. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/kursawe.py +0 -0
  234. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/modact.py +0 -0
  235. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/mw.py +0 -0
  236. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/omnitest.py +0 -0
  237. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/osy.py +0 -0
  238. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/srn.py +0 -0
  239. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/sympart.py +0 -0
  240. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/tnk.py +0 -0
  241. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/truss2d.py +0 -0
  242. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/welded_beam.py +0 -0
  243. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/wrm.py +0 -0
  244. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/zdt.py +0 -0
  245. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi_to_single.py +0 -0
  246. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/__init__.py +0 -0
  247. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/ackley.py +0 -0
  248. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/cantilevered_beam.py +0 -0
  249. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/flowshop_scheduling.py +0 -0
  250. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/g.py +0 -0
  251. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/griewank.py +0 -0
  252. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/himmelblau.py +0 -0
  253. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/knapsack.py +0 -0
  254. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/mopta08.py +0 -0
  255. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/multimodal.py +0 -0
  256. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/pressure_vessel.py +0 -0
  257. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/rastrigin.py +0 -0
  258. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/rosenbrock.py +0 -0
  259. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/schwefel.py +0 -0
  260. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/simple.py +0 -0
  261. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/sphere.py +0 -0
  262. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/zakharov.py +0 -0
  263. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/static.py +0 -0
  264. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/util.py +0 -0
  265. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/zero_to_one.py +0 -0
  266. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/__init__.py +0 -0
  267. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/collection.py +0 -0
  268. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/cv.py +0 -0
  269. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/default.py +0 -0
  270. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/delta.py +0 -0
  271. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/fmin.py +0 -0
  272. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/ftol.py +0 -0
  273. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/indicator.py +0 -0
  274. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_eval.py +0 -0
  275. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_gen.py +0 -0
  276. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_time.py +0 -0
  277. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/robust.py +0 -0
  278. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/xtol.py +0 -0
  279. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/__init__.py +0 -0
  280. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/archive.py +0 -0
  281. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/cache.py +0 -0
  282. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/clearing.py +0 -0
  283. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/__init__.py +0 -0
  284. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/column.py +0 -0
  285. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/display.py +0 -0
  286. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/multi.py +0 -0
  287. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/output.py +0 -0
  288. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/progress.py +0 -0
  289. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/single.py +0 -0
  290. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/dominator.py +0 -0
  291. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/function_loader.py +0 -0
  292. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/hv.py +0 -0
  293. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/matlab_engine.py +0 -0
  294. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/__init__.py +0 -0
  295. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/dominance_degree_non_dominated_sort.py +0 -0
  296. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/efficient_non_dominated_sort.py +0 -0
  297. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/naive_non_dominated_sort.py +0 -0
  298. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/tree_based_non_dominated_sort.py +0 -0
  299. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/optimum.py +0 -0
  300. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/plotting.py +0 -0
  301. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/pruning_cd.py +0 -0
  302. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/randomized_argsort.py +0 -0
  303. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/__init__.py +0 -0
  304. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/construction.py +0 -0
  305. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/das_dennis.py +0 -0
  306. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/energy_layer.py +0 -0
  307. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/genetic_algorithm.py +0 -0
  308. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/incremental.py +0 -0
  309. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/misc.py +0 -0
  310. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/optimizer.py +0 -0
  311. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/performance.py +0 -0
  312. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/sample_and_map.py +0 -0
  313. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/remote.py +0 -0
  314. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/roulette.py +0 -0
  315. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/running_metric.py +0 -0
  316. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/sliding_window.py +0 -0
  317. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/stochastic_ranking.py +0 -0
  318. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/vectors.py +0 -0
  319. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/__init__.py +0 -0
  320. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/cec2018.py +0 -0
  321. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/gta.py +0 -0
  322. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/hv.py +0 -0
  323. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_cmaes.py +0 -0
  324. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_coco.py +0 -0
  325. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_scipy.py +0 -0
  326. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/__init__.py +0 -0
  327. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/fitness_landscape.py +0 -0
  328. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/petal.py +0 -0
  329. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/radviz.py +0 -0
  330. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/scatter.py +0 -0
  331. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/star_coordinate.py +0 -0
  332. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/util.py +0 -0
  333. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/__init__.py +0 -0
  334. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/callback_video.py +0 -0
  335. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/one_var_one_obj.py +0 -0
  336. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/two_var_one_obj.py +0 -0
  337. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/dependency_links.txt +0 -0
  338. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/top_level.txt +0 -0
  339. {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/setup.cfg +0 -0
@@ -0,0 +1,6 @@
1
+ exclude tests/*
2
+ exclude pymoo/cython/*.cpp
3
+ include pymoo/cython/*.pyx
4
+ include pymoo/cython/*.pxd
5
+ include pymoo/cython/vendor/*.h
6
+ include Makefile
@@ -1,21 +1,23 @@
1
+ .PHONY: clean
1
2
  clean:
2
3
  rm -rf build dist pymoo.egg-info
3
4
 
5
+ .PHONY: clean-ext
4
6
  clean-ext:
5
7
  rm -f pymoo/cython/*.c
6
8
  rm -f pymoo/cython/*.so
7
9
  rm -f pymoo/cython/*.cpp
8
10
  rm -f pymoo/cython/*.html
9
11
 
12
+ .PHONY: compile
10
13
  compile:
11
14
  python setup.py build_ext --inplace
12
15
 
13
- compile-without-cython:
14
- python setup.py build_ext --inplace --no-cython
15
-
16
+ .PHONY: dist
16
17
  dist:
17
18
  python setup.py sdist
18
19
 
20
+ .PHONY: install
19
21
  install:
20
22
  python setup.py install
21
23
 
@@ -1,29 +1,36 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pymoo
3
- Version: 0.6.1.2
3
+ Version: 0.6.1.5.dev0
4
4
  Summary: Multi-Objective Optimization in Python
5
- Home-page: https://pymoo.org
6
- Author: Julian Blank
7
- Author-email: blankjul@msu.edu
8
- License: Apache License 2.0
5
+ Author-email: Julian Blank <blankjul@outlook.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: homepage, https://pymoo.org
9
8
  Keywords: optimization
10
- Platform: any
11
9
  Classifier: Intended Audience :: Developers
12
10
  Classifier: Intended Audience :: Science/Research
13
11
  Classifier: Operating System :: OS Independent
14
- Classifier: License :: OSI Approved :: Apache Software License
15
12
  Classifier: Programming Language :: Python
16
13
  Classifier: Programming Language :: Python :: 3
17
14
  Classifier: Programming Language :: Python :: 3.9
18
15
  Classifier: Programming Language :: Python :: 3.10
19
16
  Classifier: Programming Language :: Python :: 3.11
20
17
  Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
21
19
  Classifier: Topic :: Scientific/Engineering
22
20
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
21
  Classifier: Topic :: Scientific/Engineering :: Mathematics
24
- Requires-Python: >=3.7
22
+ Requires-Python: >=3.9
25
23
  Description-Content-Type: text/x-rst
26
24
  License-File: LICENSE
25
+ Requires-Dist: numpy>=1.19.3
26
+ Requires-Dist: scipy>=1.1
27
+ Requires-Dist: matplotlib>=3
28
+ Requires-Dist: autograd>=1.4
29
+ Requires-Dist: cma>=3.2.2
30
+ Requires-Dist: alive-progress
31
+ Requires-Dist: dill
32
+ Requires-Dist: Deprecated
33
+ Dynamic: license-file
27
34
 
28
35
 
29
36
 
@@ -167,7 +167,13 @@ class AGEMOEASurvival(Survival):
167
167
  p = self.compute_geometry(front, extreme, n)
168
168
 
169
169
  nn = np.linalg.norm(front, p, axis=1)
170
- distances = self.pairwise_distances(front, p) / (nn[:, None])
170
+ # Replace very small norms with 1 to prevent division by zero
171
+ nn[nn < 1e-8] = 1
172
+
173
+ distances = self.pairwise_distances(front, p)
174
+ distances[distances < 1e-8] = 1e-8 # Replace very small entries to prevent division by zero
175
+
176
+ distances = distances / (nn[:, None])
171
177
 
172
178
  neighbors = 2
173
179
  remaining = np.arange(m)
@@ -209,7 +215,7 @@ class AGEMOEASurvival(Survival):
209
215
  return p
210
216
 
211
217
  @staticmethod
212
- @jit(fastmath=True)
218
+ #@jit(nopython=True, fastmath=True)
213
219
  def pairwise_distances(front, p):
214
220
  m = np.shape(front)[0]
215
221
  distances = np.zeros((m, m))
@@ -219,14 +225,14 @@ class AGEMOEASurvival(Survival):
219
225
  return distances
220
226
 
221
227
  @staticmethod
222
- @jit(fastmath=True)
228
+ @jit(nopython=True, fastmath=True)
223
229
  def minkowski_distances(A, B, p):
224
230
  m1 = np.shape(A)[0]
225
231
  m2 = np.shape(B)[0]
226
232
  distances = np.zeros((m1, m2))
227
233
  for i in range(m1):
228
234
  for j in range(m2):
229
- distances[i][j] = sum(np.abs(A[i] - B[j]) ** p) ** (1 / p)
235
+ distances[i][j] = np.sum(np.abs(A[i] - B[j]) ** p) ** (1 / p)
230
236
 
231
237
  return distances
232
238
 
@@ -254,15 +260,15 @@ def find_corner_solutions(front):
254
260
  return indexes
255
261
 
256
262
 
257
- @jit(fastmath=True)
263
+ @jit(nopython=True, fastmath=True)
258
264
  def point_2_line_distance(P, A, B):
259
- d = np.zeros(P.shape[0])
265
+ d = np.zeros(P.shape[0], dtype=numba.float64)
260
266
 
261
267
  for i in range(P.shape[0]):
262
268
  pa = P[i] - A
263
269
  ba = B - A
264
270
  t = np.dot(pa, ba) / np.dot(ba, ba)
265
- d[i] = sum((pa - t * ba) ** 2)
271
+ d[i] = np.sum((pa - t * ba) ** 2)
266
272
 
267
273
  return d
268
274
 
@@ -64,48 +64,78 @@ class AGEMOEA2(GeneticAlgorithm):
64
64
  self.tournament_type = 'comp_by_rank_and_crowding'
65
65
 
66
66
 
67
- @jit(fastmath=True)
67
+ @jit(nopython=True, fastmath=True)
68
68
  def project_on_manifold(point, p):
69
- dist = sum(point[point > 0] ** p) ** (1/p)
69
+ dist = np.sum(point[point > 0] ** p) ** (1/p)
70
70
  return np.multiply(point, 1 / dist)
71
71
 
72
72
 
73
+ import numpy as np
74
+
75
+
73
76
  def find_zero(point, n, precision):
74
77
  x = 1
75
-
78
+ epsilon = 1e-10 # Small constant for regularization
76
79
  past_value = x
80
+ max_float = np.finfo(np.float64).max # Maximum representable float value
81
+ log_max_float = np.log(max_float) # Logarithm of the maximum float
82
+
77
83
  for i in range(0, 100):
78
84
 
79
- # Original function
85
+ # Original function with regularization
80
86
  f = 0.0
81
87
  for obj_index in range(0, n):
82
88
  if point[obj_index] > 0:
83
- f += np.power(point[obj_index], x)
89
+ log_value = x * np.log(point[obj_index] + epsilon)
90
+ if log_value < log_max_float:
91
+ f += np.exp(log_value)
92
+ else:
93
+ return 1 # Handle overflow by returning a fallback value
84
94
 
85
- f = np.log(f)
95
+ f = np.log(f) if f > 0 else 0 # Avoid log of non-positive numbers
86
96
 
87
- # Derivative
97
+ # Derivative with regularization
88
98
  numerator = 0
89
99
  denominator = 0
90
100
  for obj_index in range(0, n):
91
101
  if point[obj_index] > 0:
92
- numerator = numerator + np.power(point[obj_index], x) * np.log(point[obj_index])
93
- denominator = denominator + np.power(point[obj_index], x)
94
-
95
- if denominator == 0:
96
- return 1
102
+ log_value = x * np.log(point[obj_index] + epsilon)
103
+ if log_value < log_max_float:
104
+ power_value = np.exp(log_value)
105
+ log_term = np.log(point[obj_index] + epsilon)
106
+
107
+ # Use logarithmic comparison to avoid overflow
108
+ if log_value + np.log(abs(log_term) + epsilon) < log_max_float:
109
+ result = power_value * log_term
110
+ numerator += result
111
+ denominator += power_value
112
+ else:
113
+ # Handle extreme cases by capping the result
114
+ numerator += max_float
115
+ denominator += power_value
116
+ else:
117
+ return 1 # Handle overflow by returning a fallback value
118
+
119
+ if denominator == 0 or np.isnan(denominator) or np.isinf(denominator):
120
+ return 1 # Handle division by zero or NaN
121
+
122
+ if np.isnan(numerator) or np.isinf(numerator):
123
+ return 1 # Handle invalid numerator
97
124
 
98
125
  ff = numerator / denominator
99
126
 
100
- # zero of function
127
+ if ff == 0: # Check for zero before division
128
+ return 1 # Handle by returning a fallback value
129
+
130
+ # Update x using Newton's method
101
131
  x = x - f / ff
102
132
 
103
133
  if abs(x - past_value) <= precision:
104
134
  break
105
135
  else:
106
- paste_value = x # update current point
136
+ past_value = x # Update current point
107
137
 
108
- if isinstance(x, complex):
138
+ if isinstance(x, complex) or np.isinf(x) or np.isnan(x):
109
139
  return 1
110
140
  else:
111
141
  return x
@@ -135,7 +165,7 @@ class AGEMOEA2Survival(AGEMOEASurvival):
135
165
  return p
136
166
 
137
167
  @staticmethod
138
- @jit(fastmath=True)
168
+ @jit(nopython=True, fastmath=True)
139
169
  def pairwise_distances(front, p):
140
170
  m, n = front.shape
141
171
  projected_front = front.copy()
@@ -148,7 +178,7 @@ class AGEMOEA2Survival(AGEMOEASurvival):
148
178
  if 0.95 < p < 1.05:
149
179
  for row in range(0, m - 1):
150
180
  for column in range(row + 1, m):
151
- distances[row][column] = sum(np.abs(projected_front[row] - projected_front[column]) ** 2) ** 0.5
181
+ distances[row][column] = np.sum(np.abs(projected_front[row] - projected_front[column]) ** 2) ** 0.5
152
182
 
153
183
  else:
154
184
  for row in range(0, m-1):
@@ -156,8 +186,8 @@ class AGEMOEA2Survival(AGEMOEASurvival):
156
186
  mid_point = projected_front[row] * 0.5 + projected_front[column] * 0.5
157
187
  mid_point = project_on_manifold(mid_point, p)
158
188
 
159
- distances[row][column] = sum(np.abs(projected_front[row] - mid_point) ** 2) ** 0.5 + \
160
- sum(np.abs(projected_front[column] - mid_point) ** 2) ** 0.5
189
+ distances[row][column] = np.sum(np.abs(projected_front[row] - mid_point) ** 2) ** 0.5 + \
190
+ np.sum(np.abs(projected_front[column] - mid_point) ** 2) ** 0.5
161
191
 
162
192
  return distances + distances.T
163
193
 
@@ -14,7 +14,7 @@ from pymoo.operators.selection.tournament import TournamentSelection
14
14
  from pymoo.util.display.multi import MultiObjectiveOutput
15
15
  from pymoo.util.dominator import Dominator
16
16
  from pymoo.util.function_loader import load_function
17
- from pymoo.util.misc import has_feasible, random_permuations
17
+ from pymoo.util.misc import has_feasible, random_permutations
18
18
  from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
19
19
 
20
20
 
@@ -63,7 +63,7 @@ class RestrictedMating(TournamentSelection):
63
63
  n_random = n_select * n_parents * self.pressure
64
64
  n_perms = math.ceil(n_random / n_pop)
65
65
  # get random permutations and reshape them
66
- P = random_permuations(n_perms, n_pop)[:n_random]
66
+ P = random_permutations(n_perms, n_pop)[:n_random]
67
67
  P = np.reshape(P, (n_select * n_parents, self.pressure))
68
68
  if Pc <= Pd:
69
69
  # Choose from DA
@@ -24,13 +24,13 @@ class KGB(NSGA2):
24
24
  c_size=13,
25
25
  eps=0.0,
26
26
  ps={},
27
- pertub_dev=0.1,
27
+ perturb_dev=0.1,
28
28
  save_ps=False,
29
29
  **kwargs,
30
30
  ):
31
31
 
32
32
  super().__init__(**kwargs)
33
- self.PERTUB_DEV = pertub_dev
33
+ self.PERTURB_DEV = perturb_dev
34
34
  self.PERC_DIVERSITY = perc_diversity
35
35
  self.PERC_DETECT_CHANGE = perc_detect_change
36
36
  self.EPS = eps
@@ -258,11 +258,11 @@ class KGB(NSGA2):
258
258
  :param pop: Population to check and fix boundaries
259
259
  :return: Population with corrected boundaries
260
260
  """
261
- # check wether numpy array or pymoo population is given
261
+ # check whether numpy array or pymoo population is given
262
262
  if isinstance(pop, Population):
263
263
  pop = pop.get("X")
264
264
 
265
- # check if any solution is outside of the bounds
265
+ # check if any solution is outside the bounds
266
266
  for individual in pop:
267
267
  for i in range(len(individual)):
268
268
  if individual[i] > self.problem.xu[i]:
@@ -281,7 +281,7 @@ class KGB(NSGA2):
281
281
  # TODO: Check boundaries
282
282
  random_pop = np.random.random((N_r, self.problem.n_var))
283
283
 
284
- # check if any solution is outside of the bounds
284
+ # check if any solution is outside the bounds
285
285
  for individual in random_pop:
286
286
  for i in range(len(individual)):
287
287
  if individual[i] > self.problem.xu[i]:
@@ -341,16 +341,16 @@ class KGB(NSGA2):
341
341
  X_test = self.random_strategy(self.nr_rand_solutions)
342
342
 
343
343
  # introduce noise to vary previously useful solutions
344
- noise = np.random.normal(0, self.PERTUB_DEV, self.problem.n_var)
344
+ noise = np.random.normal(0, self.PERTURB_DEV, self.problem.n_var)
345
345
  noisy_useful_history = np.asarray(pop_useful) + noise
346
346
 
347
- # check wether solutions are within bounds
347
+ # check whether solutions are within bounds
348
348
  noisy_useful_history = self.check_boundaries(noisy_useful_history)
349
349
 
350
350
  # add noisy useful history to randomly generated solutions
351
351
  X_test = np.vstack((X_test, noisy_useful_history))
352
352
 
353
- # predict wether random solutions are useful or useless
353
+ # predict whether random solutions are useful or useless
354
354
  Y_test = model.predict(X_test)
355
355
 
356
356
  # create list of useful predicted solutions
@@ -391,7 +391,7 @@ class KGB(NSGA2):
391
391
  # if there are still not enough solutions in init_pop randomly sample previously useful solutions directly without noise to init_pop
392
392
  if len(init_pop) < self.pop_size:
393
393
 
394
- # fill up init_pop with randomly sampled solutions from pop_usefull
394
+ # fill up init_pop with randomly sampled solutions from pop_useful
395
395
  if len(pop_useful) >= self.pop_size - len(init_pop):
396
396
 
397
397
  nr_sampled_pop_useful = self.pop_size - len(init_pop)
@@ -70,10 +70,6 @@ def binary_tournament(pop, P, algorithm, **kwargs):
70
70
  class RankAndCrowdingSurvival(RankAndCrowding):
71
71
 
72
72
  def __init__(self, nds=None, crowding_func="cd"):
73
- warnings.warn(
74
- "RankAndCrowdingSurvival is deprecated and will be removed in version 0.8.*; use RankAndCrowding operator instead, which supports several and custom crowding diversity metrics.",
75
- DeprecationWarning, 2
76
- )
77
73
  super().__init__(nds, crowding_func)
78
74
 
79
75
  # =========================================================================================================
@@ -212,7 +212,7 @@ def niching(pop, n_remaining, niche_count, niche_of_individuals, dist_to_niche):
212
212
  # the minimum niche count
213
213
  min_niche_count = next_niche_count.min()
214
214
 
215
- # all niches with the minimum niche count (truncate if randomly if more niches than remaining individuals)
215
+ # all niches with the minimum niche count (truncate randomly if there are more niches than remaining individuals)
216
216
  next_niches = next_niches_list[np.where(next_niche_count == min_niche_count)[0]]
217
217
  next_niches = next_niches[np.random.permutation(len(next_niches))[:n_select]]
218
218
 
@@ -303,7 +303,7 @@ def get_extreme_points_c(F, ideal_point, extreme_points=None):
303
303
  weights = np.eye(F.shape[1])
304
304
  weights[weights == 0] = 1e6
305
305
 
306
- # add the old extreme points to never loose them for normalization
306
+ # add the old extreme points to never lose them for normalization
307
307
  _F = F
308
308
  if extreme_points is not None:
309
309
  _F = np.concatenate([extreme_points, _F], axis=0)