pymoo 0.6.1.5.dev0__cp311-cp311-macosx_11_0_arm64.whl

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

Potentially problematic release.


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

Files changed (328) hide show
  1. pymoo/__init__.py +3 -0
  2. pymoo/algorithms/__init__.py +0 -0
  3. pymoo/algorithms/base/__init__.py +0 -0
  4. pymoo/algorithms/base/bracket.py +38 -0
  5. pymoo/algorithms/base/genetic.py +109 -0
  6. pymoo/algorithms/base/line.py +62 -0
  7. pymoo/algorithms/base/local.py +39 -0
  8. pymoo/algorithms/base/meta.py +79 -0
  9. pymoo/algorithms/hyperparameters.py +89 -0
  10. pymoo/algorithms/moo/__init__.py +0 -0
  11. pymoo/algorithms/moo/age.py +310 -0
  12. pymoo/algorithms/moo/age2.py +194 -0
  13. pymoo/algorithms/moo/ctaea.py +298 -0
  14. pymoo/algorithms/moo/dnsga2.py +76 -0
  15. pymoo/algorithms/moo/kgb.py +446 -0
  16. pymoo/algorithms/moo/moead.py +183 -0
  17. pymoo/algorithms/moo/nsga2.py +113 -0
  18. pymoo/algorithms/moo/nsga3.py +358 -0
  19. pymoo/algorithms/moo/pinsga2.py +370 -0
  20. pymoo/algorithms/moo/rnsga2.py +188 -0
  21. pymoo/algorithms/moo/rnsga3.py +246 -0
  22. pymoo/algorithms/moo/rvea.py +214 -0
  23. pymoo/algorithms/moo/sms.py +195 -0
  24. pymoo/algorithms/moo/spea2.py +190 -0
  25. pymoo/algorithms/moo/unsga3.py +47 -0
  26. pymoo/algorithms/soo/__init__.py +0 -0
  27. pymoo/algorithms/soo/convex/__init__.py +0 -0
  28. pymoo/algorithms/soo/nonconvex/__init__.py +0 -0
  29. pymoo/algorithms/soo/nonconvex/brkga.py +161 -0
  30. pymoo/algorithms/soo/nonconvex/cmaes.py +554 -0
  31. pymoo/algorithms/soo/nonconvex/de.py +279 -0
  32. pymoo/algorithms/soo/nonconvex/direct.py +149 -0
  33. pymoo/algorithms/soo/nonconvex/es.py +203 -0
  34. pymoo/algorithms/soo/nonconvex/g3pcx.py +94 -0
  35. pymoo/algorithms/soo/nonconvex/ga.py +93 -0
  36. pymoo/algorithms/soo/nonconvex/ga_niching.py +223 -0
  37. pymoo/algorithms/soo/nonconvex/isres.py +74 -0
  38. pymoo/algorithms/soo/nonconvex/nelder.py +251 -0
  39. pymoo/algorithms/soo/nonconvex/optuna.py +80 -0
  40. pymoo/algorithms/soo/nonconvex/pattern.py +183 -0
  41. pymoo/algorithms/soo/nonconvex/pso.py +399 -0
  42. pymoo/algorithms/soo/nonconvex/pso_ep.py +297 -0
  43. pymoo/algorithms/soo/nonconvex/random_search.py +25 -0
  44. pymoo/algorithms/soo/nonconvex/sres.py +56 -0
  45. pymoo/algorithms/soo/univariate/__init__.py +0 -0
  46. pymoo/algorithms/soo/univariate/backtracking.py +59 -0
  47. pymoo/algorithms/soo/univariate/exp.py +46 -0
  48. pymoo/algorithms/soo/univariate/golden.py +65 -0
  49. pymoo/algorithms/soo/univariate/quadr_interp.py +81 -0
  50. pymoo/algorithms/soo/univariate/wolfe.py +163 -0
  51. pymoo/config.py +33 -0
  52. pymoo/constraints/__init__.py +3 -0
  53. pymoo/constraints/adaptive.py +62 -0
  54. pymoo/constraints/as_obj.py +56 -0
  55. pymoo/constraints/as_penalty.py +41 -0
  56. pymoo/constraints/eps.py +26 -0
  57. pymoo/constraints/from_bounds.py +36 -0
  58. pymoo/core/__init__.py +0 -0
  59. pymoo/core/algorithm.py +394 -0
  60. pymoo/core/callback.py +38 -0
  61. pymoo/core/crossover.py +77 -0
  62. pymoo/core/decision_making.py +102 -0
  63. pymoo/core/decomposition.py +76 -0
  64. pymoo/core/duplicate.py +163 -0
  65. pymoo/core/evaluator.py +116 -0
  66. pymoo/core/indicator.py +34 -0
  67. pymoo/core/individual.py +784 -0
  68. pymoo/core/infill.py +64 -0
  69. pymoo/core/initialization.py +42 -0
  70. pymoo/core/mating.py +39 -0
  71. pymoo/core/meta.py +21 -0
  72. pymoo/core/mixed.py +165 -0
  73. pymoo/core/mutation.py +44 -0
  74. pymoo/core/operator.py +40 -0
  75. pymoo/core/parameters.py +134 -0
  76. pymoo/core/plot.py +210 -0
  77. pymoo/core/population.py +180 -0
  78. pymoo/core/problem.py +460 -0
  79. pymoo/core/recorder.py +99 -0
  80. pymoo/core/repair.py +23 -0
  81. pymoo/core/replacement.py +96 -0
  82. pymoo/core/result.py +52 -0
  83. pymoo/core/sampling.py +43 -0
  84. pymoo/core/selection.py +61 -0
  85. pymoo/core/solution.py +10 -0
  86. pymoo/core/survival.py +103 -0
  87. pymoo/core/termination.py +70 -0
  88. pymoo/core/variable.py +399 -0
  89. pymoo/cython/__init__.py +0 -0
  90. pymoo/cython/calc_perpendicular_distance.cpython-311-darwin.so +0 -0
  91. pymoo/cython/calc_perpendicular_distance.pyx +67 -0
  92. pymoo/cython/decomposition.cpython-311-darwin.so +0 -0
  93. pymoo/cython/decomposition.pyx +165 -0
  94. pymoo/cython/hv.cpython-311-darwin.so +0 -0
  95. pymoo/cython/hv.pyx +18 -0
  96. pymoo/cython/info.cpython-311-darwin.so +0 -0
  97. pymoo/cython/info.pyx +5 -0
  98. pymoo/cython/mnn.cpython-311-darwin.so +0 -0
  99. pymoo/cython/mnn.pyx +273 -0
  100. pymoo/cython/non_dominated_sorting.cpython-311-darwin.so +0 -0
  101. pymoo/cython/non_dominated_sorting.pyx +645 -0
  102. pymoo/cython/pruning_cd.cpython-311-darwin.so +0 -0
  103. pymoo/cython/pruning_cd.pyx +197 -0
  104. pymoo/cython/stochastic_ranking.cpython-311-darwin.so +0 -0
  105. pymoo/cython/stochastic_ranking.pyx +49 -0
  106. pymoo/cython/utils.pxd +129 -0
  107. pymoo/cython/vendor/__init__.py +0 -0
  108. pymoo/cython/vendor/hypervolume.cpp +1621 -0
  109. pymoo/cython/vendor/hypervolume.h +63 -0
  110. pymoo/decomposition/__init__.py +0 -0
  111. pymoo/decomposition/aasf.py +24 -0
  112. pymoo/decomposition/asf.py +10 -0
  113. pymoo/decomposition/pbi.py +13 -0
  114. pymoo/decomposition/perp_dist.py +13 -0
  115. pymoo/decomposition/tchebicheff.py +11 -0
  116. pymoo/decomposition/util.py +13 -0
  117. pymoo/decomposition/weighted_sum.py +8 -0
  118. pymoo/docs.py +187 -0
  119. pymoo/experimental/__init__.py +0 -0
  120. pymoo/experimental/algorithms/__init__.py +0 -0
  121. pymoo/experimental/algorithms/gde3.py +57 -0
  122. pymoo/gradient/__init__.py +21 -0
  123. pymoo/gradient/automatic.py +57 -0
  124. pymoo/gradient/grad_autograd.py +105 -0
  125. pymoo/gradient/grad_complex.py +35 -0
  126. pymoo/gradient/grad_jax.py +51 -0
  127. pymoo/gradient/toolbox/__init__.py +6 -0
  128. pymoo/indicators/__init__.py +0 -0
  129. pymoo/indicators/distance_indicator.py +55 -0
  130. pymoo/indicators/gd.py +7 -0
  131. pymoo/indicators/gd_plus.py +7 -0
  132. pymoo/indicators/hv/__init__.py +63 -0
  133. pymoo/indicators/hv/exact.py +71 -0
  134. pymoo/indicators/hv/exact_2d.py +102 -0
  135. pymoo/indicators/hv/monte_carlo.py +74 -0
  136. pymoo/indicators/igd.py +7 -0
  137. pymoo/indicators/igd_plus.py +7 -0
  138. pymoo/indicators/kktpm.py +151 -0
  139. pymoo/indicators/migd.py +55 -0
  140. pymoo/indicators/rmetric.py +203 -0
  141. pymoo/indicators/spacing.py +52 -0
  142. pymoo/mcdm/__init__.py +0 -0
  143. pymoo/mcdm/compromise_programming.py +19 -0
  144. pymoo/mcdm/high_tradeoff.py +40 -0
  145. pymoo/mcdm/pseudo_weights.py +32 -0
  146. pymoo/operators/__init__.py +0 -0
  147. pymoo/operators/control.py +187 -0
  148. pymoo/operators/crossover/__init__.py +0 -0
  149. pymoo/operators/crossover/binx.py +45 -0
  150. pymoo/operators/crossover/dex.py +122 -0
  151. pymoo/operators/crossover/erx.py +162 -0
  152. pymoo/operators/crossover/expx.py +51 -0
  153. pymoo/operators/crossover/hux.py +37 -0
  154. pymoo/operators/crossover/nox.py +13 -0
  155. pymoo/operators/crossover/ox.py +84 -0
  156. pymoo/operators/crossover/pcx.py +82 -0
  157. pymoo/operators/crossover/pntx.py +49 -0
  158. pymoo/operators/crossover/sbx.py +125 -0
  159. pymoo/operators/crossover/spx.py +5 -0
  160. pymoo/operators/crossover/ux.py +20 -0
  161. pymoo/operators/mutation/__init__.py +0 -0
  162. pymoo/operators/mutation/bitflip.py +17 -0
  163. pymoo/operators/mutation/gauss.py +58 -0
  164. pymoo/operators/mutation/inversion.py +42 -0
  165. pymoo/operators/mutation/nom.py +7 -0
  166. pymoo/operators/mutation/pm.py +94 -0
  167. pymoo/operators/mutation/rm.py +23 -0
  168. pymoo/operators/repair/__init__.py +0 -0
  169. pymoo/operators/repair/bounce_back.py +32 -0
  170. pymoo/operators/repair/bounds_repair.py +95 -0
  171. pymoo/operators/repair/inverse_penalty.py +89 -0
  172. pymoo/operators/repair/rounding.py +18 -0
  173. pymoo/operators/repair/to_bound.py +31 -0
  174. pymoo/operators/repair/vtype.py +11 -0
  175. pymoo/operators/sampling/__init__.py +0 -0
  176. pymoo/operators/sampling/lhs.py +73 -0
  177. pymoo/operators/sampling/rnd.py +50 -0
  178. pymoo/operators/selection/__init__.py +0 -0
  179. pymoo/operators/selection/rnd.py +72 -0
  180. pymoo/operators/selection/tournament.py +76 -0
  181. pymoo/operators/survival/__init__.py +0 -0
  182. pymoo/operators/survival/rank_and_crowding/__init__.py +1 -0
  183. pymoo/operators/survival/rank_and_crowding/classes.py +209 -0
  184. pymoo/operators/survival/rank_and_crowding/metrics.py +208 -0
  185. pymoo/optimize.py +72 -0
  186. pymoo/problems/__init__.py +157 -0
  187. pymoo/problems/dyn.py +47 -0
  188. pymoo/problems/dynamic/__init__.py +0 -0
  189. pymoo/problems/dynamic/cec2015.py +108 -0
  190. pymoo/problems/dynamic/df.py +452 -0
  191. pymoo/problems/dynamic/misc.py +167 -0
  192. pymoo/problems/functional.py +48 -0
  193. pymoo/problems/many/__init__.py +5 -0
  194. pymoo/problems/many/cdtlz.py +159 -0
  195. pymoo/problems/many/dcdtlz.py +88 -0
  196. pymoo/problems/many/dtlz.py +264 -0
  197. pymoo/problems/many/wfg.py +550 -0
  198. pymoo/problems/multi/__init__.py +14 -0
  199. pymoo/problems/multi/bnh.py +34 -0
  200. pymoo/problems/multi/carside.py +48 -0
  201. pymoo/problems/multi/clutch.py +104 -0
  202. pymoo/problems/multi/csi.py +55 -0
  203. pymoo/problems/multi/ctp.py +198 -0
  204. pymoo/problems/multi/dascmop.py +213 -0
  205. pymoo/problems/multi/kursawe.py +25 -0
  206. pymoo/problems/multi/modact.py +68 -0
  207. pymoo/problems/multi/mw.py +400 -0
  208. pymoo/problems/multi/omnitest.py +48 -0
  209. pymoo/problems/multi/osy.py +32 -0
  210. pymoo/problems/multi/srn.py +28 -0
  211. pymoo/problems/multi/sympart.py +94 -0
  212. pymoo/problems/multi/tnk.py +24 -0
  213. pymoo/problems/multi/truss2d.py +83 -0
  214. pymoo/problems/multi/welded_beam.py +41 -0
  215. pymoo/problems/multi/wrm.py +36 -0
  216. pymoo/problems/multi/zdt.py +151 -0
  217. pymoo/problems/multi_to_single.py +22 -0
  218. pymoo/problems/single/__init__.py +12 -0
  219. pymoo/problems/single/ackley.py +24 -0
  220. pymoo/problems/single/cantilevered_beam.py +34 -0
  221. pymoo/problems/single/flowshop_scheduling.py +112 -0
  222. pymoo/problems/single/g.py +874 -0
  223. pymoo/problems/single/griewank.py +18 -0
  224. pymoo/problems/single/himmelblau.py +15 -0
  225. pymoo/problems/single/knapsack.py +48 -0
  226. pymoo/problems/single/mopta08.py +26 -0
  227. pymoo/problems/single/multimodal.py +20 -0
  228. pymoo/problems/single/pressure_vessel.py +30 -0
  229. pymoo/problems/single/rastrigin.py +20 -0
  230. pymoo/problems/single/rosenbrock.py +22 -0
  231. pymoo/problems/single/schwefel.py +18 -0
  232. pymoo/problems/single/simple.py +13 -0
  233. pymoo/problems/single/sphere.py +19 -0
  234. pymoo/problems/single/traveling_salesman.py +79 -0
  235. pymoo/problems/single/zakharov.py +19 -0
  236. pymoo/problems/static.py +14 -0
  237. pymoo/problems/util.py +42 -0
  238. pymoo/problems/zero_to_one.py +27 -0
  239. pymoo/termination/__init__.py +23 -0
  240. pymoo/termination/collection.py +12 -0
  241. pymoo/termination/cv.py +48 -0
  242. pymoo/termination/default.py +45 -0
  243. pymoo/termination/delta.py +64 -0
  244. pymoo/termination/fmin.py +16 -0
  245. pymoo/termination/ftol.py +144 -0
  246. pymoo/termination/indicator.py +49 -0
  247. pymoo/termination/max_eval.py +14 -0
  248. pymoo/termination/max_gen.py +15 -0
  249. pymoo/termination/max_time.py +20 -0
  250. pymoo/termination/robust.py +34 -0
  251. pymoo/termination/xtol.py +33 -0
  252. pymoo/util/__init__.py +0 -0
  253. pymoo/util/archive.py +150 -0
  254. pymoo/util/cache.py +29 -0
  255. pymoo/util/clearing.py +82 -0
  256. pymoo/util/display/__init__.py +0 -0
  257. pymoo/util/display/column.py +52 -0
  258. pymoo/util/display/display.py +34 -0
  259. pymoo/util/display/multi.py +96 -0
  260. pymoo/util/display/output.py +53 -0
  261. pymoo/util/display/progress.py +54 -0
  262. pymoo/util/display/single.py +67 -0
  263. pymoo/util/dominator.py +67 -0
  264. pymoo/util/function_loader.py +129 -0
  265. pymoo/util/hv.py +23 -0
  266. pymoo/util/matlab_engine.py +39 -0
  267. pymoo/util/misc.py +460 -0
  268. pymoo/util/mnn.py +70 -0
  269. pymoo/util/nds/__init__.py +0 -0
  270. pymoo/util/nds/dominance_degree_non_dominated_sort.py +159 -0
  271. pymoo/util/nds/efficient_non_dominated_sort.py +152 -0
  272. pymoo/util/nds/fast_non_dominated_sort.py +70 -0
  273. pymoo/util/nds/naive_non_dominated_sort.py +36 -0
  274. pymoo/util/nds/non_dominated_sorting.py +67 -0
  275. pymoo/util/nds/tree_based_non_dominated_sort.py +133 -0
  276. pymoo/util/normalization.py +312 -0
  277. pymoo/util/optimum.py +42 -0
  278. pymoo/util/plotting.py +177 -0
  279. pymoo/util/pruning_cd.py +89 -0
  280. pymoo/util/randomized_argsort.py +60 -0
  281. pymoo/util/ref_dirs/__init__.py +24 -0
  282. pymoo/util/ref_dirs/construction.py +88 -0
  283. pymoo/util/ref_dirs/das_dennis.py +52 -0
  284. pymoo/util/ref_dirs/energy.py +319 -0
  285. pymoo/util/ref_dirs/energy_layer.py +119 -0
  286. pymoo/util/ref_dirs/genetic_algorithm.py +63 -0
  287. pymoo/util/ref_dirs/incremental.py +68 -0
  288. pymoo/util/ref_dirs/misc.py +128 -0
  289. pymoo/util/ref_dirs/optimizer.py +59 -0
  290. pymoo/util/ref_dirs/performance.py +162 -0
  291. pymoo/util/ref_dirs/reduction.py +85 -0
  292. pymoo/util/ref_dirs/sample_and_map.py +24 -0
  293. pymoo/util/reference_direction.py +260 -0
  294. pymoo/util/remote.py +55 -0
  295. pymoo/util/roulette.py +27 -0
  296. pymoo/util/running_metric.py +128 -0
  297. pymoo/util/sliding_window.py +25 -0
  298. pymoo/util/stochastic_ranking.py +32 -0
  299. pymoo/util/value_functions.py +719 -0
  300. pymoo/util/vectors.py +40 -0
  301. pymoo/util/vf_dominator.py +99 -0
  302. pymoo/vendor/__init__.py +0 -0
  303. pymoo/vendor/cec2018.py +398 -0
  304. pymoo/vendor/gta.py +617 -0
  305. pymoo/vendor/hv.py +267 -0
  306. pymoo/vendor/vendor_cmaes.py +412 -0
  307. pymoo/vendor/vendor_coco.py +81 -0
  308. pymoo/vendor/vendor_scipy.py +232 -0
  309. pymoo/version.py +1 -0
  310. pymoo/visualization/__init__.py +8 -0
  311. pymoo/visualization/fitness_landscape.py +127 -0
  312. pymoo/visualization/heatmap.py +123 -0
  313. pymoo/visualization/pcp.py +120 -0
  314. pymoo/visualization/petal.py +91 -0
  315. pymoo/visualization/radar.py +108 -0
  316. pymoo/visualization/radviz.py +68 -0
  317. pymoo/visualization/scatter.py +150 -0
  318. pymoo/visualization/star_coordinate.py +75 -0
  319. pymoo/visualization/util.py +123 -0
  320. pymoo/visualization/video/__init__.py +0 -0
  321. pymoo/visualization/video/callback_video.py +82 -0
  322. pymoo/visualization/video/one_var_one_obj.py +57 -0
  323. pymoo/visualization/video/two_var_one_obj.py +62 -0
  324. pymoo-0.6.1.5.dev0.dist-info/METADATA +187 -0
  325. pymoo-0.6.1.5.dev0.dist-info/RECORD +328 -0
  326. pymoo-0.6.1.5.dev0.dist-info/WHEEL +6 -0
  327. pymoo-0.6.1.5.dev0.dist-info/licenses/LICENSE +191 -0
  328. 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])