pymoo 0.6.1.5.dev0__cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.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.
- pymoo/__init__.py +3 -0
- pymoo/algorithms/__init__.py +0 -0
- pymoo/algorithms/base/__init__.py +0 -0
- pymoo/algorithms/base/bracket.py +38 -0
- pymoo/algorithms/base/genetic.py +109 -0
- pymoo/algorithms/base/line.py +62 -0
- pymoo/algorithms/base/local.py +39 -0
- pymoo/algorithms/base/meta.py +79 -0
- pymoo/algorithms/hyperparameters.py +89 -0
- pymoo/algorithms/moo/__init__.py +0 -0
- pymoo/algorithms/moo/age.py +310 -0
- pymoo/algorithms/moo/age2.py +194 -0
- pymoo/algorithms/moo/ctaea.py +298 -0
- pymoo/algorithms/moo/dnsga2.py +76 -0
- pymoo/algorithms/moo/kgb.py +446 -0
- pymoo/algorithms/moo/moead.py +183 -0
- pymoo/algorithms/moo/nsga2.py +113 -0
- pymoo/algorithms/moo/nsga3.py +358 -0
- pymoo/algorithms/moo/pinsga2.py +370 -0
- pymoo/algorithms/moo/rnsga2.py +188 -0
- pymoo/algorithms/moo/rnsga3.py +246 -0
- pymoo/algorithms/moo/rvea.py +214 -0
- pymoo/algorithms/moo/sms.py +195 -0
- pymoo/algorithms/moo/spea2.py +190 -0
- pymoo/algorithms/moo/unsga3.py +47 -0
- pymoo/algorithms/soo/__init__.py +0 -0
- pymoo/algorithms/soo/convex/__init__.py +0 -0
- pymoo/algorithms/soo/nonconvex/__init__.py +0 -0
- pymoo/algorithms/soo/nonconvex/brkga.py +161 -0
- pymoo/algorithms/soo/nonconvex/cmaes.py +554 -0
- pymoo/algorithms/soo/nonconvex/de.py +279 -0
- pymoo/algorithms/soo/nonconvex/direct.py +149 -0
- pymoo/algorithms/soo/nonconvex/es.py +203 -0
- pymoo/algorithms/soo/nonconvex/g3pcx.py +94 -0
- pymoo/algorithms/soo/nonconvex/ga.py +93 -0
- pymoo/algorithms/soo/nonconvex/ga_niching.py +223 -0
- pymoo/algorithms/soo/nonconvex/isres.py +74 -0
- pymoo/algorithms/soo/nonconvex/nelder.py +251 -0
- pymoo/algorithms/soo/nonconvex/optuna.py +80 -0
- pymoo/algorithms/soo/nonconvex/pattern.py +183 -0
- pymoo/algorithms/soo/nonconvex/pso.py +399 -0
- pymoo/algorithms/soo/nonconvex/pso_ep.py +297 -0
- pymoo/algorithms/soo/nonconvex/random_search.py +25 -0
- pymoo/algorithms/soo/nonconvex/sres.py +56 -0
- pymoo/algorithms/soo/univariate/__init__.py +0 -0
- pymoo/algorithms/soo/univariate/backtracking.py +59 -0
- pymoo/algorithms/soo/univariate/exp.py +46 -0
- pymoo/algorithms/soo/univariate/golden.py +65 -0
- pymoo/algorithms/soo/univariate/quadr_interp.py +81 -0
- pymoo/algorithms/soo/univariate/wolfe.py +163 -0
- pymoo/config.py +33 -0
- pymoo/constraints/__init__.py +3 -0
- pymoo/constraints/adaptive.py +62 -0
- pymoo/constraints/as_obj.py +56 -0
- pymoo/constraints/as_penalty.py +41 -0
- pymoo/constraints/eps.py +26 -0
- pymoo/constraints/from_bounds.py +36 -0
- pymoo/core/__init__.py +0 -0
- pymoo/core/algorithm.py +394 -0
- pymoo/core/callback.py +38 -0
- pymoo/core/crossover.py +77 -0
- pymoo/core/decision_making.py +102 -0
- pymoo/core/decomposition.py +76 -0
- pymoo/core/duplicate.py +163 -0
- pymoo/core/evaluator.py +116 -0
- pymoo/core/indicator.py +34 -0
- pymoo/core/individual.py +784 -0
- pymoo/core/infill.py +64 -0
- pymoo/core/initialization.py +42 -0
- pymoo/core/mating.py +39 -0
- pymoo/core/meta.py +21 -0
- pymoo/core/mixed.py +165 -0
- pymoo/core/mutation.py +44 -0
- pymoo/core/operator.py +40 -0
- pymoo/core/parameters.py +134 -0
- pymoo/core/plot.py +210 -0
- pymoo/core/population.py +180 -0
- pymoo/core/problem.py +460 -0
- pymoo/core/recorder.py +99 -0
- pymoo/core/repair.py +23 -0
- pymoo/core/replacement.py +96 -0
- pymoo/core/result.py +52 -0
- pymoo/core/sampling.py +43 -0
- pymoo/core/selection.py +61 -0
- pymoo/core/solution.py +10 -0
- pymoo/core/survival.py +103 -0
- pymoo/core/termination.py +70 -0
- pymoo/core/variable.py +399 -0
- pymoo/cython/__init__.py +0 -0
- pymoo/cython/calc_perpendicular_distance.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/calc_perpendicular_distance.pyx +67 -0
- pymoo/cython/decomposition.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/decomposition.pyx +165 -0
- pymoo/cython/hv.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/hv.pyx +18 -0
- pymoo/cython/info.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/info.pyx +5 -0
- pymoo/cython/mnn.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/mnn.pyx +273 -0
- pymoo/cython/non_dominated_sorting.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/non_dominated_sorting.pyx +645 -0
- pymoo/cython/pruning_cd.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/pruning_cd.pyx +197 -0
- pymoo/cython/stochastic_ranking.cpython-312-x86_64-linux-gnu.so +0 -0
- pymoo/cython/stochastic_ranking.pyx +49 -0
- pymoo/cython/utils.pxd +129 -0
- pymoo/cython/vendor/__init__.py +0 -0
- pymoo/cython/vendor/hypervolume.cpp +1621 -0
- pymoo/cython/vendor/hypervolume.h +63 -0
- pymoo/decomposition/__init__.py +0 -0
- pymoo/decomposition/aasf.py +24 -0
- pymoo/decomposition/asf.py +10 -0
- pymoo/decomposition/pbi.py +13 -0
- pymoo/decomposition/perp_dist.py +13 -0
- pymoo/decomposition/tchebicheff.py +11 -0
- pymoo/decomposition/util.py +13 -0
- pymoo/decomposition/weighted_sum.py +8 -0
- pymoo/docs.py +187 -0
- pymoo/experimental/__init__.py +0 -0
- pymoo/experimental/algorithms/__init__.py +0 -0
- pymoo/experimental/algorithms/gde3.py +57 -0
- pymoo/gradient/__init__.py +21 -0
- pymoo/gradient/automatic.py +57 -0
- pymoo/gradient/grad_autograd.py +105 -0
- pymoo/gradient/grad_complex.py +35 -0
- pymoo/gradient/grad_jax.py +51 -0
- pymoo/gradient/toolbox/__init__.py +6 -0
- pymoo/indicators/__init__.py +0 -0
- pymoo/indicators/distance_indicator.py +55 -0
- pymoo/indicators/gd.py +7 -0
- pymoo/indicators/gd_plus.py +7 -0
- pymoo/indicators/hv/__init__.py +63 -0
- pymoo/indicators/hv/exact.py +71 -0
- pymoo/indicators/hv/exact_2d.py +102 -0
- pymoo/indicators/hv/monte_carlo.py +74 -0
- pymoo/indicators/igd.py +7 -0
- pymoo/indicators/igd_plus.py +7 -0
- pymoo/indicators/kktpm.py +151 -0
- pymoo/indicators/migd.py +55 -0
- pymoo/indicators/rmetric.py +203 -0
- pymoo/indicators/spacing.py +52 -0
- pymoo/mcdm/__init__.py +0 -0
- pymoo/mcdm/compromise_programming.py +19 -0
- pymoo/mcdm/high_tradeoff.py +40 -0
- pymoo/mcdm/pseudo_weights.py +32 -0
- pymoo/operators/__init__.py +0 -0
- pymoo/operators/control.py +187 -0
- pymoo/operators/crossover/__init__.py +0 -0
- pymoo/operators/crossover/binx.py +45 -0
- pymoo/operators/crossover/dex.py +122 -0
- pymoo/operators/crossover/erx.py +162 -0
- pymoo/operators/crossover/expx.py +51 -0
- pymoo/operators/crossover/hux.py +37 -0
- pymoo/operators/crossover/nox.py +13 -0
- pymoo/operators/crossover/ox.py +84 -0
- pymoo/operators/crossover/pcx.py +82 -0
- pymoo/operators/crossover/pntx.py +49 -0
- pymoo/operators/crossover/sbx.py +125 -0
- pymoo/operators/crossover/spx.py +5 -0
- pymoo/operators/crossover/ux.py +20 -0
- pymoo/operators/mutation/__init__.py +0 -0
- pymoo/operators/mutation/bitflip.py +17 -0
- pymoo/operators/mutation/gauss.py +58 -0
- pymoo/operators/mutation/inversion.py +42 -0
- pymoo/operators/mutation/nom.py +7 -0
- pymoo/operators/mutation/pm.py +94 -0
- pymoo/operators/mutation/rm.py +23 -0
- pymoo/operators/repair/__init__.py +0 -0
- pymoo/operators/repair/bounce_back.py +32 -0
- pymoo/operators/repair/bounds_repair.py +95 -0
- pymoo/operators/repair/inverse_penalty.py +89 -0
- pymoo/operators/repair/rounding.py +18 -0
- pymoo/operators/repair/to_bound.py +31 -0
- pymoo/operators/repair/vtype.py +11 -0
- pymoo/operators/sampling/__init__.py +0 -0
- pymoo/operators/sampling/lhs.py +73 -0
- pymoo/operators/sampling/rnd.py +50 -0
- pymoo/operators/selection/__init__.py +0 -0
- pymoo/operators/selection/rnd.py +72 -0
- pymoo/operators/selection/tournament.py +76 -0
- pymoo/operators/survival/__init__.py +0 -0
- pymoo/operators/survival/rank_and_crowding/__init__.py +1 -0
- pymoo/operators/survival/rank_and_crowding/classes.py +209 -0
- pymoo/operators/survival/rank_and_crowding/metrics.py +208 -0
- pymoo/optimize.py +72 -0
- pymoo/problems/__init__.py +157 -0
- pymoo/problems/dyn.py +47 -0
- pymoo/problems/dynamic/__init__.py +0 -0
- pymoo/problems/dynamic/cec2015.py +108 -0
- pymoo/problems/dynamic/df.py +452 -0
- pymoo/problems/dynamic/misc.py +167 -0
- pymoo/problems/functional.py +48 -0
- pymoo/problems/many/__init__.py +5 -0
- pymoo/problems/many/cdtlz.py +159 -0
- pymoo/problems/many/dcdtlz.py +88 -0
- pymoo/problems/many/dtlz.py +264 -0
- pymoo/problems/many/wfg.py +550 -0
- pymoo/problems/multi/__init__.py +14 -0
- pymoo/problems/multi/bnh.py +34 -0
- pymoo/problems/multi/carside.py +48 -0
- pymoo/problems/multi/clutch.py +104 -0
- pymoo/problems/multi/csi.py +55 -0
- pymoo/problems/multi/ctp.py +198 -0
- pymoo/problems/multi/dascmop.py +213 -0
- pymoo/problems/multi/kursawe.py +25 -0
- pymoo/problems/multi/modact.py +68 -0
- pymoo/problems/multi/mw.py +400 -0
- pymoo/problems/multi/omnitest.py +48 -0
- pymoo/problems/multi/osy.py +32 -0
- pymoo/problems/multi/srn.py +28 -0
- pymoo/problems/multi/sympart.py +94 -0
- pymoo/problems/multi/tnk.py +24 -0
- pymoo/problems/multi/truss2d.py +83 -0
- pymoo/problems/multi/welded_beam.py +41 -0
- pymoo/problems/multi/wrm.py +36 -0
- pymoo/problems/multi/zdt.py +151 -0
- pymoo/problems/multi_to_single.py +22 -0
- pymoo/problems/single/__init__.py +12 -0
- pymoo/problems/single/ackley.py +24 -0
- pymoo/problems/single/cantilevered_beam.py +34 -0
- pymoo/problems/single/flowshop_scheduling.py +112 -0
- pymoo/problems/single/g.py +874 -0
- pymoo/problems/single/griewank.py +18 -0
- pymoo/problems/single/himmelblau.py +15 -0
- pymoo/problems/single/knapsack.py +48 -0
- pymoo/problems/single/mopta08.py +26 -0
- pymoo/problems/single/multimodal.py +20 -0
- pymoo/problems/single/pressure_vessel.py +30 -0
- pymoo/problems/single/rastrigin.py +20 -0
- pymoo/problems/single/rosenbrock.py +22 -0
- pymoo/problems/single/schwefel.py +18 -0
- pymoo/problems/single/simple.py +13 -0
- pymoo/problems/single/sphere.py +19 -0
- pymoo/problems/single/traveling_salesman.py +79 -0
- pymoo/problems/single/zakharov.py +19 -0
- pymoo/problems/static.py +14 -0
- pymoo/problems/util.py +42 -0
- pymoo/problems/zero_to_one.py +27 -0
- pymoo/termination/__init__.py +23 -0
- pymoo/termination/collection.py +12 -0
- pymoo/termination/cv.py +48 -0
- pymoo/termination/default.py +45 -0
- pymoo/termination/delta.py +64 -0
- pymoo/termination/fmin.py +16 -0
- pymoo/termination/ftol.py +144 -0
- pymoo/termination/indicator.py +49 -0
- pymoo/termination/max_eval.py +14 -0
- pymoo/termination/max_gen.py +15 -0
- pymoo/termination/max_time.py +20 -0
- pymoo/termination/robust.py +34 -0
- pymoo/termination/xtol.py +33 -0
- pymoo/util/__init__.py +0 -0
- pymoo/util/archive.py +150 -0
- pymoo/util/cache.py +29 -0
- pymoo/util/clearing.py +82 -0
- pymoo/util/display/__init__.py +0 -0
- pymoo/util/display/column.py +52 -0
- pymoo/util/display/display.py +34 -0
- pymoo/util/display/multi.py +96 -0
- pymoo/util/display/output.py +53 -0
- pymoo/util/display/progress.py +54 -0
- pymoo/util/display/single.py +67 -0
- pymoo/util/dominator.py +67 -0
- pymoo/util/function_loader.py +129 -0
- pymoo/util/hv.py +23 -0
- pymoo/util/matlab_engine.py +39 -0
- pymoo/util/misc.py +460 -0
- pymoo/util/mnn.py +70 -0
- pymoo/util/nds/__init__.py +0 -0
- pymoo/util/nds/dominance_degree_non_dominated_sort.py +159 -0
- pymoo/util/nds/efficient_non_dominated_sort.py +152 -0
- pymoo/util/nds/fast_non_dominated_sort.py +70 -0
- pymoo/util/nds/naive_non_dominated_sort.py +36 -0
- pymoo/util/nds/non_dominated_sorting.py +67 -0
- pymoo/util/nds/tree_based_non_dominated_sort.py +133 -0
- pymoo/util/normalization.py +312 -0
- pymoo/util/optimum.py +42 -0
- pymoo/util/plotting.py +177 -0
- pymoo/util/pruning_cd.py +89 -0
- pymoo/util/randomized_argsort.py +60 -0
- pymoo/util/ref_dirs/__init__.py +24 -0
- pymoo/util/ref_dirs/construction.py +88 -0
- pymoo/util/ref_dirs/das_dennis.py +52 -0
- pymoo/util/ref_dirs/energy.py +319 -0
- pymoo/util/ref_dirs/energy_layer.py +119 -0
- pymoo/util/ref_dirs/genetic_algorithm.py +63 -0
- pymoo/util/ref_dirs/incremental.py +68 -0
- pymoo/util/ref_dirs/misc.py +128 -0
- pymoo/util/ref_dirs/optimizer.py +59 -0
- pymoo/util/ref_dirs/performance.py +162 -0
- pymoo/util/ref_dirs/reduction.py +85 -0
- pymoo/util/ref_dirs/sample_and_map.py +24 -0
- pymoo/util/reference_direction.py +260 -0
- pymoo/util/remote.py +55 -0
- pymoo/util/roulette.py +27 -0
- pymoo/util/running_metric.py +128 -0
- pymoo/util/sliding_window.py +25 -0
- pymoo/util/stochastic_ranking.py +32 -0
- pymoo/util/value_functions.py +719 -0
- pymoo/util/vectors.py +40 -0
- pymoo/util/vf_dominator.py +99 -0
- pymoo/vendor/__init__.py +0 -0
- pymoo/vendor/cec2018.py +398 -0
- pymoo/vendor/gta.py +617 -0
- pymoo/vendor/hv.py +267 -0
- pymoo/vendor/vendor_cmaes.py +412 -0
- pymoo/vendor/vendor_coco.py +81 -0
- pymoo/vendor/vendor_scipy.py +232 -0
- pymoo/version.py +1 -0
- pymoo/visualization/__init__.py +8 -0
- pymoo/visualization/fitness_landscape.py +127 -0
- pymoo/visualization/heatmap.py +123 -0
- pymoo/visualization/pcp.py +120 -0
- pymoo/visualization/petal.py +91 -0
- pymoo/visualization/radar.py +108 -0
- pymoo/visualization/radviz.py +68 -0
- pymoo/visualization/scatter.py +150 -0
- pymoo/visualization/star_coordinate.py +75 -0
- pymoo/visualization/util.py +123 -0
- pymoo/visualization/video/__init__.py +0 -0
- pymoo/visualization/video/callback_video.py +82 -0
- pymoo/visualization/video/one_var_one_obj.py +57 -0
- pymoo/visualization/video/two_var_one_obj.py +62 -0
- pymoo-0.6.1.5.dev0.dist-info/METADATA +187 -0
- pymoo-0.6.1.5.dev0.dist-info/RECORD +328 -0
- pymoo-0.6.1.5.dev0.dist-info/WHEEL +6 -0
- pymoo-0.6.1.5.dev0.dist-info/licenses/LICENSE +191 -0
- pymoo-0.6.1.5.dev0.dist-info/top_level.txt +1 -0
pymoo/optimize.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import copy
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def minimize(problem, algorithm, termination=None, copy_algorithm=True, copy_termination=True, **kwargs):
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
Minimization of function of one or more variables, objectives and constraints.
|
|
8
|
+
|
|
9
|
+
This is used as a convenience function to execute several algorithms with default settings which turned
|
|
10
|
+
out to work for a test single. However, evolutionary computations utilizes the idea of customizing a
|
|
11
|
+
meta-algorithm. Customizing the algorithm using the object-oriented interface is recommended to improve the
|
|
12
|
+
convergence.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
|
|
17
|
+
problem : :class:`~pymoo.core.problem.Problem`
|
|
18
|
+
A problem object which is defined using pymoo.
|
|
19
|
+
|
|
20
|
+
algorithm : :class:`~pymoo.core.algorithm.Algorithm`
|
|
21
|
+
The algorithm object that should be used for the optimization.
|
|
22
|
+
|
|
23
|
+
termination : :class:`~pymoo.core.termination.Termination` or tuple
|
|
24
|
+
The termination criterion that is used to stop the algorithm.
|
|
25
|
+
|
|
26
|
+
seed : integer
|
|
27
|
+
The random seed to be used.
|
|
28
|
+
|
|
29
|
+
verbose : bool
|
|
30
|
+
Whether output should be printed or not.
|
|
31
|
+
|
|
32
|
+
display : :class:`~pymoo.util.display.Display`
|
|
33
|
+
Each algorithm has a default display object for printouts. However, it can be overwritten if desired.
|
|
34
|
+
|
|
35
|
+
callback : :class:`~pymoo.core.callback.Callback`
|
|
36
|
+
A callback object which is called each iteration of the algorithm.
|
|
37
|
+
|
|
38
|
+
save_history : bool
|
|
39
|
+
Whether the history should be stored or not.
|
|
40
|
+
|
|
41
|
+
copy_algorithm : bool
|
|
42
|
+
Whether the algorithm object should be copied before optimization.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
res : :class:`~pymoo.core.result.Result`
|
|
47
|
+
The optimization result represented as an object.
|
|
48
|
+
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
# create a copy of the algorithm object to ensure no side effects
|
|
52
|
+
if copy_algorithm:
|
|
53
|
+
algorithm = copy.deepcopy(algorithm)
|
|
54
|
+
|
|
55
|
+
# initialize the algorithm object given a problem - if not set already
|
|
56
|
+
if algorithm.problem is None:
|
|
57
|
+
if termination is not None:
|
|
58
|
+
|
|
59
|
+
if copy_termination:
|
|
60
|
+
termination = copy.deepcopy(termination)
|
|
61
|
+
|
|
62
|
+
kwargs["termination"] = termination
|
|
63
|
+
|
|
64
|
+
algorithm.setup(problem, **kwargs)
|
|
65
|
+
|
|
66
|
+
# actually execute the algorithm
|
|
67
|
+
res = algorithm.run()
|
|
68
|
+
|
|
69
|
+
# store the deep copied algorithm in the result object
|
|
70
|
+
res.algorithm = algorithm
|
|
71
|
+
|
|
72
|
+
return res
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
|
|
2
|
+
def get_problem(name, *args, **kwargs):
|
|
3
|
+
name = name.lower()
|
|
4
|
+
|
|
5
|
+
if name.startswith("bbob-"):
|
|
6
|
+
from pymoo.vendor.vendor_coco import COCOProblem
|
|
7
|
+
return COCOProblem(name.lower(), **kwargs)
|
|
8
|
+
|
|
9
|
+
from pymoo.problems.multi import BNH, Carside
|
|
10
|
+
from pymoo.problems.multi import CTP1, CTP2, CTP3, CTP4, CTP5, CTP6, CTP7, CTP8
|
|
11
|
+
from pymoo.problems.multi import DASCMOP1, DASCMOP2, DASCMOP3, DASCMOP4, DASCMOP5, DASCMOP6, DASCMOP7, DASCMOP8, \
|
|
12
|
+
DASCMOP9
|
|
13
|
+
from pymoo.problems.multi import MODAct, MW1, MW2, MW3, MW4, MW5, MW6, MW7, MW8, MW9, MW10, MW11, MW12, MW13, MW14
|
|
14
|
+
from pymoo.problems.single import Ackley
|
|
15
|
+
from pymoo.problems.many import DTLZ1, C1DTLZ1, DC1DTLZ1, DC1DTLZ3, DC2DTLZ1, DC2DTLZ3, DC3DTLZ1, DC3DTLZ3, C1DTLZ3, \
|
|
16
|
+
C2DTLZ2, C3DTLZ1, C3DTLZ4, ScaledDTLZ1, ConvexDTLZ2, ConvexDTLZ4, DTLZ2, DTLZ3, DTLZ4, DTLZ5, DTLZ6, DTLZ7, \
|
|
17
|
+
InvertedDTLZ1, WFG1, WFG2, WFG3, WFG4, WFG5, WFG6, WFG7, WFG8, WFG9
|
|
18
|
+
from pymoo.problems.multi import Kursawe, OSY, SRN, TNK, Truss2D, WeldedBeam, ZDT1, ZDT2, ZDT3, ZDT4, ZDT5, ZDT6
|
|
19
|
+
from pymoo.problems.single import CantileveredBeam, Griewank, Himmelblau, Knapsack, PressureVessel, Rastrigin, \
|
|
20
|
+
Rosenbrock, Schwefel, Sphere, Zakharov
|
|
21
|
+
from pymoo.problems.single import G1, G2, G3, G4, G5, G6, G7, G8, G9, G10, G11, G12, G13, G14, G15, G16, G17, G18, \
|
|
22
|
+
G19, G20, G21, G22, G23, G24
|
|
23
|
+
from pymoo.problems.dynamic.df import DF1, DF2, DF3, DF4, DF5, DF6, DF7, DF8, DF9, DF10, DF11, DF12, DF13, DF14
|
|
24
|
+
|
|
25
|
+
PROBLEM = {
|
|
26
|
+
'ackley': Ackley,
|
|
27
|
+
'bnh': BNH,
|
|
28
|
+
'carside': Carside,
|
|
29
|
+
'ctp1': CTP1,
|
|
30
|
+
'ctp2': CTP2,
|
|
31
|
+
'ctp3': CTP3,
|
|
32
|
+
'ctp4': CTP4,
|
|
33
|
+
'ctp5': CTP5,
|
|
34
|
+
'ctp6': CTP6,
|
|
35
|
+
'ctp7': CTP7,
|
|
36
|
+
'ctp8': CTP8,
|
|
37
|
+
'dascmop1': DASCMOP1,
|
|
38
|
+
'dascmop2': DASCMOP2,
|
|
39
|
+
'dascmop3': DASCMOP3,
|
|
40
|
+
'dascmop4': DASCMOP4,
|
|
41
|
+
'dascmop5': DASCMOP5,
|
|
42
|
+
'dascmop6': DASCMOP6,
|
|
43
|
+
'dascmop7': DASCMOP7,
|
|
44
|
+
'dascmop8': DASCMOP8,
|
|
45
|
+
'dascmop9': DASCMOP9,
|
|
46
|
+
'df1': DF1,
|
|
47
|
+
'df2': DF2,
|
|
48
|
+
'df3': DF3,
|
|
49
|
+
'df4': DF4,
|
|
50
|
+
'df5': DF5,
|
|
51
|
+
'df6': DF6,
|
|
52
|
+
'df7': DF7,
|
|
53
|
+
'df8': DF8,
|
|
54
|
+
'df9': DF9,
|
|
55
|
+
'df10': DF10,
|
|
56
|
+
'df11': DF11,
|
|
57
|
+
'df12': DF12,
|
|
58
|
+
'df13': DF13,
|
|
59
|
+
'df14': DF14,
|
|
60
|
+
'modact': MODAct,
|
|
61
|
+
'mw1': MW1,
|
|
62
|
+
'mw2': MW2,
|
|
63
|
+
'mw3': MW3,
|
|
64
|
+
'mw4': MW4,
|
|
65
|
+
'mw5': MW5,
|
|
66
|
+
'mw6': MW6,
|
|
67
|
+
'mw7': MW7,
|
|
68
|
+
'mw8': MW8,
|
|
69
|
+
'mw9': MW9,
|
|
70
|
+
'mw10': MW10,
|
|
71
|
+
'mw11': MW11,
|
|
72
|
+
'mw12': MW12,
|
|
73
|
+
'mw13': MW13,
|
|
74
|
+
'mw14': MW14,
|
|
75
|
+
'dtlz1^-1': InvertedDTLZ1,
|
|
76
|
+
'dtlz1': DTLZ1,
|
|
77
|
+
'dtlz2': DTLZ2,
|
|
78
|
+
'dtlz3': DTLZ3,
|
|
79
|
+
'dtlz4': DTLZ4,
|
|
80
|
+
'dtlz5': DTLZ5,
|
|
81
|
+
'dtlz6': DTLZ6,
|
|
82
|
+
'dtlz7': DTLZ7,
|
|
83
|
+
'convex_dtlz2': ConvexDTLZ2,
|
|
84
|
+
'convex_dtlz4': ConvexDTLZ4,
|
|
85
|
+
'sdtlz1': ScaledDTLZ1,
|
|
86
|
+
'c1dtlz1': C1DTLZ1,
|
|
87
|
+
'c1dtlz3': C1DTLZ3,
|
|
88
|
+
'c2dtlz2': C2DTLZ2,
|
|
89
|
+
'c3dtlz1': C3DTLZ1,
|
|
90
|
+
'c3dtlz4': C3DTLZ4,
|
|
91
|
+
'dc1dtlz1': DC1DTLZ1,
|
|
92
|
+
'dc1dtlz3': DC1DTLZ3,
|
|
93
|
+
'dc2dtlz1': DC2DTLZ1,
|
|
94
|
+
'dc2dtlz3': DC2DTLZ3,
|
|
95
|
+
'dc3dtlz1': DC3DTLZ1,
|
|
96
|
+
'dc3dtlz3': DC3DTLZ3,
|
|
97
|
+
'cantilevered_beam': CantileveredBeam,
|
|
98
|
+
'griewank': Griewank,
|
|
99
|
+
'himmelblau': Himmelblau,
|
|
100
|
+
'knp': Knapsack,
|
|
101
|
+
'kursawe': Kursawe,
|
|
102
|
+
'osy': OSY,
|
|
103
|
+
'pressure_vessel': PressureVessel,
|
|
104
|
+
'rastrigin': Rastrigin,
|
|
105
|
+
'rosenbrock': Rosenbrock,
|
|
106
|
+
'schwefel': Schwefel,
|
|
107
|
+
'sphere': Sphere,
|
|
108
|
+
'srn': SRN,
|
|
109
|
+
'tnk': TNK,
|
|
110
|
+
'truss2d': Truss2D,
|
|
111
|
+
'welded_beam': WeldedBeam,
|
|
112
|
+
'zakharov': Zakharov,
|
|
113
|
+
'zdt1': ZDT1,
|
|
114
|
+
'zdt2': ZDT2,
|
|
115
|
+
'zdt3': ZDT3,
|
|
116
|
+
'zdt4': ZDT4,
|
|
117
|
+
'zdt5': ZDT5,
|
|
118
|
+
'zdt6': ZDT6,
|
|
119
|
+
'g1': G1,
|
|
120
|
+
'g2': G2,
|
|
121
|
+
'g3': G3,
|
|
122
|
+
'g4': G4,
|
|
123
|
+
'g5': G5,
|
|
124
|
+
'g6': G6,
|
|
125
|
+
'g7': G7,
|
|
126
|
+
'g8': G8,
|
|
127
|
+
'g9': G9,
|
|
128
|
+
'g10': G10,
|
|
129
|
+
'g11': G11,
|
|
130
|
+
'g12': G12,
|
|
131
|
+
'g13': G13,
|
|
132
|
+
'g14': G14,
|
|
133
|
+
'g15': G15,
|
|
134
|
+
'g16': G16,
|
|
135
|
+
'g17': G17,
|
|
136
|
+
'g18': G18,
|
|
137
|
+
'g19': G19,
|
|
138
|
+
'g20': G20,
|
|
139
|
+
'g21': G21,
|
|
140
|
+
'g22': G22,
|
|
141
|
+
'g23': G23,
|
|
142
|
+
'g24': G24,
|
|
143
|
+
'wfg1': WFG1,
|
|
144
|
+
'wfg2': WFG2,
|
|
145
|
+
'wfg3': WFG3,
|
|
146
|
+
'wfg4': WFG4,
|
|
147
|
+
'wfg5': WFG5,
|
|
148
|
+
'wfg6': WFG6,
|
|
149
|
+
'wfg7': WFG7,
|
|
150
|
+
'wfg8': WFG8,
|
|
151
|
+
'wfg9': WFG9
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if name not in PROBLEM:
|
|
155
|
+
raise Exception("Problem not found.")
|
|
156
|
+
|
|
157
|
+
return PROBLEM[name](*args, **kwargs)
|
pymoo/problems/dyn.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from abc import abstractmethod, ABC
|
|
2
|
+
|
|
3
|
+
from pymoo.core.callback import Callback
|
|
4
|
+
from pymoo.core.problem import Problem
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DynamicProblem(Problem, ABC):
|
|
8
|
+
pass
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DynamicTestProblem(DynamicProblem, ABC):
|
|
12
|
+
|
|
13
|
+
def __init__(self, nt, taut, tau=1, time=None, **kwargs):
|
|
14
|
+
super().__init__(**kwargs)
|
|
15
|
+
self.tau = tau
|
|
16
|
+
self.nt = nt
|
|
17
|
+
self.taut = taut
|
|
18
|
+
self._time = time
|
|
19
|
+
|
|
20
|
+
def tic(self, elapsed=1):
|
|
21
|
+
|
|
22
|
+
# increase the time counter by one
|
|
23
|
+
self.tau += elapsed
|
|
24
|
+
|
|
25
|
+
# remove the cache of the problem to recreate ps and pf
|
|
26
|
+
self.__dict__["cache"] = {}
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def time(self):
|
|
30
|
+
if self._time is not None:
|
|
31
|
+
return self._time
|
|
32
|
+
else:
|
|
33
|
+
return 1 / self.nt * (self.tau // self.taut)
|
|
34
|
+
|
|
35
|
+
@time.setter
|
|
36
|
+
def time(self, value):
|
|
37
|
+
self._time = value
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class TimeSimulation(Callback):
|
|
41
|
+
|
|
42
|
+
def update(self, algorithm):
|
|
43
|
+
problem = algorithm.problem
|
|
44
|
+
if hasattr(problem, "tic"):
|
|
45
|
+
problem.tic()
|
|
46
|
+
else:
|
|
47
|
+
raise Exception("TimeSimulation can only be used for dynamic test problems.")
|
|
File without changes
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from pymoo.problems.dyn import DynamicTestProblem
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DynamicCEC2015(DynamicTestProblem):
|
|
7
|
+
|
|
8
|
+
def __init__(self, n_var=10, nt=10, taut=20, n_obj=2, xl=0.0, xu=1.0, vtype=float, **kwargs):
|
|
9
|
+
super().__init__(nt, taut, n_var=n_var, n_obj=n_obj, xl=xl, xu=xu, vtype=vtype, **kwargs)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FDA2DEB(DynamicCEC2015):
|
|
13
|
+
|
|
14
|
+
def __init__(self, n_var=30, **kwargs):
|
|
15
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
16
|
+
|
|
17
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
18
|
+
t = self.time
|
|
19
|
+
from pymoo.vendor.gta import fda2_deb as f
|
|
20
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FDA4(DynamicCEC2015):
|
|
24
|
+
|
|
25
|
+
def __init__(self, n_var=30, **kwargs):
|
|
26
|
+
super().__init__(n_var=n_var, n_obj=3, **kwargs)
|
|
27
|
+
|
|
28
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
29
|
+
t = self.time
|
|
30
|
+
from pymoo.vendor.gta import FDA4 as f
|
|
31
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class FDA5(DynamicCEC2015):
|
|
35
|
+
|
|
36
|
+
def __init__(self, n_var=30, **kwargs):
|
|
37
|
+
super().__init__(n_var=n_var, n_obj=3, **kwargs)
|
|
38
|
+
|
|
39
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
40
|
+
t = self.time
|
|
41
|
+
from pymoo.vendor.gta import FDA5 as f
|
|
42
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class DIMP2(DynamicCEC2015):
|
|
46
|
+
|
|
47
|
+
def __init__(self, n_var=30, **kwargs):
|
|
48
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
49
|
+
|
|
50
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
51
|
+
t = self.time
|
|
52
|
+
from pymoo.vendor.gta import DIMP2 as f
|
|
53
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class dMOP2(DynamicCEC2015):
|
|
57
|
+
|
|
58
|
+
def __init__(self, n_var=30, **kwargs):
|
|
59
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
60
|
+
|
|
61
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
62
|
+
t = self.time
|
|
63
|
+
from pymoo.vendor.gta import dMOP2 as f
|
|
64
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class dMOP3(DynamicCEC2015):
|
|
68
|
+
|
|
69
|
+
def __init__(self, n_var=30, **kwargs):
|
|
70
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
71
|
+
|
|
72
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
73
|
+
t = self.time
|
|
74
|
+
from pymoo.vendor.gta import dMOP3 as f
|
|
75
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class HE2(DynamicCEC2015):
|
|
79
|
+
|
|
80
|
+
def __init__(self, n_var=30, **kwargs):
|
|
81
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
82
|
+
|
|
83
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
84
|
+
t = self.time
|
|
85
|
+
from pymoo.vendor.gta import HE2 as f
|
|
86
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class HE7(DynamicCEC2015):
|
|
90
|
+
|
|
91
|
+
def __init__(self, n_var=10, **kwargs):
|
|
92
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
93
|
+
|
|
94
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
95
|
+
t = self.time
|
|
96
|
+
from pymoo.vendor.gta import HE7 as f
|
|
97
|
+
out["F"] = np.array([f(x, t) for x in X])
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class HE9(DynamicCEC2015):
|
|
101
|
+
|
|
102
|
+
def __init__(self, n_var=10, **kwargs):
|
|
103
|
+
super().__init__(n_var=n_var, **kwargs)
|
|
104
|
+
|
|
105
|
+
def _evaluate(self, X, out, *args, **kwargs):
|
|
106
|
+
t = self.time
|
|
107
|
+
from pymoo.vendor.gta import HE9 as f
|
|
108
|
+
out["F"] = np.array([f(x, t) for x in X])
|