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.
- pymoo-0.6.1.5.dev0/MANIFEST.in +6 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/Makefile +5 -3
- {pymoo-0.6.1.2/pymoo.egg-info → pymoo-0.6.1.5.dev0}/PKG-INFO +16 -9
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/age.py +13 -7
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/age2.py +49 -19
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/ctaea.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/kgb.py +9 -9
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/nsga2.py +0 -4
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/nsga3.py +2 -2
- pymoo-0.6.1.5.dev0/pymoo/algorithms/moo/pinsga2.py +370 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rnsga3.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/es.py +3 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/config.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/algorithm.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/individual.py +8 -7
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/replacement.py +5 -5
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/survival.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/variable.py +9 -9
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/calc_perpendicular_distance.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/non_dominated_sorting.pyx +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/docs.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_autograd.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/ox.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/rnd.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/tournament.py +5 -5
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/optimize.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/df.py +4 -4
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/traveling_salesman.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/misc.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/mnn.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/fast_non_dominated_sort.py +5 -3
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/non_dominated_sorting.py +2 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/normalization.py +5 -8
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/energy.py +4 -2
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/reduction.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/reference_direction.py +3 -2
- pymoo-0.6.1.5.dev0/pymoo/util/value_functions.py +719 -0
- pymoo-0.6.1.5.dev0/pymoo/util/vf_dominator.py +99 -0
- pymoo-0.6.1.5.dev0/pymoo/version.py +1 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/heatmap.py +3 -3
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/pcp.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/radar.py +1 -1
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0/pymoo.egg-info}/PKG-INFO +16 -9
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/SOURCES.txt +4 -8
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/requires.txt +2 -2
- pymoo-0.6.1.5.dev0/pyproject.toml +59 -0
- pymoo-0.6.1.5.dev0/setup.py +8 -0
- pymoo-0.6.1.2/MANIFEST.in +0 -4
- pymoo-0.6.1.2/pymoo/cython/calc_perpendicular_distance.cpp +0 -27447
- pymoo-0.6.1.2/pymoo/cython/decomposition.cpp +0 -28940
- pymoo-0.6.1.2/pymoo/cython/hv.cpp +0 -27617
- pymoo-0.6.1.2/pymoo/cython/info.cpp +0 -5799
- pymoo-0.6.1.2/pymoo/cython/mnn.cpp +0 -30218
- pymoo-0.6.1.2/pymoo/cython/non_dominated_sorting.cpp +0 -35290
- pymoo-0.6.1.2/pymoo/cython/pruning_cd.cpp +0 -29357
- pymoo-0.6.1.2/pymoo/cython/stochastic_ranking.cpp +0 -27791
- pymoo-0.6.1.2/pymoo/version.py +0 -1
- pymoo-0.6.1.2/setup.py +0 -208
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/LICENSE +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/README.rst +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/bracket.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/genetic.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/line.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/local.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/base/meta.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/hyperparameters.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/dnsga2.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/moead.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rnsga2.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/rvea.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/sms.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/spea2.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/moo/unsga3.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/convex/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/brkga.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/cmaes.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/de.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/direct.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/g3pcx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/ga.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/ga_niching.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/isres.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/nelder.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/optuna.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pattern.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pso.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/pso_ep.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/random_search.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/nonconvex/sres.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/backtracking.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/exp.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/golden.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/quadr_interp.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/algorithms/soo/univariate/wolfe.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/adaptive.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/as_obj.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/as_penalty.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/eps.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/constraints/from_bounds.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/callback.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/crossover.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/decision_making.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/decomposition.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/duplicate.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/evaluator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/indicator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/infill.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/initialization.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mating.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/meta.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mixed.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/mutation.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/operator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/parameters.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/plot.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/population.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/problem.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/recorder.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/repair.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/result.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/sampling.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/selection.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/solution.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/core/termination.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/decomposition.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/hv.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/info.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/mnn.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/pruning_cd.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/stochastic_ranking.pyx +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/utils.pxd +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/hypervolume.cpp +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/cython/vendor/hypervolume.h +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/aasf.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/asf.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/pbi.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/perp_dist.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/tchebicheff.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/util.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/decomposition/weighted_sum.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/algorithms/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/experimental/algorithms/gde3.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/automatic.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_complex.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/grad_jax.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/gradient/toolbox/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/distance_indicator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/gd.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/gd_plus.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/exact.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/exact_2d.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/hv/monte_carlo.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/igd.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/igd_plus.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/kktpm.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/migd.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/rmetric.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/indicators/spacing.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/compromise_programming.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/high_tradeoff.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/mcdm/pseudo_weights.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/control.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/binx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/dex.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/erx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/expx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/hux.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/nox.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/pcx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/pntx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/sbx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/spx.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/crossover/ux.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/bitflip.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/gauss.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/inversion.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/nom.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/pm.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/mutation/rm.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/bounce_back.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/bounds_repair.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/inverse_penalty.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/rounding.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/to_bound.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/repair/vtype.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/lhs.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/sampling/rnd.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/selection/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/classes.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/operators/survival/rank_and_crowding/metrics.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dyn.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/cec2015.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/dynamic/misc.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/functional.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/cdtlz.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/dcdtlz.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/dtlz.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/many/wfg.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/bnh.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/carside.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/clutch.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/csi.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/ctp.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/dascmop.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/kursawe.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/modact.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/mw.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/omnitest.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/osy.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/srn.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/sympart.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/tnk.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/truss2d.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/welded_beam.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/wrm.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi/zdt.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/multi_to_single.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/ackley.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/cantilevered_beam.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/flowshop_scheduling.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/g.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/griewank.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/himmelblau.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/knapsack.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/mopta08.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/multimodal.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/pressure_vessel.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/rastrigin.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/rosenbrock.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/schwefel.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/simple.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/sphere.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/single/zakharov.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/static.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/util.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/problems/zero_to_one.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/collection.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/cv.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/default.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/delta.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/fmin.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/ftol.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/indicator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_eval.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_gen.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/max_time.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/robust.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/termination/xtol.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/archive.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/cache.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/clearing.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/column.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/display.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/multi.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/output.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/progress.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/display/single.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/dominator.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/function_loader.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/hv.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/matlab_engine.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/dominance_degree_non_dominated_sort.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/efficient_non_dominated_sort.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/naive_non_dominated_sort.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/nds/tree_based_non_dominated_sort.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/optimum.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/plotting.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/pruning_cd.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/randomized_argsort.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/construction.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/das_dennis.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/energy_layer.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/genetic_algorithm.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/incremental.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/misc.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/optimizer.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/performance.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/ref_dirs/sample_and_map.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/remote.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/roulette.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/running_metric.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/sliding_window.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/stochastic_ranking.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/util/vectors.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/cec2018.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/gta.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/hv.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_cmaes.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_coco.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/vendor/vendor_scipy.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/fitness_landscape.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/petal.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/radviz.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/scatter.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/star_coordinate.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/util.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/__init__.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/callback_video.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/one_var_one_obj.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo/visualization/video/two_var_one_obj.py +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/dependency_links.txt +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/pymoo.egg-info/top_level.txt +0 -0
- {pymoo-0.6.1.2 → pymoo-0.6.1.5.dev0}/setup.cfg +0 -0
|
@@ -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
|
-
|
|
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
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pymoo
|
|
3
|
-
Version: 0.6.1.
|
|
3
|
+
Version: 0.6.1.5.dev0
|
|
4
4
|
Summary: Multi-Objective Optimization in Python
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
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
|
-
|
|
27
|
+
perturb_dev=0.1,
|
|
28
28
|
save_ps=False,
|
|
29
29
|
**kwargs,
|
|
30
30
|
):
|
|
31
31
|
|
|
32
32
|
super().__init__(**kwargs)
|
|
33
|
-
self.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)
|