evolib 0.2.0b2.dev4__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 (462) hide show
  1. {evolib-0.2.0b2.dev4/evolib.egg-info → evolib-0.2.0b2.dev5}/PKG-INFO +1 -1
  2. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/individual.py +5 -4
  3. evolib-0.2.0b2.dev5/evolib/initializers/evonet_initializers.py +144 -0
  4. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/registry.py +7 -1
  5. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/crossover.py +13 -20
  6. evolib-0.2.0b2.dev5/evolib/representation/dummy.py +31 -0
  7. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/evonet.py +0 -42
  8. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/benchmarks.py +98 -0
  9. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/plotting.py +3 -0
  10. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5/evolib.egg-info}/PKG-INFO +1 -1
  11. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib.egg-info/SOURCES.txt +2 -1
  12. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/02_strategies/01_step_by_step_evolution.py +5 -5
  13. evolib-0.2.0b2.dev5/examples/07_evonet/04_recurrent_bit_prediction.py +107 -0
  14. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/pyproject.toml +1 -1
  15. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_evonet_vector_io.py +5 -5
  16. evolib-0.2.0b2.dev4/evolib/initializers/evonet_initializers.py +0 -27
  17. evolib-0.2.0b2.dev4/examples/07_evonet/04_recurrent_bitseq.py +0 -144
  18. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/LICENSE +0 -0
  19. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/MANIFEST.in +0 -0
  20. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/README.md +0 -0
  21. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_core_individual.rst +0 -0
  22. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_core_population.rst +0 -0
  23. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_crossover.rst +0 -0
  24. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_evonet_structural_mutation.rst +0 -0
  25. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_mutation.rst +0 -0
  26. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_replacement.rst +0 -0
  27. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_reproduction.rst +0 -0
  28. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_selection.rst +0 -0
  29. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_operators_strategy.rst +0 -0
  30. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_public_api.rst +0 -0
  31. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_representation_evonet.rst +0 -0
  32. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_representation_netvector.rst +0 -0
  33. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_representation_vector.rst +0 -0
  34. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_utils_benchmarks.rst +0 -0
  35. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_utils_history_logger.rst +0 -0
  36. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_utils_loss_functions.rst +0 -0
  37. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/api_utils_plotting.rst +0 -0
  38. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/conf.py +0 -0
  39. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/config_guide.md +0 -0
  40. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/config_parameter.md +0 -0
  41. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/getting_started.md +0 -0
  42. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/docs/index.md +0 -0
  43. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/PIL/__init__.py +0 -0
  44. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/__init__.py +0 -0
  45. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  46. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  47. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  48. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/collections/__init__.py +0 -0
  49. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  50. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  51. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  52. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/cycler/__init__.py +0 -0
  53. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/email/__init__.py +0 -0
  54. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/__init__.py +0 -0
  55. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  56. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  57. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  58. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  59. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  60. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  61. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  62. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  63. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  64. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/html/__init__.py +0 -0
  65. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/__init__.py +0 -0
  66. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  67. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  68. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  69. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/json/__init__.py +0 -0
  70. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/logging/__init__.py +0 -0
  71. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  72. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  73. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  74. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  75. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  76. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  77. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  78. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  79. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  80. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  81. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  82. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  83. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  84. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  85. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  86. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  87. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  88. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/__init__.py +0 -0
  89. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  90. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  91. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  92. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  93. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  94. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  95. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  96. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  97. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  98. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  99. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  100. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  101. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  102. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  103. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  104. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  105. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  106. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  107. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/os/__init__.py +0 -0
  108. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/packaging/__init__.py +0 -0
  109. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  110. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  111. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  112. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  113. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  114. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  115. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  116. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  117. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  118. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/rich/__init__.py +0 -0
  119. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/sys/__init__.py +0 -0
  120. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  121. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/unittest/__init__.py +0 -0
  122. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/urllib/__init__.py +0 -0
  123. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/__init__.py +0 -0
  124. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  125. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  126. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  127. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/yaml/__init__.py +0 -0
  128. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  129. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  130. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  131. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/.mypy_cache/__init__.py +0 -0
  132. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/__init__.py +0 -0
  133. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/__pycache__/__init__.py +0 -0
  134. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/api.py +0 -0
  135. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/__init__.py +0 -0
  136. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/__pycache__/__init__.py +0 -0
  137. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/base_component_config.py +0 -0
  138. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/component_registry.py +0 -0
  139. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/evonet_component_config.py +0 -0
  140. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/schema.py +0 -0
  141. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/config/vector_component_config.py +0 -0
  142. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/PIL/__init__.py +0 -0
  143. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/__init__.py +0 -0
  144. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  145. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  146. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/collections/__init__.py +0 -0
  147. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  148. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  149. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  150. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/cycler/__init__.py +0 -0
  151. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/email/__init__.py +0 -0
  152. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/__init__.py +0 -0
  153. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  154. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  155. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  156. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  157. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  158. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/html/__init__.py +0 -0
  159. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/__init__.py +0 -0
  160. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  161. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  162. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  163. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/json/__init__.py +0 -0
  164. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/logging/__init__.py +0 -0
  165. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  166. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  167. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  168. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  169. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  170. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  171. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  172. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  173. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  174. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/__init__.py +0 -0
  175. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  176. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  177. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  178. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  179. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  180. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  181. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  182. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  183. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  184. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  185. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  186. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  187. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  188. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  189. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  190. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  191. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  192. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  193. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/os/__init__.py +0 -0
  194. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/packaging/__init__.py +0 -0
  195. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  196. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  197. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  198. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/sys/__init__.py +0 -0
  199. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/unittest/__init__.py +0 -0
  200. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/urllib/__init__.py +0 -0
  201. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/__init__.py +0 -0
  202. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  203. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  204. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  205. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/yaml/__init__.py +0 -0
  206. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  207. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  208. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/.mypy_cache/__init__.py +0 -0
  209. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/README.md +0 -0
  210. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/__init__.py +0 -0
  211. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/__pycache__/__init__.py +0 -0
  212. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/core/population.py +0 -0
  213. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/globals/README.md +0 -0
  214. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/globals/__init__.py +0 -0
  215. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/globals/__pycache__/__init__.py +0 -0
  216. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/globals/numeric.py +0 -0
  217. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/PIL/__init__.py +0 -0
  218. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/__init__.py +0 -0
  219. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  220. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  221. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/collections/__init__.py +0 -0
  222. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  223. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  224. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  225. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/cycler/__init__.py +0 -0
  226. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/email/__init__.py +0 -0
  227. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/__init__.py +0 -0
  228. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  229. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  230. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  231. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  232. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  233. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  234. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/html/__init__.py +0 -0
  235. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/__init__.py +0 -0
  236. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  237. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  238. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  239. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/json/__init__.py +0 -0
  240. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/logging/__init__.py +0 -0
  241. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  242. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  243. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  244. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  245. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  246. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  247. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  248. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  249. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  250. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/__init__.py +0 -0
  251. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  252. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  253. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  254. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  255. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  256. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  257. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  258. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  259. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  260. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  261. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  262. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  263. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  264. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  265. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  266. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  267. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  268. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  269. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/os/__init__.py +0 -0
  270. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/packaging/__init__.py +0 -0
  271. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  272. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  273. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  274. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/sys/__init__.py +0 -0
  275. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/unittest/__init__.py +0 -0
  276. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/urllib/__init__.py +0 -0
  277. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/__init__.py +0 -0
  278. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  279. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  280. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  281. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/yaml/__init__.py +0 -0
  282. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  283. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  284. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/.mypy_cache/__init__.py +0 -0
  285. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/__init__.py +0 -0
  286. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/__pycache__/__init__.py +0 -0
  287. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/net_initializers.py +0 -0
  288. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/initializers/vector_initializers.py +0 -0
  289. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/__init__.py +0 -0
  290. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/__pycache__/__init__.py +0 -0
  291. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/enum_helpers.py +0 -0
  292. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/enums.py +0 -0
  293. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/structs.py +0 -0
  294. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/interfaces/types.py +0 -0
  295. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/io/checkpoint.py +0 -0
  296. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/io/serialization.py +0 -0
  297. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/README.md +0 -0
  298. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/__init__.py +0 -0
  299. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/__pycache__/__init__.py +0 -0
  300. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/evonet_structural_mutation.py +0 -0
  301. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/mutation.py +0 -0
  302. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/replacement.py +0 -0
  303. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/reproduction.py +0 -0
  304. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/selection.py +0 -0
  305. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/operators/strategy.py +0 -0
  306. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/registry/__init__.py +0 -0
  307. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/registry/__pycache__/__init__.py +0 -0
  308. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/registry/replacement_registry.py +0 -0
  309. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/registry/selection_registry.py +0 -0
  310. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/registry/strategy_registry.py +0 -0
  311. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/PIL/__init__.py +0 -0
  312. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/__init__.py +0 -0
  313. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  314. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  315. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  316. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/collections/__init__.py +0 -0
  317. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  318. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  319. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  320. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/cycler/__init__.py +0 -0
  321. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/email/__init__.py +0 -0
  322. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/__init__.py +0 -0
  323. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  324. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  325. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  326. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  327. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  328. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  329. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  330. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  331. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  332. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/html/__init__.py +0 -0
  333. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/__init__.py +0 -0
  334. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  335. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  336. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  337. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/json/__init__.py +0 -0
  338. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/logging/__init__.py +0 -0
  339. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  340. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  341. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  342. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  343. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  344. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  345. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  346. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  347. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  348. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  349. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  350. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  351. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  352. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  353. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  354. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  355. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  356. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/__init__.py +0 -0
  357. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  358. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  359. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  360. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  361. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  362. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  363. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  364. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  365. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  366. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  367. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  368. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  369. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  370. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  371. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  372. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  373. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  374. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  375. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/os/__init__.py +0 -0
  376. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/packaging/__init__.py +0 -0
  377. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  378. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  379. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  380. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  381. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  382. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  383. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  384. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  385. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  386. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/rich/__init__.py +0 -0
  387. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/sys/__init__.py +0 -0
  388. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  389. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/unittest/__init__.py +0 -0
  390. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/urllib/__init__.py +0 -0
  391. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/__init__.py +0 -0
  392. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  393. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  394. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  395. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/yaml/__init__.py +0 -0
  396. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  397. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  398. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  399. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/.mypy_cache/__init__.py +0 -0
  400. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/__init__.py +0 -0
  401. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/__pycache__/__init__.py +0 -0
  402. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/_apply_config_mapping.py +0 -0
  403. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/base.py +0 -0
  404. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/composite.py +0 -0
  405. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/evo_params.py +0 -0
  406. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/netvector.py +0 -0
  407. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/representation/vector.py +0 -0
  408. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/README.md +0 -0
  409. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/__init__.py +0 -0
  410. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/__pycache__/__init__.py +0 -0
  411. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/config_loader.py +0 -0
  412. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/fitness.py +0 -0
  413. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/history_logger.py +0 -0
  414. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/loss_functions.py +0 -0
  415. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/random.py +0 -0
  416. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib/utils/registry.py +0 -0
  417. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib.egg-info/dependency_links.txt +0 -0
  418. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib.egg-info/requires.txt +0 -0
  419. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/evolib.egg-info/top_level.txt +0 -0
  420. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/01_getting_started.py +0 -0
  421. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/02_mutation.py +0 -0
  422. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/03_population_mutation.py +0 -0
  423. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/01_basic_usage/04_fitness.py +0 -0
  424. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/02_strategies/02_mu_lambda_step.py +0 -0
  425. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/02_strategies/03_mu_lambda.py +0 -0
  426. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/02_strategies/04_flexible.py +0 -0
  427. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/01_history.py +0 -0
  428. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/02_plotting.py +0 -0
  429. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/03_compare_runs.py +0 -0
  430. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/04_exponential_decay_vs_static.py +0 -0
  431. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/05_adaptive_global_vs_static.py +0 -0
  432. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/06_adaptive_individual_vs_static.py +0 -0
  433. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/07_selection_comparison.py +0 -0
  434. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/08_selection_pressure.py +0 -0
  435. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/09_selection_vs_mutation_pressure.py +0 -0
  436. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/10_selection_stochastic_vs_deterministic.py +0 -0
  437. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/03_comparisons/11_crossover_comparison.py +0 -0
  438. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/01_polynomial_sine.py +0 -0
  439. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/02_sine_point_approximation.py +0 -0
  440. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/04_function_approximation/03_approximation_with_noise.py +0 -0
  441. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/01_fitness_landscape_exploration.py +0 -0
  442. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/02_rosenbrock_surface_path.py +0 -0
  443. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/03_vector_control.py +0 -0
  444. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/04_vector_control_with_obstacles.py +0 -0
  445. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/05_piecewise_linear_xsys.py +0 -0
  446. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/05_advanced_topics/06_evolving_mutation_strength_as_a_module.py +0 -0
  447. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/06_netvector/01_netvector_sine_approximation.py +0 -0
  448. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/06_netvector/02_netvector_modulated_output.py +0 -0
  449. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/06_netvector/03_netvector_gain_and_bias.py +0 -0
  450. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/07_evonet/01_sine_approximation.py +0 -0
  451. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/07_evonet/02_image_approximation.py +0 -0
  452. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/07_evonet/03_structural_xor.py +0 -0
  453. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/examples/07_evonet/resize_all_images.py +0 -0
  454. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/setup.cfg +0 -0
  455. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_benchmarks.py +0 -0
  456. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_config_loader.py +0 -0
  457. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_elitism_preserves_best_fitness.py +0 -0
  458. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_initializer_evonet.py +0 -0
  459. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_initializer_net.py +0 -0
  460. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_mutation.py +0 -0
  461. {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev5}/tests/test_population.py +0 -0
  462. {evolib-0.2.0b2.dev4 → 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.dev4
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
@@ -24,13 +24,14 @@ from typing import Any, Dict, Optional
24
24
  from uuid import uuid4
25
25
 
26
26
  from evolib.interfaces.enums import Origin
27
+ from evolib.representation.dummy import ParaDummy
27
28
 
28
29
 
29
30
  class Indiv:
30
31
  """Represents an individual in an evolutionary optimization algorithm."""
31
32
 
32
- #: para (Any, optional): Parameter values of the individual. Default: None.
33
- para: Any | None
33
+ #: para (Any): Parameter values of the individual. Default: None.
34
+ para: Any
34
35
 
35
36
  #: fitness (float): Fitness value of the individual.
36
37
  #: None means the individual has not yet been evaluated.
@@ -73,9 +74,9 @@ class Indiv:
73
74
  "is_elite",
74
75
  )
75
76
 
76
- def __init__(self, para: Any | None = None):
77
+ def __init__(self, para: Any = None):
77
78
  self.id: str = str(uuid4())
78
- self.para = para
79
+ self.para = para if para is not None else ParaDummy()
79
80
  self.fitness = None
80
81
  self.is_evaluated = False
81
82
  self.age = 0
@@ -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
 
@@ -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
+ )
@@ -0,0 +1,31 @@
1
+ """
2
+ Placeholder implementation of ParaBase for uninitialized individuals.
3
+
4
+ Ensures that every individual always has a ParaBase instance, even before configuration.
5
+ All operations (mutation, crossover, apply_config) raise clear errors to prevent
6
+ accidental use of uninitialized parameters.
7
+ """
8
+
9
+ from typing import Any
10
+
11
+ from evolib.interfaces.types import ModuleConfig
12
+ from evolib.representation.base import ParaBase
13
+
14
+
15
+ class ParaDummy(ParaBase):
16
+ """Placeholder ParaBase used for uninitialized individuals."""
17
+
18
+ def apply_config(self, cfg: ModuleConfig) -> None:
19
+ raise RuntimeError("DummyPara cannot be configured.")
20
+
21
+ def mutate(self) -> None:
22
+ raise RuntimeError("DummyPara cannot be mutated.")
23
+
24
+ def print_status(self) -> None:
25
+ print("[DummyPara] (no parameters)")
26
+
27
+ def get_status(self) -> str | dict[str, Any]:
28
+ return "<DummyPara: no parameters>"
29
+
30
+ def crossover_with(self, partner: "ParaBase") -> None:
31
+ raise RuntimeError("DummyPara cannot participate in crossover.")
@@ -10,14 +10,12 @@ import random as rng
10
10
  from typing import Any, Literal, Optional
11
11
 
12
12
  import numpy as np
13
- from evonet.activation import random_function_name
14
13
  from evonet.core import Nnet
15
14
  from evonet.enums import NeuronRole
16
15
  from evonet.mutation import mutate_activations, mutate_bias, mutate_weight
17
16
 
18
17
  from evolib.config.base_component_config import StructuralMutationConfig
19
18
  from evolib.config.evonet_component_config import EvoNetComponentConfig
20
- from evolib.interfaces.enum_helpers import resolve_recurrent_kinds
21
19
  from evolib.interfaces.enums import MutationStrategy
22
20
  from evolib.interfaces.types import ModuleConfig
23
21
  from evolib.operators.evonet_structural_mutation import mutate_structure
@@ -112,46 +110,6 @@ class EvoNet(ParaBase):
112
110
  # Apply crossover config
113
111
  apply_crossover_config(evo_params, cfg.crossover)
114
112
 
115
- # Activation functions per layer
116
- if isinstance(cfg.activation, list):
117
- activations = cfg.activation
118
- else:
119
- # Apply the same activation to all hidden/output layers,
120
- # but force input layer to be linear
121
- activations = ["linear"] + [cfg.activation] * (len(cfg.dim) - 1)
122
-
123
- for layer_idx, num_neurons in enumerate(self.dim):
124
- if num_neurons == 0:
125
- continue
126
-
127
- activation_name = activations[layer_idx]
128
-
129
- if activation_name == "random":
130
- if cfg.activations_allowed is not None:
131
- activation_name = random_function_name(cfg.activations_allowed)
132
- else:
133
- activation_name = random_function_name()
134
-
135
- self.net.add_layer()
136
-
137
- if layer_idx == 0:
138
- # Input Layer
139
- role = NeuronRole.INPUT
140
- elif layer_idx == len(self.dim) - 1:
141
- # Output Layer
142
- role = NeuronRole.OUTPUT
143
- else:
144
- # Hidden Layer
145
- role = NeuronRole.HIDDEN
146
-
147
- recurrent_kinds = resolve_recurrent_kinds(cfg.recurrent)
148
- self.net.add_neuron(
149
- count=num_neurons,
150
- activation=activation_name,
151
- role=role,
152
- recurrent=recurrent_kinds if role != NeuronRole.INPUT else None,
153
- )
154
-
155
113
  def calc(self, input_values: list[float]) -> list[float]:
156
114
  return self.net.calc(input_values)
157
115
 
@@ -1,9 +1,107 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  """Common mathematical benchmark functions for optimization tasks."""
3
3
 
4
+ from typing import Sequence
5
+
4
6
  import numpy as np
5
7
 
6
8
 
9
+ def lfsr_sequence(
10
+ length: int,
11
+ seed: int = 0b10011,
12
+ taps: tuple[int, ...] = (5, 2),
13
+ invert_feedback: bool = True,
14
+ ) -> list[int]:
15
+ """
16
+ Generate a binary sequence using an n-bit LFSR (Linear Feedback Shift Register).
17
+
18
+ Parameters
19
+ ----------
20
+ length : int
21
+ Number of output bits to generate.
22
+ seed : int, optional
23
+ Initial state of the LFSR (must be non-zero). Default: 0b10011.
24
+ taps : tuple[int, ...], optional
25
+ Tap positions (1-based, e.g. (5, 2) for x^5 + x^2 + 1).
26
+ invert_feedback : bool, optional
27
+ If True (default), the feedback bit is inverted at initialization.
28
+ This variant ensures a maximal-length sequence for (5, 2).
29
+ If False, the classical Fibonacci-LFSR update rule is used.
30
+
31
+ Returns
32
+ -------
33
+ list[int]
34
+ Generated bit sequence of the given length.
35
+ """
36
+ n = max(taps)
37
+ if seed == 0:
38
+ raise ValueError("Seed must be non-zero for LFSR.")
39
+
40
+ state = seed & ((1 << n) - 1)
41
+ seq: list[int] = []
42
+
43
+ for _ in range(length):
44
+ bit = state & 1
45
+ seq.append(bit)
46
+
47
+ fb = 1 if invert_feedback else 0
48
+ for t in taps:
49
+ fb ^= (state >> (t - 1)) & 1
50
+
51
+ state = (state >> 1) | (fb << (n - 1))
52
+
53
+ return seq
54
+
55
+
56
+ def xor_sequence(length: int, k: int = 2, seed: Sequence[int] = (0, 1)) -> list[int]:
57
+ """
58
+ Generate a sequence where each new bit is the XOR of the last k bits.
59
+
60
+ Parameters
61
+ ----------
62
+ length : int
63
+ Length of the sequence to generate.
64
+ k : int, optional
65
+ Window size for XOR. Default: 2 (classic XOR sequence).
66
+ seed : Sequence[int], optional
67
+ Initial bits to start the sequence. Must have length >= k.
68
+
69
+ Returns
70
+ -------
71
+ list[int]
72
+ Generated bit sequence of the given length.
73
+ """
74
+ if len(seed) < k:
75
+ raise ValueError(f"Seed must have at least {k} bits.")
76
+ seq = list(seed)
77
+ while len(seq) < length:
78
+ next_bit = 0
79
+ for i in range(1, k + 1):
80
+ next_bit ^= seq[-i]
81
+ seq.append(next_bit)
82
+ return seq[:length]
83
+
84
+
85
+ def random_fixed_sequence(length: int, seed: int = 1234) -> list[int]:
86
+ """
87
+ Generate a reproducible random bit sequence with a fixed seed.
88
+
89
+ Parameters
90
+ ----------
91
+ length : int
92
+ Length of the sequence.
93
+ seed : int, optional
94
+ Random seed for reproducibility. Default: 1234.
95
+
96
+ Returns
97
+ -------
98
+ list[int]
99
+ Generated random bit sequence (0/1).
100
+ """
101
+ rng = np.random.RandomState(seed)
102
+ return rng.randint(0, 2, size=length).tolist()
103
+
104
+
7
105
  def simple_quadratic(x: np.ndarray) -> float:
8
106
  """
9
107
  Simple 1D benchmark: f(x) = x^2
@@ -632,6 +632,9 @@ def plot_bit_prediction(
632
632
  axes[1].set_ylabel("Value")
633
633
  axes[1].legend(loc="upper right")
634
634
 
635
+ # add threshold line at 0.5
636
+ axes[1].axhline(0.5, color="gray", linestyle="--", linewidth=1, alpha=0.6)
637
+
635
638
  # save/show
636
639
  if save_path:
637
640
  os.makedirs(os.path.dirname(save_path), exist_ok=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolib
3
- Version: 0.2.0b2.dev4
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
@@ -306,6 +306,7 @@ evolib/representation/__init__.py
306
306
  evolib/representation/_apply_config_mapping.py
307
307
  evolib/representation/base.py
308
308
  evolib/representation/composite.py
309
+ evolib/representation/dummy.py
309
310
  evolib/representation/evo_params.py
310
311
  evolib/representation/evonet.py
311
312
  evolib/representation/netvector.py
@@ -445,7 +446,7 @@ examples/06_netvector/03_netvector_gain_and_bias.py
445
446
  examples/07_evonet/01_sine_approximation.py
446
447
  examples/07_evonet/02_image_approximation.py
447
448
  examples/07_evonet/03_structural_xor.py
448
- examples/07_evonet/04_recurrent_bitseq.py
449
+ examples/07_evonet/04_recurrent_bit_prediction.py
449
450
  examples/07_evonet/resize_all_images.py
450
451
  tests/test_benchmarks.py
451
452
  tests/test_config_loader.py
@@ -74,14 +74,14 @@ pop = Pop(config_path="01_step_by_step_evolution.yaml", fitness_function=my_fitn
74
74
  pop.evaluate_fitness()
75
75
  print_indivs("0) Evaluate parents :", pop.indivs)
76
76
 
77
- # Step 1) Update per-generation parameters (mutation/crossover controls)
78
- pop.update_parameters()
79
- print_indivs("1) Update parameters: ", pop.indivs)
80
-
81
- # Step 2) Produce offspring by cloning
77
+ # Step 1) Produce offspring by cloning
82
78
  offspring = generate_cloned_offspring(pop.indivs, pop.offspring_pool_size)
83
79
  print_indivs("2) Reproduction (clone parents -> offspring): ", offspring)
84
80
 
81
+ # Step 2) Update per-generation parameters (mutation/crossover controls)
82
+ pop.update_parameters(offspring)
83
+ print_indivs("1) Update parameters: ", pop.indivs)
84
+
85
85
  # Step 3) Crossover pairs (in-place)
86
86
  crossover_offspring(pop, offspring)
87
87
  print_indivs("3) Crossover: ", offspring)
@@ -0,0 +1,107 @@
1
+ """
2
+ Example: Recurrent Bit Sequence Prediction (with LFSR)
3
+
4
+ This example demonstrates how an EvoNet with recurrent connections
5
+ can be evolved to predict the next bit in a pseudo-random binary sequence
6
+ generated by a 5-bit LFSR.
7
+
8
+ Key details:
9
+ - The sequence has period length 31 (maximal length LFSR).
10
+ - The sequence is repeated twice: first pass = warm-up, second pass = evaluation.
11
+ - Fitness combines mean squared error with a penalty for misclassification.
12
+ - Visualization shows input, target, and predictions during the evaluation phase.
13
+ """
14
+
15
+ from evolib import Individual, Population, plot_bit_prediction
16
+ from evolib.utils.benchmarks import lfsr_sequence
17
+
18
+ FRAME_FOLDER = "04_frames"
19
+ CONFIG_FILE = "configs/04_recurrent_bit_prediction.yaml"
20
+
21
+ SEQ_LENGTH = 31
22
+ warmup_steps = SEQ_LENGTH
23
+
24
+ input_seq = lfsr_sequence(SEQ_LENGTH) * 2
25
+ target_seq = input_seq[1:] + [input_seq[0]]
26
+
27
+
28
+ def fitness_bitseq(indiv: Individual) -> None:
29
+ """
30
+ Evaluate how well the EvoNet predicts the next bit in a fixed sequence.
31
+
32
+ Additionally logs classification accuracy in indiv.extra_metrics.
33
+ Note: Fitness combines MSE with penalty term (1-accuracy)/4
34
+ """
35
+ net = indiv.para["brain"].net
36
+ net.reset(full=True)
37
+
38
+ total_error = 0.0
39
+ correct = 0
40
+ count = 0
41
+
42
+ for t in range(len(input_seq)):
43
+ output = net.calc([input_seq[t]])[0]
44
+ if t >= warmup_steps:
45
+ target = target_seq[t]
46
+ # --- MSE ---
47
+ error = output - target
48
+ total_error += error**2
49
+
50
+ # --- Accuracy ---
51
+ pred_bit = 1 if output > 0.5 else 0
52
+ if pred_bit == target:
53
+ correct += 1
54
+ count += 1
55
+
56
+ mse = total_error / count
57
+ acc = correct / count if count > 0 else 0.0
58
+
59
+ # Log extra metrics
60
+ indiv.extra_metrics = {"accuracy": acc, "mse": mse}
61
+
62
+ indiv.fitness = mse + (1 - acc) / 4
63
+
64
+
65
+ def save_plot(pop: Population) -> None:
66
+ best = pop.best()
67
+ net = best.para["brain"].net
68
+ net.reset(full=True)
69
+
70
+ # Warmup
71
+ for bit in input_seq[:SEQ_LENGTH]:
72
+ net.calc([bit])
73
+
74
+ # Prediction
75
+ y_preds = [net.calc([bit])[0] for bit in input_seq[SEQ_LENGTH:]]
76
+
77
+ true_bits = target_seq[SEQ_LENGTH:]
78
+ input_bits = input_seq[SEQ_LENGTH:]
79
+
80
+ acc = best.extra_metrics.get("accuracy", 0.0)
81
+ mse = best.extra_metrics.get("mse", best.fitness)
82
+
83
+ print(
84
+ f"[Gen {pop.generation_num}] best fitness={best.fitness:.5f}, "
85
+ f"acc={acc:.3%}, mse={mse:.5f}"
86
+ )
87
+
88
+ plot_bit_prediction(
89
+ true_bits=true_bits,
90
+ pred_values=y_preds,
91
+ input_bits=input_bits,
92
+ title=(
93
+ f"Bit Prediction (gen={pop.generation_num}, "
94
+ f"MSE={mse:.5f}, Acc={acc:.3%})"
95
+ ),
96
+ save_path=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.png",
97
+ )
98
+
99
+
100
+ if __name__ == "__main__":
101
+ pop = Population(CONFIG_FILE, fitness_function=fitness_bitseq)
102
+ pop.run(verbosity=0, on_generation_end=save_plot)
103
+
104
+ best = pop.best()
105
+ best.para["brain"].net.print_graph(
106
+ "04_recurrent_bit_prediction", fillcolors_on=True
107
+ )
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "evolib"
7
- version = "0.2.0b2.dev4"
7
+ version = "0.2.0b2.dev5"
8
8
  description = "A modular framework for evolutionary strategies and neuroevolution."
9
9
  authors = [
10
10
  { name = "EvoLib", email = "evolib@dismail.de" }
@@ -17,21 +17,21 @@ def _build_net_2_3_1(para: EvoNet) -> None:
17
17
  role=NeuronRole.INPUT,
18
18
  activation="linear",
19
19
  count=2,
20
- connect_layer=False,
20
+ connection_init="none",
21
21
  )
22
22
  para.net.add_neuron(
23
23
  layer_idx=1,
24
24
  role=NeuronRole.HIDDEN,
25
25
  activation="linear",
26
26
  count=3,
27
- connect_layer=True,
27
+ connection_init="random",
28
28
  )
29
29
  para.net.add_neuron(
30
30
  layer_idx=2,
31
31
  role=NeuronRole.OUTPUT,
32
32
  activation="linear",
33
33
  count=1,
34
- connect_layer=True,
34
+ connection_init="random",
35
35
  )
36
36
 
37
37
 
@@ -44,14 +44,14 @@ def _build_net_1_1(para: EvoNet) -> None:
44
44
  role=NeuronRole.INPUT,
45
45
  activation="linear",
46
46
  count=1,
47
- connect_layer=False,
47
+ connection_init="none",
48
48
  )
49
49
  para.net.add_neuron(
50
50
  layer_idx=1,
51
51
  role=NeuronRole.OUTPUT,
52
52
  activation="linear",
53
53
  count=1,
54
- connect_layer=True,
54
+ connection_init="random",
55
55
  )
56
56
 
57
57