evolib 0.2.0b2.dev3__tar.gz → 0.2.0b2.dev5__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.
Files changed (463) hide show
  1. {evolib-0.2.0b2.dev3/evolib.egg-info → evolib-0.2.0b2.dev5}/PKG-INFO +1 -1
  2. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/individual.py +42 -9
  3. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/population.py +37 -21
  4. evolib-0.2.0b2.dev5/evolib/initializers/evonet_initializers.py +144 -0
  5. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/registry.py +7 -1
  6. evolib-0.2.0b2.dev5/evolib/interfaces/enum_helpers.py +31 -0
  7. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/crossover.py +13 -20
  8. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/evonet_structural_mutation.py +2 -14
  9. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/reproduction.py +7 -8
  10. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/selection.py +14 -17
  11. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/strategy.py +10 -10
  12. evolib-0.2.0b2.dev5/evolib/representation/dummy.py +31 -0
  13. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/evonet.py +7 -47
  14. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/benchmarks.py +98 -0
  15. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/plotting.py +3 -0
  16. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5/evolib.egg-info}/PKG-INFO +1 -1
  17. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib.egg-info/SOURCES.txt +3 -2
  18. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/02_strategies/01_step_by_step_evolution.py +5 -5
  19. evolib-0.2.0b2.dev5/examples/07_evonet/04_recurrent_bit_prediction.py +107 -0
  20. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/pyproject.toml +1 -1
  21. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_evonet_vector_io.py +5 -5
  22. evolib-0.2.0b2.dev3/evolib/initializers/evonet_initializers.py +0 -27
  23. evolib-0.2.0b2.dev3/evolib/utils/copy_indiv.py +0 -20
  24. evolib-0.2.0b2.dev3/examples/07_evonet/04_recurrent_bitseq.py +0 -103
  25. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/LICENSE +0 -0
  26. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/MANIFEST.in +0 -0
  27. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/README.md +0 -0
  28. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_core_individual.rst +0 -0
  29. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_core_population.rst +0 -0
  30. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_crossover.rst +0 -0
  31. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_evonet_structural_mutation.rst +0 -0
  32. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_mutation.rst +0 -0
  33. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_replacement.rst +0 -0
  34. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_reproduction.rst +0 -0
  35. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_selection.rst +0 -0
  36. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_operators_strategy.rst +0 -0
  37. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_public_api.rst +0 -0
  38. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_representation_evonet.rst +0 -0
  39. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_representation_netvector.rst +0 -0
  40. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_representation_vector.rst +0 -0
  41. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_utils_benchmarks.rst +0 -0
  42. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_utils_history_logger.rst +0 -0
  43. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_utils_loss_functions.rst +0 -0
  44. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/api_utils_plotting.rst +0 -0
  45. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/conf.py +0 -0
  46. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/config_guide.md +0 -0
  47. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/config_parameter.md +0 -0
  48. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/getting_started.md +0 -0
  49. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/docs/index.md +0 -0
  50. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/PIL/__init__.py +0 -0
  51. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/__init__.py +0 -0
  52. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  53. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  54. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  55. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/collections/__init__.py +0 -0
  56. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  57. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  58. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  59. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/cycler/__init__.py +0 -0
  60. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/email/__init__.py +0 -0
  61. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/__init__.py +0 -0
  62. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  63. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  64. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  65. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  66. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  67. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  68. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  69. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  70. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  71. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/html/__init__.py +0 -0
  72. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/__init__.py +0 -0
  73. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  74. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  75. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  76. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/json/__init__.py +0 -0
  77. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/logging/__init__.py +0 -0
  78. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  79. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  80. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  81. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  82. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  83. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  84. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  85. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  86. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  87. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  88. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  89. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  90. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  91. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  92. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  93. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  94. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  95. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/__init__.py +0 -0
  96. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  97. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  98. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  99. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  100. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  101. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  102. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  103. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  104. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  105. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  106. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  107. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  108. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  109. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  110. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  111. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  112. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  113. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  114. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/os/__init__.py +0 -0
  115. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/packaging/__init__.py +0 -0
  116. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  117. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  118. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  119. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  120. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  121. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  122. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  123. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  124. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  125. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/rich/__init__.py +0 -0
  126. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/sys/__init__.py +0 -0
  127. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  128. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/unittest/__init__.py +0 -0
  129. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/urllib/__init__.py +0 -0
  130. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/__init__.py +0 -0
  131. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  132. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  133. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  134. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/yaml/__init__.py +0 -0
  135. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  136. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  137. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  138. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/__init__.py +0 -0
  139. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/__init__.py +0 -0
  140. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/__pycache__/__init__.py +0 -0
  141. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/api.py +0 -0
  142. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/__init__.py +0 -0
  143. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/__pycache__/__init__.py +0 -0
  144. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/base_component_config.py +0 -0
  145. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/component_registry.py +0 -0
  146. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/evonet_component_config.py +0 -0
  147. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/schema.py +0 -0
  148. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/config/vector_component_config.py +0 -0
  149. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/PIL/__init__.py +0 -0
  150. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/__init__.py +0 -0
  151. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  152. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  153. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/collections/__init__.py +0 -0
  154. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  155. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  156. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  157. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/cycler/__init__.py +0 -0
  158. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/email/__init__.py +0 -0
  159. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/__init__.py +0 -0
  160. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  161. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  162. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  163. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  164. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  165. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/html/__init__.py +0 -0
  166. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/__init__.py +0 -0
  167. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  168. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  169. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  170. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/json/__init__.py +0 -0
  171. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/logging/__init__.py +0 -0
  172. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  173. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  174. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  175. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  176. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  177. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  178. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  179. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  180. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  181. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/__init__.py +0 -0
  182. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  183. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  184. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  185. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  186. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  187. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  188. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  189. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  190. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  191. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  192. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  193. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  194. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  195. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  196. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  197. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  198. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  199. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  200. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/os/__init__.py +0 -0
  201. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/packaging/__init__.py +0 -0
  202. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  203. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  204. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  205. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/sys/__init__.py +0 -0
  206. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/unittest/__init__.py +0 -0
  207. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/urllib/__init__.py +0 -0
  208. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/__init__.py +0 -0
  209. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  210. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  211. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  212. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/yaml/__init__.py +0 -0
  213. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  214. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  215. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/__init__.py +0 -0
  216. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/README.md +0 -0
  217. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/__init__.py +0 -0
  218. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/core/__pycache__/__init__.py +0 -0
  219. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/globals/README.md +0 -0
  220. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/globals/__init__.py +0 -0
  221. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/globals/__pycache__/__init__.py +0 -0
  222. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/globals/numeric.py +0 -0
  223. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/PIL/__init__.py +0 -0
  224. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/__init__.py +0 -0
  225. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  226. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  227. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/collections/__init__.py +0 -0
  228. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  229. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  230. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  231. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/cycler/__init__.py +0 -0
  232. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/email/__init__.py +0 -0
  233. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/__init__.py +0 -0
  234. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  235. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  236. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  237. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  238. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  239. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  240. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/html/__init__.py +0 -0
  241. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/__init__.py +0 -0
  242. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  243. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  244. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  245. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/json/__init__.py +0 -0
  246. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/logging/__init__.py +0 -0
  247. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  248. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  249. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  250. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  251. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  252. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  253. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  254. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  255. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  256. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/__init__.py +0 -0
  257. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  258. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  259. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  260. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  261. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  262. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  263. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  264. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  265. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  266. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  267. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  268. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  269. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  270. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  271. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  272. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  273. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  274. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  275. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/os/__init__.py +0 -0
  276. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/packaging/__init__.py +0 -0
  277. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  278. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  279. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  280. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/sys/__init__.py +0 -0
  281. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/unittest/__init__.py +0 -0
  282. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/urllib/__init__.py +0 -0
  283. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/__init__.py +0 -0
  284. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  285. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  286. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  287. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/yaml/__init__.py +0 -0
  288. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  289. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  290. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/__init__.py +0 -0
  291. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/__init__.py +0 -0
  292. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/__pycache__/__init__.py +0 -0
  293. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/net_initializers.py +0 -0
  294. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/initializers/vector_initializers.py +0 -0
  295. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/interfaces/__init__.py +0 -0
  296. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/interfaces/__pycache__/__init__.py +0 -0
  297. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/interfaces/enums.py +0 -0
  298. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/interfaces/structs.py +0 -0
  299. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/interfaces/types.py +0 -0
  300. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/io/checkpoint.py +0 -0
  301. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/io/serialization.py +0 -0
  302. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/README.md +0 -0
  303. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/__init__.py +0 -0
  304. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/__pycache__/__init__.py +0 -0
  305. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/mutation.py +0 -0
  306. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/operators/replacement.py +0 -0
  307. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/registry/__init__.py +0 -0
  308. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/registry/__pycache__/__init__.py +0 -0
  309. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/registry/replacement_registry.py +0 -0
  310. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/registry/selection_registry.py +0 -0
  311. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/registry/strategy_registry.py +0 -0
  312. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/PIL/__init__.py +0 -0
  313. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/__init__.py +0 -0
  314. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  315. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  316. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  317. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/collections/__init__.py +0 -0
  318. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  319. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  320. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  321. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/cycler/__init__.py +0 -0
  322. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/email/__init__.py +0 -0
  323. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/__init__.py +0 -0
  324. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  325. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  326. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  327. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  328. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  329. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  330. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  331. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  332. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  333. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/html/__init__.py +0 -0
  334. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/__init__.py +0 -0
  335. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  336. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  337. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  338. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/json/__init__.py +0 -0
  339. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/logging/__init__.py +0 -0
  340. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  341. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  342. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  343. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  344. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  345. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  346. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  347. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  348. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  349. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  350. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  351. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  352. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  353. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  354. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  355. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  356. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  357. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/__init__.py +0 -0
  358. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  359. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  360. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  361. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  362. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  363. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  364. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  365. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  366. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  367. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  368. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  369. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  370. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  371. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  372. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  373. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  374. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  375. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  376. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/os/__init__.py +0 -0
  377. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/packaging/__init__.py +0 -0
  378. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  379. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  380. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  381. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  382. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  383. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  384. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  385. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  386. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  387. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/rich/__init__.py +0 -0
  388. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/sys/__init__.py +0 -0
  389. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  390. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/unittest/__init__.py +0 -0
  391. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/urllib/__init__.py +0 -0
  392. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/__init__.py +0 -0
  393. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  394. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  395. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  396. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/yaml/__init__.py +0 -0
  397. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  398. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  399. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  400. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/__init__.py +0 -0
  401. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/__init__.py +0 -0
  402. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/__pycache__/__init__.py +0 -0
  403. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/_apply_config_mapping.py +0 -0
  404. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/base.py +0 -0
  405. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/composite.py +0 -0
  406. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/evo_params.py +0 -0
  407. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/netvector.py +0 -0
  408. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/representation/vector.py +0 -0
  409. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/README.md +0 -0
  410. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/__init__.py +0 -0
  411. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/__pycache__/__init__.py +0 -0
  412. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/config_loader.py +0 -0
  413. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/fitness.py +0 -0
  414. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/history_logger.py +0 -0
  415. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/loss_functions.py +0 -0
  416. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/random.py +0 -0
  417. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib/utils/registry.py +0 -0
  418. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib.egg-info/dependency_links.txt +0 -0
  419. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib.egg-info/requires.txt +0 -0
  420. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/evolib.egg-info/top_level.txt +0 -0
  421. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/01_getting_started.py +0 -0
  422. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/02_mutation.py +0 -0
  423. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/03_population_mutation.py +0 -0
  424. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/04_fitness.py +0 -0
  425. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/02_strategies/02_mu_lambda_step.py +0 -0
  426. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/02_strategies/03_mu_lambda.py +0 -0
  427. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/02_strategies/04_flexible.py +0 -0
  428. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/01_history.py +0 -0
  429. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/02_plotting.py +0 -0
  430. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/03_compare_runs.py +0 -0
  431. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/04_exponential_decay_vs_static.py +0 -0
  432. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/05_adaptive_global_vs_static.py +0 -0
  433. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/06_adaptive_individual_vs_static.py +0 -0
  434. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/07_selection_comparison.py +0 -0
  435. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/08_selection_pressure.py +0 -0
  436. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/09_selection_vs_mutation_pressure.py +0 -0
  437. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/10_selection_stochastic_vs_deterministic.py +0 -0
  438. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/03_comparisons/11_crossover_comparison.py +0 -0
  439. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/01_polynomial_sine.py +0 -0
  440. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/02_sine_point_approximation.py +0 -0
  441. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/03_approximation_with_noise.py +0 -0
  442. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/01_fitness_landscape_exploration.py +0 -0
  443. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/02_rosenbrock_surface_path.py +0 -0
  444. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/03_vector_control.py +0 -0
  445. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/04_vector_control_with_obstacles.py +0 -0
  446. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/05_piecewise_linear_xsys.py +0 -0
  447. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/06_evolving_mutation_strength_as_a_module.py +0 -0
  448. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/06_netvector/01_netvector_sine_approximation.py +0 -0
  449. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/06_netvector/02_netvector_modulated_output.py +0 -0
  450. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/06_netvector/03_netvector_gain_and_bias.py +0 -0
  451. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/07_evonet/01_sine_approximation.py +0 -0
  452. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/07_evonet/02_image_approximation.py +0 -0
  453. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/07_evonet/03_structural_xor.py +0 -0
  454. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/examples/07_evonet/resize_all_images.py +0 -0
  455. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/setup.cfg +0 -0
  456. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_benchmarks.py +0 -0
  457. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_config_loader.py +0 -0
  458. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_elitism_preserves_best_fitness.py +0 -0
  459. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_initializer_evonet.py +0 -0
  460. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_initializer_net.py +0 -0
  461. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_mutation.py +0 -0
  462. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_population.py +0 -0
  463. {evolib-0.2.0b2.dev3 → evolib-0.2.0b2.dev5}/tests/test_selection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolib
3
- Version: 0.2.0b2.dev3
3
+ Version: 0.2.0b2.dev5
4
4
  Summary: A modular framework for evolutionary strategies and neuroevolution.
5
5
  Author-email: EvoLib <evolib@dismail.de>
6
6
  License: MIT License
@@ -21,15 +21,17 @@ Classes:
21
21
 
22
22
  from copy import deepcopy
23
23
  from typing import Any, Dict, Optional
24
+ from uuid import uuid4
24
25
 
25
26
  from evolib.interfaces.enums import Origin
27
+ from evolib.representation.dummy import ParaDummy
26
28
 
27
29
 
28
30
  class Indiv:
29
31
  """Represents an individual in an evolutionary optimization algorithm."""
30
32
 
31
- #: para (Any, optional): Parameter values of the individual. Default: None.
32
- para: Any | None
33
+ #: para (Any): Parameter values of the individual. Default: None.
34
+ para: Any
33
35
 
34
36
  #: fitness (float): Fitness value of the individual.
35
37
  #: None means the individual has not yet been evaluated.
@@ -60,6 +62,7 @@ class Indiv:
60
62
  extra_metrics: dict[str, float]
61
63
 
62
64
  __slots__ = (
65
+ "id",
63
66
  "para",
64
67
  "fitness",
65
68
  "is_evaluated",
@@ -72,7 +75,8 @@ class Indiv:
72
75
  )
73
76
 
74
77
  def __init__(self, para: Any = None):
75
- self.para = para
78
+ self.id: str = str(uuid4())
79
+ self.para = para if para is not None else ParaDummy()
76
80
  self.fitness = None
77
81
  self.is_evaluated = False
78
82
  self.age = 0
@@ -160,14 +164,43 @@ class Indiv:
160
164
  """Return True if the individual is an offspring."""
161
165
  return self.origin == Origin.OFFSPRING
162
166
 
163
- def copy(self) -> "Indiv":
167
+ def copy(
168
+ self,
169
+ *,
170
+ reset_id: bool = True,
171
+ reset_fitness: bool = False,
172
+ reset_age: bool = False,
173
+ reset_evaluation: bool = False,
174
+ reset_origin: bool = False,
175
+ ) -> "Indiv":
164
176
  """
165
- Create a copy of the individual.
177
+ Create a copy of the individual, with optional resets.
166
178
 
167
- This method can be overridden in subclasses to implement
168
- optimized or custom copy behavior.
179
+ Args:
180
+ reset_id (bool): If True (default), assign a new unique ID to the copy.
181
+ reset_fitness (bool): If True, set fitness to None in the copy.
182
+ reset_age (bool): If True, set age to 0 in the copy.
183
+ reset_evaluation (bool): If True, set is_evaluated = False in the copy.
184
+ reset_origin (bool): If True, set origin = Origin.OFFSPRING
185
+ and parent_idx = None in the copy.
169
186
 
170
187
  Returns:
171
- Indiv: A copy of this individual.
188
+ Indiv: A (possibly reset) copy of this individual.
172
189
  """
173
- return deepcopy(self)
190
+ new_indiv: Indiv = deepcopy(self)
191
+
192
+ if reset_id:
193
+ new_indiv.id = str(uuid4())
194
+ if reset_fitness:
195
+ new_indiv.fitness = None
196
+ if reset_age:
197
+ new_indiv.age = 0
198
+ if reset_evaluation:
199
+ new_indiv.is_evaluated = False
200
+ if reset_origin:
201
+ from evolib.interfaces.enums import Origin
202
+
203
+ new_indiv.origin = Origin.OFFSPRING
204
+ new_indiv.parent_idx = None
205
+
206
+ return new_indiv
@@ -208,6 +208,10 @@ class Pop:
208
208
  para = init_fn(self)
209
209
  self.add_indiv(Indiv(para=para))
210
210
 
211
+ # initialize adaptive parameters for initial parents
212
+ if self.indivs:
213
+ self.update_parameters(self.indivs)
214
+
211
215
  def set_fitness_function(self, func: FitnessFunction) -> None:
212
216
  """
213
217
  Sets the fitness function to be used for evaluating individuals.
@@ -567,7 +571,7 @@ class Pop:
567
571
 
568
572
  self.history_logger.reset()
569
573
 
570
- def update_parameters(self) -> None:
574
+ def update_parameters(self, indivs: list[Indiv]) -> None:
571
575
  """
572
576
  Update all strategy-dependent parameters for the current generation.
573
577
 
@@ -577,43 +581,54 @@ class Pop:
577
581
  ValueError or AttributeError if the population or its individuals
578
582
  are invalid.
579
583
  """
580
- self.update_mutation_parameters()
581
- self.update_crossover_parameters()
584
+ self.update_mutation_parameters(indivs)
585
+ self.update_crossover_parameters(indivs)
582
586
 
583
- def update_mutation_parameters(self) -> None:
587
+ def update_mutation_parameters(self, indivs: list[Indiv]) -> None:
584
588
  """
585
- Triggers per-generation mutation parameter updates for all individuals in the
586
- population via their `para` objects.
589
+ Update mutation-related parameters for a given set of individuals via their
590
+ `para` objects.
587
591
 
588
- This ensures that all individuals – including parents – are updated consistently
589
- based on current generation number.
592
+ Typical usage:
593
+ - During population initialization: called once on all parents to ensure
594
+ they start with valid adaptive parameters.
595
+ - During evolution: called on offspring *before* mutation, so that new
596
+ individuals use up-to-date parameters (e.g. annealing schedules).
590
597
 
591
- Uses a polymorphic call to `para.update_mutation_parameters()`, preserving
592
- encapsulation.
598
+ Notes:
599
+ - Parents are not updated in every generation. They keep the parameters
600
+ assigned at initialization, ensuring selection acts on stable values.
601
+ - Offspring are updated once per generation, prior to mutation.
593
602
  """
594
- for indiv in self.indivs:
603
+
604
+ for indiv in indivs:
605
+ assert indiv.para is not None
595
606
  indiv.para.update_mutation_parameters(
596
607
  self.generation_num, self.max_generations, self.diversity_ema
597
608
  )
598
609
 
599
- def update_crossover_parameters(self) -> None:
610
+ def update_crossover_parameters(self, indivs: list[Indiv]) -> None:
600
611
  """
601
- Triggers per-generation update of crossover parameters for all individuals.
612
+ Update crossover-related parameters for a given set of individuals.
602
613
 
603
- Applies strategy-dependent crossover control (e.g. exponential decay or
604
- adaptive global), using generation number and population diversity.
614
+ Typical usage:
615
+ - During population initialization: called once on all parents to ensure
616
+ they start with valid crossover parameters.
617
+ - During evolution: called on offspring *before* crossover, so that new
618
+ individuals use up-to-date parameters (e.g. annealing schedules or
619
+ adaptive rates).
605
620
 
606
- Raises:
607
- ValueError: If population is uninitialized or empty.
608
- AttributeError: If an individual lacks a valid 'para' object with method
609
- 'update_crossover_parameters'.
621
+ Notes:
622
+ - Parents are not updated in every generation. They keep the parameters
623
+ assigned at initialization, ensuring selection acts on stable values.
624
+ - Offspring are updated once per generation, prior to crossover.
610
625
  """
611
- if not self.indivs:
626
+ if not indivs:
612
627
  raise ValueError(
613
628
  "Population is empty – cannot update crossover parameters."
614
629
  )
615
630
 
616
- for indiv in self.indivs:
631
+ for indiv in indivs:
617
632
  if not hasattr(indiv, "para") or not hasattr(
618
633
  indiv.para, "update_crossover_parameters"
619
634
  ):
@@ -622,6 +637,7 @@ class Pop:
622
637
  "with 'update_crossover_parameters' method."
623
638
  )
624
639
 
640
+ assert indiv.para is not None
625
641
  indiv.para.update_crossover_parameters(
626
642
  self.generation_num,
627
643
  self.max_generations,
@@ -0,0 +1,144 @@
1
+ # SPDX-License-Identifier: MIT
2
+ """
3
+ Initializers for EvoNet networks.
4
+
5
+ These initializers convert a module configuration with `type: evonet` into a fully
6
+ initialized EvoNet instance.
7
+ """
8
+
9
+ import numpy as np
10
+ from evonet.activation import random_function_name
11
+ from evonet.enums import NeuronRole
12
+
13
+ from evolib.config.evonet_component_config import EvoNetComponentConfig
14
+ from evolib.config.schema import FullConfig
15
+ from evolib.interfaces.enum_helpers import resolve_recurrent_kinds
16
+ from evolib.representation.evonet import EvoNet
17
+
18
+
19
+ def _build_architecture(para: EvoNet, cfg: EvoNetComponentConfig) -> None:
20
+ """
21
+ Build the EvoNet architecture (layers, neurons, activations) from config.
22
+
23
+ Args:
24
+ para (EvoNet): The EvoNet instance (already has parameters set).
25
+ cfg (EvoNetComponentConfig): Config with architecture definition.
26
+ """
27
+ # Activation functions per layer
28
+ if isinstance(cfg.activation, list):
29
+ activations = cfg.activation
30
+ else:
31
+ # Input layer linear, others same activation
32
+ activations = ["linear"] + [cfg.activation] * (len(cfg.dim) - 1)
33
+
34
+ for layer_idx, num_neurons in enumerate(cfg.dim):
35
+ if num_neurons == 0:
36
+ continue
37
+
38
+ activation_name = activations[layer_idx]
39
+ if activation_name == "random":
40
+ if cfg.activations_allowed is not None:
41
+ activation_name = random_function_name(cfg.activations_allowed)
42
+ else:
43
+ activation_name = random_function_name()
44
+
45
+ para.net.add_layer()
46
+
47
+ if layer_idx == 0:
48
+ role = NeuronRole.INPUT
49
+ elif layer_idx == len(cfg.dim) - 1:
50
+ role = NeuronRole.OUTPUT
51
+ else:
52
+ role = NeuronRole.HIDDEN
53
+
54
+ recurrent_kinds = resolve_recurrent_kinds(cfg.recurrent)
55
+ para.net.add_neuron(
56
+ count=num_neurons,
57
+ activation=activation_name,
58
+ role=role,
59
+ connection_init="zero",
60
+ bias=0.0,
61
+ recurrent=recurrent_kinds if role != NeuronRole.INPUT else None,
62
+ )
63
+
64
+
65
+ def initializer_normal_evonet(config: FullConfig, module: str) -> EvoNet:
66
+ """
67
+ Initializes an EvoNet with normally distributed weights.
68
+
69
+ Args:
70
+ config (FullConfig): Full experiment configuration
71
+ module (str): Module name (e.g. "brain")
72
+
73
+ Returns:
74
+ EvoNet: Initialized EvoNet representation
75
+ """
76
+ para = EvoNet()
77
+ cfg = config.modules[module].model_copy(deep=True)
78
+ para.apply_config(cfg)
79
+
80
+ _build_architecture(para, cfg)
81
+
82
+ # Initialize weights and biases with normal distribution
83
+ weights = np.random.normal(loc=0.0, scale=0.5, size=para.net.num_weights)
84
+ biases = np.random.normal(loc=0.0, scale=0.5, size=para.net.num_biases)
85
+
86
+ para.net.set_weights(weights)
87
+ para.net.set_biases(biases)
88
+ return para
89
+
90
+
91
+ def initializer_random_evonet(config: FullConfig, module: str) -> EvoNet:
92
+ """
93
+ Initializes an EvoNet with uniformly random weights and biases within init_bounds
94
+ (fallback: weight_bounds, bias_bounds).
95
+
96
+ Args:
97
+ config (FullConfig): Full experiment configuration
98
+ module (str): Module name
99
+
100
+ Returns:
101
+ EvoNet: Initialized EvoNet representation
102
+ """
103
+ para = EvoNet()
104
+ cfg = config.modules[module].model_copy(deep=True)
105
+ para.apply_config(cfg)
106
+
107
+ _build_architecture(para, cfg)
108
+
109
+ # Use weight_bounds if available, else fall back to bounds
110
+ weight_bounds = cfg.weight_bounds or (-1.0, 1.0)
111
+ min_weight = weight_bounds[0]
112
+ max_weight = weight_bounds[1]
113
+ bias_bounds = cfg.bias_bounds or (-0.5, 0.5)
114
+ min_bias = bias_bounds[0]
115
+ max_bias = bias_bounds[1]
116
+
117
+ weights = np.random.uniform(min_weight, max_weight, size=para.net.num_weights)
118
+ biases = np.random.uniform(min_bias, max_bias, size=para.net.num_biases)
119
+
120
+ para.net.set_weights(weights)
121
+ para.net.set_biases(biases)
122
+ return para
123
+
124
+
125
+ def initializer_zero_evonet(config: FullConfig, module: str) -> EvoNet:
126
+ """
127
+ Initializes an EvoNet with all weights and biases set to zero.
128
+
129
+ Args:
130
+ config (FullConfig): Full experiment configuration
131
+ module (str): Module name
132
+
133
+ Returns:
134
+ EvoNet: Initialized EvoNet representation
135
+ """
136
+ para = EvoNet()
137
+ cfg = config.modules[module].model_copy(deep=True)
138
+ para.apply_config(cfg)
139
+
140
+ _build_architecture(para, cfg)
141
+
142
+ para.net.set_weights(np.zeros(para.net.num_weights))
143
+ para.net.set_biases(np.zeros(para.net.num_biases))
144
+ return para
@@ -16,7 +16,11 @@ from typing import Any, Callable
16
16
  from evolib.config.schema import FullConfig
17
17
 
18
18
  # EvoNet-based initializer
19
- from evolib.initializers.evonet_initializers import initializer_normal_evonet
19
+ from evolib.initializers.evonet_initializers import (
20
+ initializer_normal_evonet,
21
+ initializer_random_evonet,
22
+ initializer_zero_evonet,
23
+ )
20
24
 
21
25
  # NetVector-based initializer
22
26
  from evolib.initializers.net_initializers import initializer_normal_net
@@ -45,6 +49,8 @@ INITIALIZER_REGISTRY: dict[str, InitializerFunction] = {
45
49
  "adaptive_vector": initializer_adaptive_vector,
46
50
  "normal_net": initializer_normal_net,
47
51
  "normal_evonet": initializer_normal_evonet,
52
+ "random_evonet": initializer_random_evonet,
53
+ "zero_evonet": initializer_zero_evonet,
48
54
  }
49
55
 
50
56
 
@@ -0,0 +1,31 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ from typing import Optional, Set
4
+
5
+ from evonet.enums import RecurrentKind
6
+
7
+
8
+ def resolve_recurrent_kinds(preset: Optional[str]) -> Set[RecurrentKind]:
9
+ """
10
+ Map a preset string to the corresponding set of recurrent connection types.
11
+
12
+ Parameters
13
+ ----------
14
+ preset : Optional[str]
15
+ One of: "none", "direct", "local", "all", or None.
16
+
17
+ Returns
18
+ -------
19
+ Set[RecurrentKind]
20
+ A set of recurrent kinds to use.
21
+ """
22
+ if preset is None or preset == "none":
23
+ return set()
24
+ elif preset == "direct":
25
+ return {RecurrentKind.DIRECT}
26
+ elif preset == "local":
27
+ return {RecurrentKind.DIRECT, RecurrentKind.LATERAL}
28
+ elif preset == "all":
29
+ return {RecurrentKind.DIRECT, RecurrentKind.LATERAL, RecurrentKind.INDIRECT}
30
+ else:
31
+ raise ValueError(f"Unknown recurrent preset: {preset}")
@@ -196,9 +196,11 @@ def crossover_intermediate(
196
196
 
197
197
  def crossover_offspring(pop: "Pop", offspring: list["Indiv"]) -> None:
198
198
  """
199
- Perform crossover for each pair of offspring individuals. Supports ParaComposite by
200
- applying module-specific crossover operators and probabilities defined in the
201
- configuration.
199
+ Perform crossover for each pair of offspring individuals.
200
+
201
+ Delegates the actual crossover logic to the individuals' parameter
202
+ representations (ParaBase subclasses). Works for both single-module
203
+ (e.g. Vector, EvoNet) and multi-module (ParaComposite) individuals.
202
204
 
203
205
  Notes:
204
206
  - Offspring are assumed to be copied before this call.
@@ -216,20 +218,11 @@ def crossover_offspring(pop: "Pop", offspring: list["Indiv"]) -> None:
216
218
  if child1.para is None or child2.para is None:
217
219
  continue
218
220
 
219
- for module_name in child1.para.components:
220
- module1 = child1.para.components[module_name]
221
- module2 = child2.para.components[module_name]
222
-
223
- prob1 = module1.evo_params.crossover_probability
224
- prob2 = module2.evo_params.crossover_probability
225
-
226
- if prob1 is None or prob2 is None:
227
- continue
228
-
229
- effective_prob = min(prob1, prob2)
230
-
231
- if effective_prob <= 0.0 or np.random.rand() >= effective_prob:
232
- continue
233
-
234
- # Perform crossover
235
- module1.crossover_with(module2)
221
+ # Delegate crossover to para (Vector, EvoNet, or ParaComposite)
222
+ try:
223
+ child1.para.crossover_with(child2.para)
224
+ except Exception as e:
225
+ # Optional: log or raise, depending on how strict du es haben willst
226
+ raise RuntimeError(
227
+ f"Crossover failed for individuals {child1.id} and {child2.id}: {e}"
228
+ )
@@ -2,7 +2,7 @@
2
2
 
3
3
  import numpy as np
4
4
  from evonet.core import Nnet
5
- from evonet.enums import NeuronRole, RecurrentKind
5
+ from evonet.enums import NeuronRole
6
6
  from evonet.mutation import (
7
7
  add_random_connection,
8
8
  add_random_neuron,
@@ -12,19 +12,7 @@ from evonet.mutation import (
12
12
  )
13
13
 
14
14
  from evolib.config.base_component_config import StructuralMutationConfig
15
-
16
-
17
- def resolve_recurrent_kinds(preset: str | None) -> set[RecurrentKind]:
18
- if preset == "none" or preset is None:
19
- return set()
20
- elif preset == "direct":
21
- return {RecurrentKind.DIRECT}
22
- elif preset == "local":
23
- return {RecurrentKind.DIRECT, RecurrentKind.LATERAL}
24
- elif preset == "all":
25
- return {RecurrentKind.DIRECT, RecurrentKind.LATERAL, RecurrentKind.INDIRECT}
26
- else:
27
- raise ValueError(f"Unknown recurrent preset: {preset}")
15
+ from evolib.interfaces.enum_helpers import resolve_recurrent_kinds
28
16
 
29
17
 
30
18
  def mutate_structure(net: Nnet, cfg: StructuralMutationConfig) -> None:
@@ -4,9 +4,6 @@ from typing import Any, List
4
4
 
5
5
  import numpy as np
6
6
 
7
- from evolib.interfaces.enums import Origin
8
- from evolib.utils.copy_indiv import copy_indiv
9
-
10
7
 
11
8
  def generate_cloned_offspring(parents: List[Any], lambda_: int) -> List[Any]:
12
9
  """
@@ -37,11 +34,13 @@ def generate_cloned_offspring(parents: List[Any], lambda_: int) -> List[Any]:
37
34
 
38
35
  for idx in parent_indices:
39
36
  parent = parents[idx]
40
- child = copy_indiv(parent)
41
- child.age = 0
42
- child.fitness = None
43
- child.is_evaluated = False
44
- child.origin = Origin.OFFSPRING
37
+ child = parent.copy(
38
+ reset_id=True,
39
+ reset_fitness=True,
40
+ reset_age=True,
41
+ reset_evaluation=True,
42
+ reset_origin=True,
43
+ )
45
44
  child.parent_idx = idx
46
45
  offspring.append(child)
47
46
 
@@ -12,10 +12,9 @@ Included methods:
12
12
  - Truncation Selection
13
13
 
14
14
  All methods operate on a population of individuals with assigned fitness values and
15
- return deep copies of selected parents.
15
+ return copies of selected parents.
16
16
  """
17
17
 
18
- import copy
19
18
  import random
20
19
  from typing import TYPE_CHECKING, Any, List, Optional
21
20
 
@@ -124,7 +123,7 @@ def selection_tournament(
124
123
  )
125
124
 
126
125
  # Kopie des besten Individuums hinzufuegen
127
- selected_parents.append(copy.deepcopy(pop.indivs[best_idx]))
126
+ selected_parents.append(pop.indivs[best_idx].copy())
128
127
 
129
128
  # Entfernen, falls gewuenscht
130
129
  if remove_selected:
@@ -159,7 +158,7 @@ def selection_rank_based(
159
158
  Default: False (minimization).
160
159
 
161
160
  Returns:
162
- List[Any]: List of selected individuals (deep copies).
161
+ List[Any]: List of selected individuals (copies).
163
162
 
164
163
  Raises:
165
164
  ValueError: If parameters are invalid (e.g., empty population,
@@ -181,8 +180,6 @@ def selection_rank_based(
181
180
  if mode == "exponential" and exp_base is None:
182
181
  raise ValueError("exp_base must be set when using exponential rank selection.")
183
182
 
184
- exp_base = 1.0
185
-
186
183
  fitnesses = [indiv.fitness for indiv in pop.indivs]
187
184
  if any(f is None or np.isnan(f) for f in fitnesses):
188
185
  raise TypeError("All fitness values must be valid (not None or NaN)")
@@ -222,7 +219,7 @@ def selection_rank_based(
222
219
  # Select an individual based on rank probability
223
220
  list_index = np.random.choice(population_size, p=probabilities)
224
221
  selected_idx = available_indices[list_index]
225
- selected_parents.append(copy.deepcopy(pop.indivs[selected_idx]))
222
+ selected_parents.append(pop.indivs[selected_idx].copy())
226
223
 
227
224
  # Optionally remove selected individual
228
225
  if remove_selected:
@@ -260,13 +257,13 @@ def selection_random(pop: "Pop", remove_selected: bool = False) -> List[Indiv]:
260
257
 
261
258
  # Randomly select individual from the population
262
259
  selected_parent = random.choice(available_indivs)
263
- parent = copy.deepcopy(selected_parent)
260
+ parent = selected_parent.copy()
264
261
 
265
262
  # Append the best individual to offspring
266
263
  selected_parents.append(parent)
267
264
 
268
265
  if remove_selected:
269
- available_indivs.remove(parent)
266
+ available_indivs.remove(selected_parent)
270
267
 
271
268
  return selected_parents
272
269
 
@@ -282,7 +279,7 @@ def selection_roulette(
282
279
  fitness_maximization (bool): If True, higher fitness is better.
283
280
 
284
281
  Returns:
285
- List[Any]: List of selected individuals (deep copies).
282
+ List[Any]: List of selected individuals (copies).
286
283
  """
287
284
  if not pop.indivs:
288
285
  raise ValueError("Population is empty")
@@ -302,7 +299,7 @@ def selection_roulette(
302
299
  probabilities = fitnesses / total_fitness
303
300
  indices = np.random.choice(len(pop.indivs), size=num_parents, p=probabilities)
304
301
 
305
- return [copy.deepcopy(pop.indivs[i]) for i in indices]
302
+ return [pop.indivs[i].copy() for i in indices]
306
303
 
307
304
 
308
305
  def selection_sus(
@@ -316,7 +313,7 @@ def selection_sus(
316
313
  fitness_maximization (bool): If True, higher fitness is better.
317
314
 
318
315
  Returns:
319
- List[Any]: Selected individuals (deep copies).
316
+ List[Any]: Selected individuals (copies).
320
317
  """
321
318
  if not pop.indivs:
322
319
  raise ValueError("Population is empty")
@@ -345,7 +342,7 @@ def selection_sus(
345
342
  for p in pointers:
346
343
  while p > cumulative[i]:
347
344
  i += 1
348
- selected.append(copy.deepcopy(pop.indivs[i]))
345
+ selected.append(pop.indivs[i].copy())
349
346
 
350
347
  return selected
351
348
 
@@ -365,7 +362,7 @@ def selection_boltzmann(
365
362
  fitness_maximization (bool): If True, higher fitness is better.
366
363
 
367
364
  Returns:
368
- List[Any]: Selected individuals (deep copies).
365
+ List[Any]: Selected individuals (copies).
369
366
  """
370
367
  if not pop.indivs:
371
368
  raise ValueError("Population is empty")
@@ -388,7 +385,7 @@ def selection_boltzmann(
388
385
  probabilities = exp_values / np.sum(exp_values)
389
386
 
390
387
  indices = np.random.choice(len(pop.indivs), size=num_parents, p=probabilities)
391
- return [copy.deepcopy(pop.indivs[i]) for i in indices]
388
+ return [pop.indivs[i].copy() for i in indices]
392
389
 
393
390
 
394
391
  def selection_truncation(
@@ -402,7 +399,7 @@ def selection_truncation(
402
399
  fitness_maximization (bool): If True, selects best fitness; else lowest.
403
400
 
404
401
  Returns:
405
- List[Any]: Selected individuals (deep copies).
402
+ List[Any]: Selected individuals (copies).
406
403
  """
407
404
 
408
405
  if not pop.indivs:
@@ -419,4 +416,4 @@ def selection_truncation(
419
416
  sorted_indices = sorted_indices[::-1]
420
417
 
421
418
  selected_indices = sorted_indices[:num_parents]
422
- return [copy.deepcopy(pop.indivs[i]) for i in selected_indices]
419
+ return [pop.indivs[i].copy() for i in selected_indices]