evolib 0.2.0b2.dev4__tar.gz → 0.2.0b2.dev6__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.
- {evolib-0.2.0b2.dev4/evolib.egg-info → evolib-0.2.0b2.dev6}/PKG-INFO +1 -1
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/api.py +4 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/schema.py +30 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/individual.py +5 -4
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/population.py +30 -12
- evolib-0.2.0b2.dev6/evolib/initializers/evonet_initializers.py +193 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/registry.py +9 -1
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/io/checkpoint.py +9 -1
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/crossover.py +13 -20
- evolib-0.2.0b2.dev6/evolib/representation/dummy.py +31 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/evonet.py +0 -42
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/benchmarks.py +196 -0
- evolib-0.2.0b2.dev6/evolib/utils/parallel.py +96 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/plotting.py +3 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6/evolib.egg-info}/PKG-INFO +1 -1
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib.egg-info/SOURCES.txt +10 -2
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/02_strategies/01_step_by_step_evolution.py +5 -5
- evolib-0.2.0b2.dev6/examples/07_evonet/00_identity_test.py +63 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/04_recurrent_bit_prediction.py +107 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/05_recurrent_timeseries.py +176 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/06_recurrent_indicator.py +198 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/06_recurrent_indicator_01.py +181 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/06_recurrent_indicator_02.py +198 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/06_recurrent_trading.py +241 -0
- evolib-0.2.0b2.dev6/examples/07_evonet/07_recurrent_trading_01.py +232 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/pyproject.toml +1 -1
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_evonet_vector_io.py +5 -5
- evolib-0.2.0b2.dev4/evolib/initializers/evonet_initializers.py +0 -27
- evolib-0.2.0b2.dev4/examples/07_evonet/04_recurrent_bitseq.py +0 -144
- evolib-0.2.0b2.dev4/examples/07_evonet/resize_all_images.py +0 -28
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/LICENSE +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/MANIFEST.in +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/README.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_core_individual.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_core_population.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_crossover.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_evonet_structural_mutation.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_mutation.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_replacement.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_reproduction.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_selection.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_operators_strategy.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_public_api.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_representation_evonet.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_representation_netvector.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_representation_vector.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_utils_benchmarks.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_utils_history_logger.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_utils_loss_functions.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/api_utils_plotting.rst +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/conf.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/config_guide.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/config_parameter.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/getting_started.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/docs/index.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/PIL/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/asyncio/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/collections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/concurrent/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/ctypes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/cycler/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/email/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/html/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/importlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/jinja2/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/json/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/logging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/mdurl/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/os/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/packaging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/rich/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/sys/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/unittest/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/urllib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/xml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/yaml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/zipfile/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/.mypy_cache/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/base_component_config.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/component_registry.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/evonet_component_config.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/config/vector_component_config.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/PIL/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/asyncio/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/collections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/concurrent/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/ctypes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/cycler/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/email/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/html/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/importlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/jinja2/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/json/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/logging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/os/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/packaging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/sys/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/unittest/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/urllib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/xml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/yaml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/zipfile/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/.mypy_cache/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/README.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/core/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/globals/README.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/globals/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/globals/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/globals/numeric.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/PIL/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/asyncio/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/collections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/concurrent/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/ctypes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/cycler/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/email/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/html/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/importlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/jinja2/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/json/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/logging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/os/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/packaging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/sys/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/unittest/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/urllib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/xml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/yaml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/zipfile/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/.mypy_cache/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/net_initializers.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/initializers/vector_initializers.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/enum_helpers.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/enums.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/structs.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/interfaces/types.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/io/serialization.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/README.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/evonet_structural_mutation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/mutation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/replacement.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/reproduction.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/selection.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/operators/strategy.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/registry/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/registry/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/registry/replacement_registry.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/registry/selection_registry.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/registry/strategy_registry.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/PIL/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/_typeshed/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/annotated_types/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/asyncio/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/collections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/concurrent/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/concurrent/futures/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/ctypes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/cycler/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/email/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/config/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/globals/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/initializers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/interfaces/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/operators/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/registry/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/representation/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/evolib/utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/html/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/importlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/importlib/metadata/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/importlib/resources/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/jinja2/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/json/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/logging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/common/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/helpers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/presets/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_block/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markdown_it/rules_inline/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/markupsafe/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/_api/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/axes/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/backends/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/projections/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/style/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/matplotlib/tri/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/mdurl/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/multiprocessing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/_typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/_utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/char/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/f2py/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/fft/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/lib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/linalg/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/ma/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/matrixlib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/polynomial/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/random/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/rec/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/strings/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/testing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/testing/_private/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/numpy/typing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/os/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/packaging/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic/_internal/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic/deprecated/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic/plugin/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic/v1/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pydantic_core/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pyexpat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pyparsing/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/pyparsing/diagram/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/rich/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/sys/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/typing_inspection/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/unittest/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/urllib/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/xml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/xml/etree/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/xml/parsers/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/xml/parsers/expat/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/yaml/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/zipfile/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/zipfile/_path/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/3.12/zoneinfo/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/.mypy_cache/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/_apply_config_mapping.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/base.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/composite.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/evo_params.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/netvector.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/representation/vector.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/README.md +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/__pycache__/__init__.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/config_loader.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/fitness.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/history_logger.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/loss_functions.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/random.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib/utils/registry.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib.egg-info/dependency_links.txt +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib.egg-info/requires.txt +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/evolib.egg-info/top_level.txt +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/01_basic_usage/01_getting_started.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/01_basic_usage/02_mutation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/01_basic_usage/03_population_mutation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/01_basic_usage/04_fitness.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/02_strategies/02_mu_lambda_step.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/02_strategies/03_mu_lambda.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/02_strategies/04_flexible.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/01_history.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/02_plotting.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/03_compare_runs.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/04_exponential_decay_vs_static.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/05_adaptive_global_vs_static.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/06_adaptive_individual_vs_static.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/07_selection_comparison.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/08_selection_pressure.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/09_selection_vs_mutation_pressure.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/10_selection_stochastic_vs_deterministic.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/03_comparisons/11_crossover_comparison.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/04_function_approximation/01_polynomial_sine.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/04_function_approximation/02_sine_point_approximation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/04_function_approximation/03_approximation_with_noise.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/01_fitness_landscape_exploration.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/02_rosenbrock_surface_path.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/03_vector_control.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/04_vector_control_with_obstacles.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/05_piecewise_linear_xsys.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/05_advanced_topics/06_evolving_mutation_strength_as_a_module.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/06_netvector/01_netvector_sine_approximation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/06_netvector/02_netvector_modulated_output.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/06_netvector/03_netvector_gain_and_bias.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/07_evonet/01_sine_approximation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/07_evonet/02_image_approximation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/examples/07_evonet/03_structural_xor.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/setup.cfg +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_benchmarks.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_config_loader.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_elitism_preserves_best_fitness.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_initializer_evonet.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_initializer_net.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_mutation.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_population.py +0 -0
- {evolib-0.2.0b2.dev4 → evolib-0.2.0b2.dev6}/tests/test_selection.py +0 -0
|
@@ -15,9 +15,11 @@ from evolib.utils.benchmarks import (
|
|
|
15
15
|
ackley,
|
|
16
16
|
ackley_2d,
|
|
17
17
|
ackley_3d,
|
|
18
|
+
generate_timeseries,
|
|
18
19
|
griewank,
|
|
19
20
|
griewank_2d,
|
|
20
21
|
griewank_3d,
|
|
22
|
+
lfsr_sequence,
|
|
21
23
|
rastrigin,
|
|
22
24
|
rastrigin_2d,
|
|
23
25
|
rastrigin_3d,
|
|
@@ -90,6 +92,8 @@ __all__ = [
|
|
|
90
92
|
"sphere_3d",
|
|
91
93
|
"rosenbrock_3d",
|
|
92
94
|
"schwefel_3d",
|
|
95
|
+
"lfsr_sequence",
|
|
96
|
+
"generate_timeseries",
|
|
93
97
|
"save_checkpoint",
|
|
94
98
|
"resume_from_checkpoint",
|
|
95
99
|
"save_best_indiv",
|
|
@@ -88,6 +88,30 @@ class StoppingCriteria(BaseModel):
|
|
|
88
88
|
)
|
|
89
89
|
|
|
90
90
|
|
|
91
|
+
class ParallelConfig(BaseModel):
|
|
92
|
+
"""
|
|
93
|
+
Optional parallelization backend.
|
|
94
|
+
|
|
95
|
+
Controls whether fitness evaluation is run sequentially or distributed
|
|
96
|
+
(currently only Ray is supported).
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
backend: str = Field(
|
|
100
|
+
default="none",
|
|
101
|
+
description="Parallel backend to use: 'none' (default) or 'ray'.",
|
|
102
|
+
)
|
|
103
|
+
num_cpus: Optional[int] = Field(
|
|
104
|
+
default=None,
|
|
105
|
+
description="Number of CPUs to allocate (Ray only). "
|
|
106
|
+
"If None, Ray chooses automatically.",
|
|
107
|
+
)
|
|
108
|
+
address: Optional[str] = Field(
|
|
109
|
+
default=None,
|
|
110
|
+
description="Ray cluster address (e.g. 'auto' or '127.0.0.1:6379'). "
|
|
111
|
+
"If None, starts a local Ray instance.",
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
|
|
91
115
|
class FullConfig(BaseModel):
|
|
92
116
|
"""
|
|
93
117
|
Main configuration model for an evolutionary run.
|
|
@@ -140,6 +164,12 @@ class FullConfig(BaseModel):
|
|
|
140
164
|
replacement: ReplacementConfig | None = Field(
|
|
141
165
|
default=None, description="Survivor selection (replacement) configuration."
|
|
142
166
|
)
|
|
167
|
+
|
|
168
|
+
# Optional parallelization backend
|
|
169
|
+
parallel: Optional[ParallelConfig] = Field(
|
|
170
|
+
default=None,
|
|
171
|
+
description="Optional parallelization backend configuration."
|
|
172
|
+
)
|
|
143
173
|
|
|
144
174
|
@model_validator(mode="before")
|
|
145
175
|
@classmethod
|
|
@@ -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
|
|
33
|
-
para: Any
|
|
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
|
|
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
|
|
@@ -51,6 +51,8 @@ from evolib.utils.config_loader import load_config
|
|
|
51
51
|
from evolib.utils.history_logger import HistoryLogger
|
|
52
52
|
from evolib.utils.random import set_random_seed
|
|
53
53
|
|
|
54
|
+
from evolib.utils.parallel import map_fitness
|
|
55
|
+
|
|
54
56
|
|
|
55
57
|
class Pop:
|
|
56
58
|
"""Represents a population for evolutionary optimization, including configuration,
|
|
@@ -128,6 +130,16 @@ class Pop:
|
|
|
128
130
|
self._replacement_registry = {}
|
|
129
131
|
self._replacement_fn = None
|
|
130
132
|
|
|
133
|
+
# Parallel backend
|
|
134
|
+
if cfg.parallel:
|
|
135
|
+
self.parallel_backend = cfg.parallel.backend
|
|
136
|
+
self.parallel_num_cpus = cfg.parallel.num_cpus
|
|
137
|
+
self.parallel_address = cfg.parallel.address
|
|
138
|
+
else:
|
|
139
|
+
self.parallel_backend = None
|
|
140
|
+
self.parallel_num_cpus = None
|
|
141
|
+
self.parallel_address = None
|
|
142
|
+
|
|
131
143
|
# Statistics
|
|
132
144
|
self.history_logger = HistoryLogger(
|
|
133
145
|
columns=[
|
|
@@ -242,21 +254,27 @@ class Pop:
|
|
|
242
254
|
"""Evaluate the fitness function for all individuals in the population."""
|
|
243
255
|
if self.fitness_function is None:
|
|
244
256
|
raise ValueError("No fitness function has been set.")
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
257
|
+
|
|
258
|
+
map_fitness(
|
|
259
|
+
self.indivs,
|
|
260
|
+
self.fitness_function,
|
|
261
|
+
backend=self.parallel_backend,
|
|
262
|
+
num_cpus=self.parallel_num_cpus,
|
|
263
|
+
address=self.parallel_address,
|
|
264
|
+
)
|
|
250
265
|
|
|
251
266
|
def evaluate_indivs(self, indivs: list[Indiv]) -> None:
|
|
252
267
|
"""Evaluate fitness for a custom list of individuals."""
|
|
253
268
|
if self.fitness_function is None:
|
|
254
269
|
raise ValueError("No fitness function has been set.")
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
270
|
+
|
|
271
|
+
map_fitness(
|
|
272
|
+
indivs,
|
|
273
|
+
self.fitness_function,
|
|
274
|
+
backend=self.parallel_backend,
|
|
275
|
+
num_cpus=self.parallel_num_cpus,
|
|
276
|
+
address=self.parallel_address,
|
|
277
|
+
)
|
|
260
278
|
|
|
261
279
|
def get_elites(self) -> list[Indiv]:
|
|
262
280
|
"""Return a list of elite individuals and set their is_elite flag."""
|
|
@@ -408,14 +426,14 @@ class Pop:
|
|
|
408
426
|
|
|
409
427
|
self.indivs.sort(key=lambda indivs: indivs.fitness, reverse=reverse)
|
|
410
428
|
|
|
411
|
-
def best(self, sort: bool =
|
|
429
|
+
def best(self, sort: bool = True) -> Indiv:
|
|
412
430
|
"""
|
|
413
431
|
Return the best individual (lowest fitness).
|
|
414
432
|
|
|
415
433
|
Args:
|
|
416
434
|
sort (bool): If True, sort the population before returning the best.
|
|
417
435
|
If False, return first individual as-is.
|
|
418
|
-
Default:
|
|
436
|
+
Default: True.
|
|
419
437
|
"""
|
|
420
438
|
|
|
421
439
|
if not self.indivs:
|
|
@@ -0,0 +1,193 @@
|
|
|
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 ConnectionType, 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
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def initializer_identity_evonet(config: FullConfig, module: str) -> EvoNet:
|
|
148
|
+
"""
|
|
149
|
+
Initialize EvoNet with damped self-recurrence and zeroed weights elsewhere.
|
|
150
|
+
|
|
151
|
+
- All feedforward weights are near-zero
|
|
152
|
+
- Self-recurrent connections get weight ~0.8 (memory)
|
|
153
|
+
- Biases are randomized slightly to break symmetry
|
|
154
|
+
|
|
155
|
+
This initializer encourages stable internal state retention from the start,
|
|
156
|
+
making recurrent behavior immediately available to evolution.
|
|
157
|
+
|
|
158
|
+
Args:
|
|
159
|
+
config (FullConfig): Full experiment configuration
|
|
160
|
+
module (str): Name of the EvoNet module in the config
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
EvoNet: Initialized network with identity-style dynamics
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
SELF_LOOP_WEIGHT = 0.8
|
|
167
|
+
ALPHA = 0.01
|
|
168
|
+
|
|
169
|
+
para = EvoNet()
|
|
170
|
+
cfg = config.modules[module].model_copy(deep=True)
|
|
171
|
+
para.apply_config(cfg)
|
|
172
|
+
|
|
173
|
+
_build_architecture(para, cfg)
|
|
174
|
+
|
|
175
|
+
para.net.set_weights(np.zeros(para.net.num_weights))
|
|
176
|
+
para.net.set_biases(np.zeros(para.net.num_biases))
|
|
177
|
+
|
|
178
|
+
for neuron in para.net.get_all_neurons():
|
|
179
|
+
# Small random bias to break symmetry
|
|
180
|
+
neuron.bias = np.random.uniform(-ALPHA, ALPHA)
|
|
181
|
+
for connection in neuron.outgoing:
|
|
182
|
+
# Damped self-recurrence: acts like memory cell
|
|
183
|
+
if (
|
|
184
|
+
connection.type == ConnectionType.RECURRENT
|
|
185
|
+
and connection.source.id == connection.target.id
|
|
186
|
+
):
|
|
187
|
+
connection.weight = SELF_LOOP_WEIGHT
|
|
188
|
+
|
|
189
|
+
# Small random feedforward weight to allow weak stimulus flow
|
|
190
|
+
if connection.type == ConnectionType.STANDARD:
|
|
191
|
+
connection.weight = np.random.uniform(-ALPHA, ALPHA)
|
|
192
|
+
|
|
193
|
+
return para
|
|
@@ -16,7 +16,12 @@ 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
|
|
19
|
+
from evolib.initializers.evonet_initializers import (
|
|
20
|
+
initializer_identity_evonet,
|
|
21
|
+
initializer_normal_evonet,
|
|
22
|
+
initializer_random_evonet,
|
|
23
|
+
initializer_zero_evonet,
|
|
24
|
+
)
|
|
20
25
|
|
|
21
26
|
# NetVector-based initializer
|
|
22
27
|
from evolib.initializers.net_initializers import initializer_normal_net
|
|
@@ -45,6 +50,9 @@ INITIALIZER_REGISTRY: dict[str, InitializerFunction] = {
|
|
|
45
50
|
"adaptive_vector": initializer_adaptive_vector,
|
|
46
51
|
"normal_net": initializer_normal_net,
|
|
47
52
|
"normal_evonet": initializer_normal_evonet,
|
|
53
|
+
"random_evonet": initializer_random_evonet,
|
|
54
|
+
"zero_evonet": initializer_zero_evonet,
|
|
55
|
+
"identity_evonet": initializer_identity_evonet,
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
|
|
@@ -14,6 +14,7 @@ All files are stored in the 'checkpoints/' directory by default.
|
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
from typing import Any, Optional, cast
|
|
16
16
|
|
|
17
|
+
from evolib.config.schema import FullConfig
|
|
17
18
|
from evolib.core.individual import Indiv
|
|
18
19
|
from evolib.core.population import Pop
|
|
19
20
|
from evolib.initializers.registry import build_composite_initializer
|
|
@@ -24,6 +25,8 @@ from evolib.io.serialization import (
|
|
|
24
25
|
save_indiv,
|
|
25
26
|
save_population_pickle,
|
|
26
27
|
)
|
|
28
|
+
from evolib.utils.config_loader import load_config
|
|
29
|
+
from evolib.utils.random import set_random_seed
|
|
27
30
|
|
|
28
31
|
# Internal checkpoint directory
|
|
29
32
|
_CHECKDIR = Path("checkpoints")
|
|
@@ -116,8 +119,13 @@ def resume_or_create(
|
|
|
116
119
|
)
|
|
117
120
|
|
|
118
121
|
if pop is not None:
|
|
122
|
+
print(f"[Resume] Loaded checkpoint for run_name={run_name}")
|
|
123
|
+
cfg: FullConfig = load_config(config_path)
|
|
124
|
+
random_seed = cfg.random_seed
|
|
125
|
+
set_random_seed(random_seed)
|
|
119
126
|
return pop
|
|
120
|
-
|
|
127
|
+
|
|
128
|
+
print(f"[Create] New population for run_name={run_name}")
|
|
121
129
|
return Pop(config_path=config_path, fitness_function=fitness_fn)
|
|
122
130
|
|
|
123
131
|
|
|
@@ -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.
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
|