evolib 0.2.0b3.dev2__tar.gz → 0.2.0b3.dev4__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 (476) hide show
  1. {evolib-0.2.0b3.dev2/evolib.egg-info → evolib-0.2.0b3.dev4}/PKG-INFO +5 -5
  2. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/README.md +4 -4
  3. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/index.md +23 -2
  4. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/envs/gym_wrapper.py +8 -1
  5. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4/evolib.egg-info}/PKG-INFO +5 -5
  6. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib.egg-info/SOURCES.txt +3 -3
  7. evolib-0.2.0b3.dev4/examples/08_gym/03_cartpole.py +44 -0
  8. evolib-0.2.0b3.dev4/examples/08_gym/04_lunar_lander.py +46 -0
  9. evolib-0.2.0b3.dev4/examples/08_gym/05_bipedal_walker.py +68 -0
  10. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/pyproject.toml +1 -1
  11. evolib-0.2.0b3.dev2/examples/08_gym/01_cartpole.py +0 -32
  12. evolib-0.2.0b3.dev2/examples/08_gym/02_lunar_lander.py +0 -40
  13. evolib-0.2.0b3.dev2/examples/08_gym/03_taxi.py +0 -85
  14. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/LICENSE +0 -0
  15. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/MANIFEST.in +0 -0
  16. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_core_individual.rst +0 -0
  17. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_core_population.rst +0 -0
  18. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_crossover.rst +0 -0
  19. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_evonet_structural_mutation.rst +0 -0
  20. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_mutation.rst +0 -0
  21. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_replacement.rst +0 -0
  22. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_reproduction.rst +0 -0
  23. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_selection.rst +0 -0
  24. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_operators_strategy.rst +0 -0
  25. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_public_api.rst +0 -0
  26. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_representation_evonet.rst +0 -0
  27. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_representation_netvector.rst +0 -0
  28. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_representation_vector.rst +0 -0
  29. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_utils_benchmarks.rst +0 -0
  30. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_utils_history_logger.rst +0 -0
  31. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_utils_loss_functions.rst +0 -0
  32. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/api_utils_plotting.rst +0 -0
  33. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/conf.py +0 -0
  34. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/config_guide.md +0 -0
  35. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/config_parameter.md +0 -0
  36. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/docs/getting_started.md +0 -0
  37. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/PIL/__init__.py +0 -0
  38. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/__init__.py +0 -0
  39. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  40. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  41. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  42. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/collections/__init__.py +0 -0
  43. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  44. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  45. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  46. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/cycler/__init__.py +0 -0
  47. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/email/__init__.py +0 -0
  48. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/__init__.py +0 -0
  49. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  50. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  51. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  52. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  53. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  54. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  55. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  56. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  57. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  58. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/html/__init__.py +0 -0
  59. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/importlib/__init__.py +0 -0
  60. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  61. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  62. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  63. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/json/__init__.py +0 -0
  64. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/logging/__init__.py +0 -0
  65. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  66. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  67. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  68. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  69. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  70. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  71. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  72. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  73. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  74. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  75. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  76. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  77. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  78. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  79. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  80. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  81. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  82. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/__init__.py +0 -0
  83. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  84. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  85. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  86. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  87. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  88. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  89. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  90. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  91. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  92. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  93. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  94. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  95. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  96. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  97. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  98. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  99. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  100. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  101. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/os/__init__.py +0 -0
  102. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/packaging/__init__.py +0 -0
  103. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  104. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  105. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  106. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  107. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  108. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  109. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  110. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  111. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  112. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/rich/__init__.py +0 -0
  113. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/sys/__init__.py +0 -0
  114. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  115. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/unittest/__init__.py +0 -0
  116. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/urllib/__init__.py +0 -0
  117. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/xml/__init__.py +0 -0
  118. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  119. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  120. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  121. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/yaml/__init__.py +0 -0
  122. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  123. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  124. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  125. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/.mypy_cache/__init__.py +0 -0
  126. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/__init__.py +0 -0
  127. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/__pycache__/__init__.py +0 -0
  128. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/api.py +0 -0
  129. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/__init__.py +0 -0
  130. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/__pycache__/__init__.py +0 -0
  131. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/base_component_config.py +0 -0
  132. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/component_registry.py +0 -0
  133. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/evonet_component_config.py +0 -0
  134. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/schema.py +0 -0
  135. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/config/vector_component_config.py +0 -0
  136. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/PIL/__init__.py +0 -0
  137. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/__init__.py +0 -0
  138. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  139. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  140. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/collections/__init__.py +0 -0
  141. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  142. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  143. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  144. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/cycler/__init__.py +0 -0
  145. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/email/__init__.py +0 -0
  146. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/__init__.py +0 -0
  147. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  148. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  149. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  150. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  151. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  152. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/html/__init__.py +0 -0
  153. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/importlib/__init__.py +0 -0
  154. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  155. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  156. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  157. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/json/__init__.py +0 -0
  158. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/logging/__init__.py +0 -0
  159. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  160. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  161. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  162. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  163. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  164. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  165. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  166. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  167. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  168. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/__init__.py +0 -0
  169. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  170. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  171. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  172. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  173. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  174. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  175. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  176. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  177. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  178. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  179. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  180. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  181. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  182. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  183. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  184. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  185. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  186. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  187. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/os/__init__.py +0 -0
  188. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/packaging/__init__.py +0 -0
  189. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  190. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  191. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  192. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/sys/__init__.py +0 -0
  193. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/unittest/__init__.py +0 -0
  194. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/urllib/__init__.py +0 -0
  195. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/xml/__init__.py +0 -0
  196. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  197. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  198. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  199. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/yaml/__init__.py +0 -0
  200. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  201. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  202. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/.mypy_cache/__init__.py +0 -0
  203. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/README.md +0 -0
  204. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/__init__.py +0 -0
  205. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/__pycache__/__init__.py +0 -0
  206. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/individual.py +0 -0
  207. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/core/population.py +0 -0
  208. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/globals/README.md +0 -0
  209. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/globals/__init__.py +0 -0
  210. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/globals/__pycache__/__init__.py +0 -0
  211. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/globals/numeric.py +0 -0
  212. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/PIL/__init__.py +0 -0
  213. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/__init__.py +0 -0
  214. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  215. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  216. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/collections/__init__.py +0 -0
  217. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  218. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  219. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  220. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/cycler/__init__.py +0 -0
  221. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/email/__init__.py +0 -0
  222. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/__init__.py +0 -0
  223. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  224. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  225. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  226. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  227. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  228. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  229. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/html/__init__.py +0 -0
  230. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/importlib/__init__.py +0 -0
  231. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  232. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  233. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  234. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/json/__init__.py +0 -0
  235. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/logging/__init__.py +0 -0
  236. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  237. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  238. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  239. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  240. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  241. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  242. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  243. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  244. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  245. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/__init__.py +0 -0
  246. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  247. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  248. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  249. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  250. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  251. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  252. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  253. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  254. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  255. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  256. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  257. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  258. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  259. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  260. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  261. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  262. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  263. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  264. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/os/__init__.py +0 -0
  265. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/packaging/__init__.py +0 -0
  266. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  267. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  268. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  269. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/sys/__init__.py +0 -0
  270. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/unittest/__init__.py +0 -0
  271. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/urllib/__init__.py +0 -0
  272. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/xml/__init__.py +0 -0
  273. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  274. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  275. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  276. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/yaml/__init__.py +0 -0
  277. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  278. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  279. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/.mypy_cache/__init__.py +0 -0
  280. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/__init__.py +0 -0
  281. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/__pycache__/__init__.py +0 -0
  282. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/evonet_initializers.py +0 -0
  283. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/net_initializers.py +0 -0
  284. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/registry.py +0 -0
  285. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/initializers/vector_initializers.py +0 -0
  286. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/__init__.py +0 -0
  287. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/__pycache__/__init__.py +0 -0
  288. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/enum_helpers.py +0 -0
  289. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/enums.py +0 -0
  290. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/structs.py +0 -0
  291. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/interfaces/types.py +0 -0
  292. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/io/checkpoint.py +0 -0
  293. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/io/serialization.py +0 -0
  294. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/README.md +0 -0
  295. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/__init__.py +0 -0
  296. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/__pycache__/__init__.py +0 -0
  297. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/crossover.py +0 -0
  298. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/evonet_structural_mutation.py +0 -0
  299. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/mutation.py +0 -0
  300. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/replacement.py +0 -0
  301. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/reproduction.py +0 -0
  302. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/selection.py +0 -0
  303. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/operators/strategy.py +0 -0
  304. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/registry/__init__.py +0 -0
  305. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/registry/__pycache__/__init__.py +0 -0
  306. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/registry/replacement_registry.py +0 -0
  307. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/registry/selection_registry.py +0 -0
  308. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/registry/strategy_registry.py +0 -0
  309. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/PIL/__init__.py +0 -0
  310. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/__init__.py +0 -0
  311. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
  312. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
  313. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/asyncio/__init__.py +0 -0
  314. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/collections/__init__.py +0 -0
  315. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/concurrent/__init__.py +0 -0
  316. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
  317. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/ctypes/__init__.py +0 -0
  318. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/cycler/__init__.py +0 -0
  319. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/email/__init__.py +0 -0
  320. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/__init__.py +0 -0
  321. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
  322. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
  323. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
  324. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
  325. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
  326. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
  327. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
  328. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
  329. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
  330. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/html/__init__.py +0 -0
  331. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/importlib/__init__.py +0 -0
  332. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
  333. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
  334. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/jinja2/__init__.py +0 -0
  335. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/json/__init__.py +0 -0
  336. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/logging/__init__.py +0 -0
  337. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
  338. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
  339. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
  340. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
  341. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
  342. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
  343. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
  344. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
  345. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
  346. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
  347. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
  348. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
  349. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
  350. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
  351. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
  352. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/mdurl/__init__.py +0 -0
  353. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
  354. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/__init__.py +0 -0
  355. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
  356. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
  357. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
  358. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
  359. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
  360. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
  361. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
  362. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
  363. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
  364. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
  365. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
  366. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
  367. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
  368. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
  369. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
  370. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
  371. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
  372. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
  373. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/os/__init__.py +0 -0
  374. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/packaging/__init__.py +0 -0
  375. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic/__init__.py +0 -0
  376. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
  377. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
  378. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
  379. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
  380. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
  381. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
  382. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
  383. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
  384. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/rich/__init__.py +0 -0
  385. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/sys/__init__.py +0 -0
  386. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
  387. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/unittest/__init__.py +0 -0
  388. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/urllib/__init__.py +0 -0
  389. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/xml/__init__.py +0 -0
  390. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
  391. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
  392. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
  393. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/yaml/__init__.py +0 -0
  394. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/zipfile/__init__.py +0 -0
  395. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
  396. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
  397. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/.mypy_cache/__init__.py +0 -0
  398. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/__init__.py +0 -0
  399. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/__pycache__/__init__.py +0 -0
  400. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/_apply_config_mapping.py +0 -0
  401. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/base.py +0 -0
  402. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/composite.py +0 -0
  403. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/dummy.py +0 -0
  404. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/evo_params.py +0 -0
  405. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/evonet.py +0 -0
  406. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/netvector.py +0 -0
  407. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/representation/vector.py +0 -0
  408. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/README.md +0 -0
  409. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/__init__.py +0 -0
  410. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/__pycache__/__init__.py +0 -0
  411. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/benchmarks.py +0 -0
  412. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/config_loader.py +0 -0
  413. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/fitness.py +0 -0
  414. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/history_logger.py +0 -0
  415. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/loss_functions.py +0 -0
  416. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/parallel.py +0 -0
  417. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/plotting.py +0 -0
  418. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/random.py +0 -0
  419. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib/utils/registry.py +0 -0
  420. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib.egg-info/dependency_links.txt +0 -0
  421. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib.egg-info/requires.txt +0 -0
  422. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/evolib.egg-info/top_level.txt +0 -0
  423. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/01_basic_usage/01_getting_started.py +0 -0
  424. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/01_basic_usage/02_mutation.py +0 -0
  425. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/01_basic_usage/03_population_mutation.py +0 -0
  426. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/01_basic_usage/04_fitness.py +0 -0
  427. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/02_strategies/01_step_by_step_evolution.py +0 -0
  428. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/02_strategies/02_mu_lambda_step.py +0 -0
  429. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/02_strategies/03_mu_lambda.py +0 -0
  430. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/02_strategies/04_flexible.py +0 -0
  431. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/01_history.py +0 -0
  432. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/02_plotting.py +0 -0
  433. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/03_compare_runs.py +0 -0
  434. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/04_exponential_decay_vs_static.py +0 -0
  435. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/05_adaptive_global_vs_static.py +0 -0
  436. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/06_adaptive_individual_vs_static.py +0 -0
  437. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/07_selection_comparison.py +0 -0
  438. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/08_selection_pressure.py +0 -0
  439. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/09_selection_vs_mutation_pressure.py +0 -0
  440. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/10_selection_stochastic_vs_deterministic.py +0 -0
  441. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/03_comparisons/11_crossover_comparison.py +0 -0
  442. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/04_function_approximation/01_polynomial_sine.py +0 -0
  443. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/04_function_approximation/02_sine_point_approximation.py +0 -0
  444. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/04_function_approximation/03_approximation_with_noise.py +0 -0
  445. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/01_fitness_landscape_exploration.py +0 -0
  446. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/02_rosenbrock_surface_path.py +0 -0
  447. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/03_vector_control.py +0 -0
  448. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/04_vector_control_with_obstacles.py +0 -0
  449. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/05_piecewise_linear_xsys.py +0 -0
  450. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/05_advanced_topics/06_evolving_mutation_strength_as_a_module.py +0 -0
  451. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/06_netvector/01_netvector_sine_approximation.py +0 -0
  452. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/06_netvector/02_netvector_modulated_output.py +0 -0
  453. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/06_netvector/03_netvector_gain_and_bias.py +0 -0
  454. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/00_identity_test.py +0 -0
  455. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/01_sine_approximation.py +0 -0
  456. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/02_image_approximation.py +0 -0
  457. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/03_structural_xor.py +0 -0
  458. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/04_recurrent_bit_prediction.py +0 -0
  459. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/05_recurrent_timeseries.py +0 -0
  460. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/06_recurrent_indicator.py +0 -0
  461. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/06_recurrent_indicator_01.py +0 -0
  462. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/06_recurrent_indicator_02.py +0 -0
  463. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/06_recurrent_trading.py +0 -0
  464. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/07_evonet/07_recurrent_trading_01.py +0 -0
  465. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/08_gym/01_frozen_lake.py +0 -0
  466. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/examples/08_gym/02_cliff_walking.py +0 -0
  467. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/setup.cfg +0 -0
  468. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_benchmarks.py +0 -0
  469. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_config_loader.py +0 -0
  470. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_elitism_preserves_best_fitness.py +0 -0
  471. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_evonet_vector_io.py +0 -0
  472. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_initializer_evonet.py +0 -0
  473. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_initializer_net.py +0 -0
  474. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_mutation.py +0 -0
  475. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_population.py +0 -0
  476. {evolib-0.2.0b3.dev2 → evolib-0.2.0b3.dev4}/tests/test_selection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolib
3
- Version: 0.2.0b3.dev2
3
+ Version: 0.2.0b3.dev4
4
4
  Summary: A modular framework for evolutionary strategies and neuroevolution.
5
5
  Author-email: EvoLib <evolib@dismail.de>
6
6
  License: MIT License
@@ -80,7 +80,7 @@ EvoLib is a lightweight and transparent framework for evolutionary computation,
80
80
  - **Modularity**: mutation, selection, crossover, and parameter representations can be freely combined.
81
81
  - **Educational value**: examples and a clean API make it practical for illustrating evolutionary concepts.
82
82
  - **Neuroevolution support**: structural mutations (adding/removing neurons and connections) and evolvable networks via EvoNet.
83
- - **Gymnasium integration**: run standard RL benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
83
+ - **Gymnasium integration**: run [Gymnasium](https://gymnasium.farama.org) benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
84
84
  - **Parallel evaluation (optional)**: basic support for [Ray](https://www.ray.io/) to speed up fitness evaluations.
85
85
  - **Type-checked**: PEP8 compliant, and consistent code style.
86
86
 
@@ -214,16 +214,16 @@ It can be applied to:
214
214
  ### Gymnasium Integration
215
215
 
216
216
  EvoLib provides a lightweight wrapper for [Gymnasium](https://gymnasium.farama.org/) environments.
217
- This allows you to evaluate evolutionary agents directly on well-known RL benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
217
+ This allows you to evaluate evolutionary agents directly on well-known benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
218
218
 
219
219
  - **Headless evaluation**: returns total episode reward as fitness.
220
220
  - **Visualization**: render episodes and save them as GIFs.
221
221
  - **Discrete & continuous action spaces** are both supported.
222
222
 
223
- 👉 Example: [`examples/01_cartpole.py`](examples/01_cartpole.py)
223
+ 👉 [Examples](https://github.com/EvoLib/evo-lib/tree/main/examples/08_gym)
224
224
 
225
225
  ```python
226
- from evolibs.gym_wrapper import GymEnv
226
+ from evolib import GymEnv
227
227
 
228
228
  env = GymEnv("CartPole-v1", max_steps=500)
229
229
  fitness = env.evaluate(indiv) # run one episode
@@ -20,7 +20,7 @@ EvoLib is a lightweight and transparent framework for evolutionary computation,
20
20
  - **Modularity**: mutation, selection, crossover, and parameter representations can be freely combined.
21
21
  - **Educational value**: examples and a clean API make it practical for illustrating evolutionary concepts.
22
22
  - **Neuroevolution support**: structural mutations (adding/removing neurons and connections) and evolvable networks via EvoNet.
23
- - **Gymnasium integration**: run standard RL benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
23
+ - **Gymnasium integration**: run [Gymnasium](https://gymnasium.farama.org) benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
24
24
  - **Parallel evaluation (optional)**: basic support for [Ray](https://www.ray.io/) to speed up fitness evaluations.
25
25
  - **Type-checked**: PEP8 compliant, and consistent code style.
26
26
 
@@ -154,16 +154,16 @@ It can be applied to:
154
154
  ### Gymnasium Integration
155
155
 
156
156
  EvoLib provides a lightweight wrapper for [Gymnasium](https://gymnasium.farama.org/) environments.
157
- This allows you to evaluate evolutionary agents directly on well-known RL benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
157
+ This allows you to evaluate evolutionary agents directly on well-known benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
158
158
 
159
159
  - **Headless evaluation**: returns total episode reward as fitness.
160
160
  - **Visualization**: render episodes and save them as GIFs.
161
161
  - **Discrete & continuous action spaces** are both supported.
162
162
 
163
- 👉 Example: [`examples/01_cartpole.py`](examples/01_cartpole.py)
163
+ 👉 [Examples](https://github.com/EvoLib/evo-lib/tree/main/examples/08_gym)
164
164
 
165
165
  ```python
166
- from evolibs.gym_wrapper import GymEnv
166
+ from evolib import GymEnv
167
167
 
168
168
  env = GymEnv("CartPole-v1", max_steps=500)
169
169
  fitness = env.evaluate(indiv) # run one episode
@@ -20,6 +20,7 @@ EvoLib is a lightweight and transparent framework for evolutionary computation,
20
20
  - **Modularity**: mutation, selection, crossover, and parameter representations can be freely combined.
21
21
  - **Educational value**: examples and a clean API make it practical for illustrating evolutionary concepts.
22
22
  - **Neuroevolution support**: structural mutations (adding/removing neurons and connections) and evolvable networks via EvoNet.
23
+ - **Gymnasium integration**: run [Gymnasium](https://gymnasium.farama.org) benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
23
24
  - **Parallel evaluation (optional)**: basic support for [Ray](https://www.ray.io/) to speed up fitness evaluations.
24
25
  - **Type-checked**: PEP8 compliant, and consistent code style.
25
26
 
@@ -143,6 +144,27 @@ It can be applied to:
143
144
 
144
145
  ---
145
146
 
147
+ ### Gymnasium Integration
148
+
149
+ EvoLib provides a lightweight wrapper for [Gymnasium](https://gymnasium.farama.org/) environments.
150
+ This allows you to evaluate evolutionary agents directly on well-known benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
151
+
152
+ - **Headless evaluation**: returns total episode reward as fitness.
153
+ - **Visualization**: render episodes and save them as GIFs.
154
+ - **Discrete & continuous action spaces** are both supported.
155
+
156
+ 👉 [Examples](https://github.com/EvoLib/evo-lib/tree/main/examples/08_gym)
157
+
158
+ ```python
159
+ from evolib import GymEnv
160
+
161
+ env = GymEnv("CartPole-v1", max_steps=500)
162
+ fitness = env.evaluate(indiv) # run one episode
163
+ gif = env.visualize(indiv, gen=10) # render & save as GIF
164
+ ```
165
+
166
+ ---
167
+
146
168
  ## Preview: Pygame Integration
147
169
 
148
170
  Early prototypes demonstrate how evolutionary algorithms can evolve both neural networks and sensor properties such as number, range, and orientation for agents in 2D worlds built with pygame. This illustrates how networks and sensors co-adapt to dynamic environments with collisions and feedback.
@@ -192,10 +214,9 @@ For deeper exploration, see the [full examples directory](examples/)
192
214
  - [X] Neuroevolution
193
215
  - [X] Topological Evolution (neurons, edges)
194
216
  - [X] Ray Support for Parallel Evaluation (early prototypes)
217
+ - [X] OpenAI Gymnasium / Gym Wrapper
195
218
  - [ ] Advanced Visualization
196
219
  - [ ] Game Environment Integration (pygame, PettingZoo - early prototypes)
197
- - [ ] Ray Support for Parallel Evaluation (early prototypes)
198
-
199
220
 
200
221
  ---
201
222
 
@@ -27,7 +27,12 @@ if TYPE_CHECKING:
27
27
  class GymEnv:
28
28
  """Thin wrapper to run OpenAI Gymnasium environments with EvoLib Individuals."""
29
29
 
30
- def __init__(self, env_name: str, max_steps: int = 500, **env_kwargs: Any):
30
+ def __init__(
31
+ self,
32
+ env_name: str,
33
+ max_steps: int = 500,
34
+ **env_kwargs: Any,
35
+ ):
31
36
  """
32
37
  Initialize a Gym environment.
33
38
 
@@ -64,6 +69,7 @@ class GymEnv:
64
69
 
65
70
  for _ in range(episodes):
66
71
  obs, _ = self.env.reset()
72
+
67
73
  ep_reward = 0.0
68
74
 
69
75
  for _ in range(self.max_steps):
@@ -83,6 +89,7 @@ class GymEnv:
83
89
  action = np.array(action, dtype=np.float32)
84
90
 
85
91
  obs, reward, terminated, truncated, _ = self.env.step(action)
92
+
86
93
  ep_reward += float(reward)
87
94
 
88
95
  if terminated or truncated:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolib
3
- Version: 0.2.0b3.dev2
3
+ Version: 0.2.0b3.dev4
4
4
  Summary: A modular framework for evolutionary strategies and neuroevolution.
5
5
  Author-email: EvoLib <evolib@dismail.de>
6
6
  License: MIT License
@@ -80,7 +80,7 @@ EvoLib is a lightweight and transparent framework for evolutionary computation,
80
80
  - **Modularity**: mutation, selection, crossover, and parameter representations can be freely combined.
81
81
  - **Educational value**: examples and a clean API make it practical for illustrating evolutionary concepts.
82
82
  - **Neuroevolution support**: structural mutations (adding/removing neurons and connections) and evolvable networks via EvoNet.
83
- - **Gymnasium integration**: run standard RL benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
83
+ - **Gymnasium integration**: run [Gymnasium](https://gymnasium.farama.org) benchmarks (e.g. CartPole, LunarLander) via a simple wrapper.
84
84
  - **Parallel evaluation (optional)**: basic support for [Ray](https://www.ray.io/) to speed up fitness evaluations.
85
85
  - **Type-checked**: PEP8 compliant, and consistent code style.
86
86
 
@@ -214,16 +214,16 @@ It can be applied to:
214
214
  ### Gymnasium Integration
215
215
 
216
216
  EvoLib provides a lightweight wrapper for [Gymnasium](https://gymnasium.farama.org/) environments.
217
- This allows you to evaluate evolutionary agents directly on well-known RL benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
217
+ This allows you to evaluate evolutionary agents directly on well-known benchmarks such as **CartPole**, **LunarLander**, or **Pendulum**.
218
218
 
219
219
  - **Headless evaluation**: returns total episode reward as fitness.
220
220
  - **Visualization**: render episodes and save them as GIFs.
221
221
  - **Discrete & continuous action spaces** are both supported.
222
222
 
223
- 👉 Example: [`examples/01_cartpole.py`](examples/01_cartpole.py)
223
+ 👉 [Examples](https://github.com/EvoLib/evo-lib/tree/main/examples/08_gym)
224
224
 
225
225
  ```python
226
- from evolibs.gym_wrapper import GymEnv
226
+ from evolib import GymEnv
227
227
 
228
228
  env = GymEnv("CartPole-v1", max_steps=500)
229
229
  fitness = env.evaluate(indiv) # run one episode
@@ -456,11 +456,11 @@ examples/07_evonet/06_recurrent_indicator_01.py
456
456
  examples/07_evonet/06_recurrent_indicator_02.py
457
457
  examples/07_evonet/06_recurrent_trading.py
458
458
  examples/07_evonet/07_recurrent_trading_01.py
459
- examples/08_gym/01_cartpole.py
460
459
  examples/08_gym/01_frozen_lake.py
461
460
  examples/08_gym/02_cliff_walking.py
462
- examples/08_gym/02_lunar_lander.py
463
- examples/08_gym/03_taxi.py
461
+ examples/08_gym/03_cartpole.py
462
+ examples/08_gym/04_lunar_lander.py
463
+ examples/08_gym/05_bipedal_walker.py
464
464
  tests/test_benchmarks.py
465
465
  tests/test_config_loader.py
466
466
  tests/test_elitism_preserves_best_fitness.py
@@ -0,0 +1,44 @@
1
+ """
2
+ Example: Evolve a controller for the CartPole-v1 environment.
3
+
4
+ This example demonstrates how an evolutionary algorithm can evolve
5
+ a neural controller that balances the pole on a cart.
6
+ Each individual is evaluated in the CartPole-v1 environment and
7
+ the best individual of each generation is visualized as a GIF.
8
+ """
9
+
10
+ from evolib import GymEnv, Individual, Population, resume_or_create
11
+
12
+ CONFIG_FILE = "./configs/03_cartpole.yaml"
13
+ FRAME_FOLDER = "03_frames"
14
+ MAX_STEPS = 500
15
+
16
+ # init environment once (can be reused for all individuals)
17
+ cartpole_env = GymEnv("CartPole-v1", max_steps=MAX_STEPS)
18
+
19
+
20
+ def eval_fitness(indiv: Individual) -> None:
21
+ """Evaluate one individual by running CartPole and assign fitness."""
22
+ fitness = cartpole_env.evaluate(indiv, module="brain")
23
+ indiv.fitness = -fitness
24
+
25
+
26
+ def on_generation_end(pop: Population) -> None:
27
+ """Save an animated GIF of the current best individual each generation."""
28
+ best = pop.best()
29
+ gif = cartpole_env.visualize(
30
+ best,
31
+ pop.generation_num,
32
+ filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif",
33
+ )
34
+ print(f"Saved: {gif}")
35
+
36
+
37
+ if __name__ == "__main__":
38
+ pop = resume_or_create(
39
+ CONFIG_FILE,
40
+ fitness_function=eval_fitness,
41
+ run_name="03_cartpole",
42
+ )
43
+
44
+ pop.run(verbosity=1, on_generation_end=on_generation_end)
@@ -0,0 +1,46 @@
1
+ """
2
+ Example: LunarLander with EvoLib
3
+
4
+ This script demonstrates how to evolve a neural network controller
5
+ for the classic **LunarLander-v3** Gymnasium environment.
6
+ Each individual’s network is evaluated by running a full episode
7
+ and using the negative cumulative reward as fitness (minimization).
8
+ At the end of selected generations, the best agent is visualized
9
+ and exported as an animated GIF for inspection.
10
+ """
11
+
12
+ from evolib import GymEnv, Individual, Population, resume_or_create
13
+
14
+ CONFIG_FILE = "./configs/04_lunarlander.yaml"
15
+ FRAME_FOLDER = "04_frames"
16
+ MAX_STEPS = 500
17
+
18
+ # init environment once (can be reused for all individuals)
19
+ gym_env = GymEnv("LunarLander-v3", max_steps=MAX_STEPS)
20
+
21
+
22
+ def eval_lunar_fitness(indiv: Individual) -> None:
23
+ """Assign fitness to an individual by running one LunarLander episode."""
24
+ fitness = gym_env.evaluate(indiv, module="brain")
25
+ indiv.fitness = -fitness
26
+
27
+
28
+ def on_generation_end(pop: Population) -> None:
29
+ """Visualize the best individual every 20 generations (and at the end)."""
30
+ if pop.generation_num % 20 == 0 or pop.generation_num == pop.max_generations:
31
+ best = pop.best()
32
+ gif = gym_env.visualize(
33
+ best,
34
+ pop.generation_num,
35
+ filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif",
36
+ )
37
+ print(f"Saved: {gif}")
38
+
39
+
40
+ if __name__ == "__main__":
41
+ pop = resume_or_create(
42
+ CONFIG_FILE,
43
+ fitness_function=eval_lunar_fitness,
44
+ run_name="04_lunarlander",
45
+ )
46
+ pop.run(verbosity=1, on_generation_end=on_generation_end)
@@ -0,0 +1,68 @@
1
+ """
2
+ Example: BipedalWalker with EvoLib
3
+
4
+ This script demonstrates how to evolve a neural network controller
5
+ for the continuous-control **BipedalWalker-v3** Gymnasium environment.
6
+ The walker must learn to coordinate its legs and joints to move
7
+ forward without falling.
8
+
9
+ Key aspects:
10
+ * Continuous state (24-dimensional observation vector).
11
+ * Continuous action space (4 torques for hip and knee joints).
12
+ * Fitness: negative cumulative reward (minimization).
13
+ * Visualization: renders the best walker every 10 generations.
14
+ """
15
+
16
+ from evolib import Population, Individual, resume_or_create, GymEnv, save_checkpoint
17
+
18
+ CONFIG_FILE = "./configs/05_bipedal_walker.yaml"
19
+ FRAME_FOLDER = "05_frames"
20
+ RUN_NAME = "05_BipedalWalker"
21
+ MAX_STEPS = 1600 # typical for BipedalWalker is 1600
22
+
23
+
24
+ # init environment once (can be reused for all individuals)
25
+ gym_env = GymEnv("BipedalWalker-v3", max_steps=MAX_STEPS)
26
+
27
+
28
+ def eval_walker_fitness(indiv: Individual) -> None:
29
+ """Run a single episode in a fresh environment to avoid Box2D race conditions."""
30
+ #local_env = GymEnv("BipedalWalker-v3", max_steps=MAX_STEPS)
31
+ reward = gym_env.evaluate(indiv, module="brain", episodes=1)
32
+ #print(f"Reward: {reward}")
33
+ indiv.fitness = -reward
34
+
35
+ def checkpoint(pop: Population) -> None:
36
+ save_checkpoint(pop, run_name=RUN_NAME)
37
+
38
+ def on_generation_end(pop: Population) -> None:
39
+ """Visualize the best individual every 10 generations (and at the end)."""
40
+
41
+ #checkpoint(pop)
42
+
43
+ best = pop.best()
44
+ print(best.para["brain"].evo_params.mutation_strength)
45
+
46
+ # if pop.generation_num % 10 == 0 or pop.generation_num == pop.max_generations:
47
+ best = pop.best()
48
+ gif = gym_env.visualize(
49
+ best,
50
+ pop.generation_num,
51
+ filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif",
52
+ )
53
+ print(f"Saved: {gif}")
54
+
55
+
56
+ if __name__ == "__main__":
57
+ pop = resume_or_create(
58
+ CONFIG_FILE,
59
+ fitness_function=eval_walker_fitness,
60
+ run_name=RUN_NAME,
61
+ )
62
+
63
+ if pop.generation_num >= 50:
64
+ print("*** Generation >= 50 --> setting mutation_probability to 0.4 ***")
65
+ for indiv in pop.indivs:
66
+ indiv.para["brain"].evo_params.mutation_probability = 0.4
67
+
68
+ pop.run(verbosity=1, on_generation_end=on_generation_end)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "evolib"
7
- version = "0.2.0b3dev2"
7
+ version = "0.2.0b3dev4"
8
8
  description = "A modular framework for evolutionary strategies and neuroevolution."
9
9
  authors = [
10
10
  { name = "EvoLib", email = "evolib@dismail.de" }
@@ -1,32 +0,0 @@
1
- import numpy as np
2
- from evolib import Population, Individual, resume_or_create, GymEnv
3
-
4
- CONFIG_FILE = "./configs/01_cartpole.yaml"
5
- FRAME_FOLDER = "01_frames"
6
- MAX_STEPS = 500
7
-
8
- # init environment once (can be reused for all individuals)
9
- cartpole_env = GymEnv("CartPole-v1", max_steps=MAX_STEPS)
10
-
11
-
12
- def eval_fitness(indiv: Individual) -> None:
13
- """Assign fitness to an individual by running one CartPole episode."""
14
- fitness = cartpole_env.evaluate(indiv, module="brain")
15
- indiv.fitness = -fitness
16
-
17
-
18
- def on_generation_end(pop: Population) -> None:
19
- best = pop.best()
20
- gif = cartpole_env.visualize(best, pop.generation_num,
21
- filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif")
22
- print(f"Saved: {gif}")
23
-
24
-
25
- if __name__ == "__main__":
26
- pop = resume_or_create(
27
- CONFIG_FILE,
28
- fitness_function=eval_fitness,
29
- run_name="08_cartpole",
30
- )
31
-
32
- pop.run(verbosity=1, on_generation_end=on_generation_end)
@@ -1,40 +0,0 @@
1
- import numpy as np
2
- from evolib import Population, Individual, resume_or_create
3
- from evolib.envs.gym_wrapper import GymEnvWrapper
4
-
5
- CONFIG_FILE = "./configs/02_lunarlander.yaml"
6
- MAX_STEPS = 500
7
-
8
- # init environment once (can be reused for all individuals)
9
- lunar_env = GymEnvWrapper("LunarLander-v3", max_steps=MAX_STEPS)
10
-
11
-
12
- def eval_lunar_fitness(indiv: Individual) -> None:
13
- """Assign fitness to an individual by running one LunarLander episode."""
14
- fitness = lunar_env.evaluate(indiv, module="brain")
15
- indiv.fitness = -fitness
16
-
17
-
18
- def on_generation_end(pop: Population) -> None:
19
- if pop.generation_num % 20 == 0 or pop.generation_num == pop.max_generations:
20
- best = pop.best()
21
- gif = cartpole_env.visualize(best, pop.generation_num,
22
- filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif")
23
- print(f"Saved: {gif}")
24
-
25
- if __name__ == "__main__":
26
- pop = resume_or_create(
27
- CONFIG_FILE,
28
- fitness_function=eval_lunar_fitness,
29
- run_name="02_lunarlander",
30
- )
31
-
32
- for gen in range(pop.max_generations):
33
- pop.run_one_generation()
34
-
35
- # alle 20 Generationen besten Agenten visualisieren
36
- if gen % 10 == 0:
37
- best = pop.best()
38
- #print(best.print_status())
39
- gif = lunar_env.visualize(best, gen)
40
- print(f"Saved: {gif}")
@@ -1,85 +0,0 @@
1
- """
2
- """
3
- import numpy as np
4
- from evolib import GymEnv, Individual, Population, resume_or_create
5
-
6
- CONFIG_FILE = "./configs/03_taxi.yaml"
7
- FRAME_FOLDER = "03_frames"
8
- MAX_STEPS = 150
9
-
10
- # init environment once (can be reused for all individuals)
11
- gym_env = GymEnv("Taxi-v3", max_steps=MAX_STEPS)
12
-
13
-
14
- def eval_fitness(indiv: Individual, episodes: int = 5) -> None:
15
- """
16
- Evaluate an individual in the Taxi-v3 environment with reward shaping,
17
- averaged across multiple episodes.
18
- """
19
- taxi_env = gym_env.env.unwrapped
20
- total_reward = 0.0
21
-
22
- for _ in range(episodes):
23
- obs, _ = gym_env.env.reset()
24
- ep_reward = 0.0
25
-
26
- for _ in range(gym_env.max_steps):
27
- # --- Choose action from network ---
28
- action_vec = indiv.para["brain"].net.calc([float(obs)])
29
- action = int(np.argmax(action_vec))
30
-
31
- # --- Decode current state ---
32
- old_taxi_row, old_taxi_col, pass_loc, dest_idx = taxi_env.decode(obs)
33
-
34
- # Target = passenger before pickup, else destination
35
- if pass_loc != 4:
36
- target_row, target_col = taxi_env.locs[pass_loc]
37
- else:
38
- target_row, target_col = taxi_env.locs[dest_idx]
39
- old_dist = abs(old_taxi_row - target_row) + abs(old_taxi_col - target_col)
40
-
41
- # --- Step ---
42
- obs, reward, terminated, truncated, _ = gym_env.env.step(action)
43
- ep_reward += reward
44
-
45
- # --- Shaping ---
46
- if reward == -10:
47
- ep_reward -= 5.0
48
-
49
- new_taxi_row, new_taxi_col, pass_loc, dest_idx = taxi_env.decode(obs)
50
- if pass_loc != 4:
51
- target_row, target_col = taxi_env.locs[pass_loc]
52
- else:
53
- target_row, target_col = taxi_env.locs[dest_idx]
54
- new_dist = abs(new_taxi_row - target_row) + abs(new_taxi_col - target_col)
55
-
56
- ep_reward += (old_dist - new_dist) * 0.2
57
-
58
- if terminated or truncated:
59
- break
60
-
61
- total_reward += ep_reward
62
-
63
- # Average fitness across episodes
64
- indiv.fitness = -total_reward / episodes
65
-
66
- def on_generation_end(pop: Population) -> None:
67
- """Visualize the best individual of the current generation as a GIF."""
68
-
69
- best = pop.best()
70
- gif = gym_env.visualize(
71
- best,
72
- pop.generation_num,
73
- filename=f"{FRAME_FOLDER}/gen_{pop.generation_num:03d}.gif",
74
- )
75
- print(f"Saved: {gif}")
76
-
77
-
78
- if __name__ == "__main__":
79
- pop = resume_or_create(
80
- CONFIG_FILE,
81
- fitness_function=eval_fitness,
82
- run_name="Taxi-v3",
83
- )
84
-
85
- pop.run(verbosity=1, on_generation_end=on_generation_end)
File without changes
File without changes