neuroptimiser


Nameneuroptimiser JSON
Version 1.0.1.post1 PyPI version JSON
download
home_pageNone
SummaryA modular and asynchronous framework for neuromorphic optimisation using spike-driven metaheuristics and heuristic-controlled spiking dynamics.
upload_time2025-08-29 15:32:09
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords neuromorphic spiking optimisation lava-nc
VCS
bugtrack_url
requirements alabaster alembic anyio appnope argon2-cffi argon2-cffi-bindings arrow asteval asttokens async-lru attrs babel beautifulsoup4 bleach certifi cffi charset-normalizer click cmaes coco-experiment cocopp colorlog comm contourpy cryptography customhys cycler debugpy decorator defusedxml deprecated docutils exceptiongroup executing fastjsonschema filelock fonttools fqdn fsspec furo ga4mp graphviz h11 httpcore httpx idna imagesize importlib-metadata iniconfig ioh ipykernel ipython isoduration jedi jinja2 joblib json5 jsonpointer jsonschema jsonschema-specifications kiwisolver lava-nc mako markdown-it-py markupsafe matplotlib matplotlib-inline mdit-py-plugins mdurl mistune mpmath myst-nb myst-parser nbclient nbconvert nbformat nest-asyncio networkx notebook notebook-shim numpy optuna optunahub overrides packaging pandas pandocfilters parso pexpect pillow pip platformdirs pluggy pockets prometheus-client prompt-toolkit psutil ptyprocess pure-eval pycparser pygithub pygments pyjwt pynacl pyparsing pyqt5 pyqt5-qt5 pyqt5-sip pytest python-dateutil python-json-logger pytz pyyaml pyzmq referencing requests rfc3339-validator rfc3986-validator rpds-py schema scikit-learn scipy seaborn send2trash setuptools six sniffio snowballstemmer soupsieve sqlalchemy stack-data sympy tabulate terminado threadpoolctl tikzpy tinycss2 tomli torch tornado tqdm traitlets types-python-dateutil typing-extensions tzdata uri-template urllib3 wcwidth webcolors webencodings websocket-client wrapt zipp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Status](https://img.shields.io/badge/status-active-success)
[![PyPI Version](https://img.shields.io/pypi/v/neuroptimiser)](https://pypi.org/project/neuroptimiser/)
![GitHub Tag](https://img.shields.io/github/v/tag/neuroptimiser/neuroptimiser)
[![Python Versions](https://img.shields.io/pypi/pyversions/neuroptimiser.svg)](https://pypi.org/project/neuroptimiser/)
[![PyPI Downloads](https://img.shields.io/pypi/dm/neuroptimiser)](https://pypi.org/project/neuroptimiser/)
![License](https://img.shields.io/github/license/neuroptimiser/neuroptimiser)
[![arXiv](https://img.shields.io/badge/arXiv-2507.08320-b31b1b.svg)](https://arxiv.org/abs/2507.08320)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15592900.svg)](https://doi.org/10.5281/zenodo.15592900)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15858610.svg)](https://doi.org/10.5281/zenodo.15858610)

# NeurOptimiser

**NeurOptimiser** is a neuromorphic optimisation framework in which metaheuristic search emerges from asynchronous spiking dynamics. It defines optimisation as a decentralised process executed by interconnected Neuromorphic Heuristic Units (NHUs), each embedding a spiking neuron model and a spike-triggered heuristic rule.

This framework enables fully event-driven, low-power optimisation by integrating spiking computation with local heuristic adaptation. It supports multiple neuron models, perturbation operators, and network topologies.

---

## ✨ Key Features

- Modular and extensible architecture using **Intel’s Lava**.
- Supports **linear** and **Izhikevich** neuron dynamics.
- Implements **random**, **fixed**, **directional**, and **Differential Evolution** operators as spike-triggered perturbations.
- Includes asynchronous **neighbourhood management**, **tensor contraction layers**, and **greedy selectors**.
- Compatible with **BBOB (COCO)** suite.
- Designed for **scalability**, **reusability**, and **future deployment** on **Loihi-class neuromorphic hardware**.

---

## πŸ“– Documentation
For detailed documentation, examples, and API reference, please visit the [Neuroptimiser Documentation](https://neuroptimiser.github.io/).

## πŸ“¦ Installation

```bash
pip install -e .
```
Ensure you have Python β‰₯ 3.10 and the Lava-NC environment configured.

You can also clone the repository and install it. Check the Makefile for additional options.


## πŸš€ Example Usage
```python
from neuroptimiser import NeuroOptimiser
import numpy as np

problem_function    = lambda x: np.linalg.norm(x)
problem_bounds      = np.array([[-5.0, 5.0], [-5.0, 5.0]])

optimiser = NeurOptimiser()

optimiser.solve(
    obj_func=problem_function,
    search_space=problem_bounds,
    debug_mode=True,
    num_iterations=1000,
)
```

For more examples, please, visit [Neuroptimiser Usage](https://neuroptimiser.github.io/usage.html)

## πŸ“Š Benchmarking
Neuroptimiser has been validated over the [BBOB suite](https://github.com/numbbo/coco), showing:
* Competitive convergence versus Random Search
* Consistent results across function types and dimensions
* Linear runtime scaling with number of units and problem size

## πŸ”¬ Citation
```bibtex
@misc{neuroptimiser2025,
  author={Cruz-Duarte, Jorge M. and Talbi, El-Ghazali},
  title        = {Neuroptimiser: A neuromorphic optimisation framework},
  year         = {2025},
  url          = {https://github.com/neuroptimiser/neuroptimiser},
  note         = {Version 1.0.X, accessed on 20XX-XX-XX}
}
```

## πŸ”— Resources
* πŸ“˜ [Documentation](https://neuroptimiser.github.io)
* πŸ“œ [Paper](https://doi.org/10.48550/arXiv.2507.08320)
* 🧠 [Intel Lava-NC](https://github.com/lava-nc/lava)
* πŸ§ͺ [COCO Platform](https://github.com/numbbo/coco)

## πŸ› οΈ License
MIT License β€” [see LICENSE](LICENSE)

## πŸ§‘β€πŸ’» Authors
* [Jorge M. Cruz-Duarte](https://github.com/jcrvz) β€” University of Lille
* El-Ghazali Talbi β€” University of Lille

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "neuroptimiser",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "neuromorphic, spiking, optimisation, lava-nc",
    "author": null,
    "author_email": "Jorge Mario Cruz-Duarte <jorge.cruz-duarte@univ-lille.fr>, El-Ghazali Talbi <el-ghazali.talbi@univ-lille.fr>",
    "download_url": "https://files.pythonhosted.org/packages/ac/3f/1610d1275b97f280062925df0632f9e5179f718038ef74e5771977184934/neuroptimiser-1.0.1.post1.tar.gz",
    "platform": null,
    "description": "![Status](https://img.shields.io/badge/status-active-success)\n[![PyPI Version](https://img.shields.io/pypi/v/neuroptimiser)](https://pypi.org/project/neuroptimiser/)\n![GitHub Tag](https://img.shields.io/github/v/tag/neuroptimiser/neuroptimiser)\n[![Python Versions](https://img.shields.io/pypi/pyversions/neuroptimiser.svg)](https://pypi.org/project/neuroptimiser/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/neuroptimiser)](https://pypi.org/project/neuroptimiser/)\n![License](https://img.shields.io/github/license/neuroptimiser/neuroptimiser)\n[![arXiv](https://img.shields.io/badge/arXiv-2507.08320-b31b1b.svg)](https://arxiv.org/abs/2507.08320)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15592900.svg)](https://doi.org/10.5281/zenodo.15592900)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15858610.svg)](https://doi.org/10.5281/zenodo.15858610)\n\n# NeurOptimiser\n\n**NeurOptimiser** is a neuromorphic optimisation framework in which metaheuristic search emerges from asynchronous spiking dynamics. It defines optimisation as a decentralised process executed by interconnected Neuromorphic Heuristic Units (NHUs), each embedding a spiking neuron model and a spike-triggered heuristic rule.\n\nThis framework enables fully event-driven, low-power optimisation by integrating spiking computation with local heuristic adaptation. It supports multiple neuron models, perturbation operators, and network topologies.\n\n---\n\n## \u2728 Key Features\n\n- Modular and extensible architecture using **Intel\u2019s Lava**.\n- Supports **linear** and **Izhikevich** neuron dynamics.\n- Implements **random**, **fixed**, **directional**, and **Differential Evolution** operators as spike-triggered perturbations.\n- Includes asynchronous **neighbourhood management**, **tensor contraction layers**, and **greedy selectors**.\n- Compatible with **BBOB (COCO)** suite.\n- Designed for **scalability**, **reusability**, and **future deployment** on **Loihi-class neuromorphic hardware**.\n\n---\n\n## \ud83d\udcd6 Documentation\nFor detailed documentation, examples, and API reference, please visit the [Neuroptimiser Documentation](https://neuroptimiser.github.io/).\n\n## \ud83d\udce6 Installation\n\n```bash\npip install -e .\n```\nEnsure you have Python \u2265 3.10 and the Lava-NC environment configured.\n\nYou can also clone the repository and install it. Check the Makefile for additional options.\n\n\n## \ud83d\ude80 Example Usage\n```python\nfrom neuroptimiser import NeuroOptimiser\nimport numpy as np\n\nproblem_function    = lambda x: np.linalg.norm(x)\nproblem_bounds      = np.array([[-5.0, 5.0], [-5.0, 5.0]])\n\noptimiser = NeurOptimiser()\n\noptimiser.solve(\n    obj_func=problem_function,\n    search_space=problem_bounds,\n    debug_mode=True,\n    num_iterations=1000,\n)\n```\n\nFor more examples, please, visit [Neuroptimiser Usage](https://neuroptimiser.github.io/usage.html)\n\n## \ud83d\udcca Benchmarking\nNeuroptimiser has been validated over the [BBOB suite](https://github.com/numbbo/coco), showing:\n* Competitive convergence versus Random Search\n* Consistent results across function types and dimensions\n* Linear runtime scaling with number of units and problem size\n\n## \ud83d\udd2c Citation\n```bibtex\n@misc{neuroptimiser2025,\n  author={Cruz-Duarte, Jorge M. and Talbi, El-Ghazali},\n  title        = {Neuroptimiser: A neuromorphic optimisation framework},\n  year         = {2025},\n  url          = {https://github.com/neuroptimiser/neuroptimiser},\n  note         = {Version 1.0.X, accessed on 20XX-XX-XX}\n}\n```\n\n## \ud83d\udd17 Resources\n* \ud83d\udcd8 [Documentation](https://neuroptimiser.github.io)\n* \ud83d\udcdc [Paper](https://doi.org/10.48550/arXiv.2507.08320)\n* \ud83e\udde0 [Intel Lava-NC](https://github.com/lava-nc/lava)\n* \ud83e\uddea [COCO Platform](https://github.com/numbbo/coco)\n\n## \ud83d\udee0\ufe0f License\nMIT License \u2014 [see LICENSE](LICENSE)\n\n## \ud83e\uddd1\u200d\ud83d\udcbb Authors\n* [Jorge M. Cruz-Duarte](https://github.com/jcrvz) \u2014 University of Lille\n* El-Ghazali Talbi \u2014 University of Lille\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A modular and asynchronous framework for neuromorphic optimisation using spike-driven metaheuristics and heuristic-controlled spiking dynamics.",
    "version": "1.0.1.post1",
    "project_urls": {
        "Documentation": "https://neuroptimiser.github.io",
        "Homepage": "https://neuroptimiser.github.io",
        "Source": "https://github.com/neuroptimiser/neuroptimiser"
    },
    "split_keywords": [
        "neuromorphic",
        " spiking",
        " optimisation",
        " lava-nc"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2e7255f37092dd0803b5a6378e712fe13f114d32c43d5c3e8f153b3d746f7f1d",
                "md5": "054b9481aed5c44e061b34e6b8ec42bd",
                "sha256": "6ce3b0bd47c865831e40a1b59df459056429a046ae41f464c905b1f523eda537"
            },
            "downloads": -1,
            "filename": "neuroptimiser-1.0.1.post1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "054b9481aed5c44e061b34e6b8ec42bd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 33562,
            "upload_time": "2025-08-29T15:32:08",
            "upload_time_iso_8601": "2025-08-29T15:32:08.418823Z",
            "url": "https://files.pythonhosted.org/packages/2e/72/55f37092dd0803b5a6378e712fe13f114d32c43d5c3e8f153b3d746f7f1d/neuroptimiser-1.0.1.post1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ac3f1610d1275b97f280062925df0632f9e5179f718038ef74e5771977184934",
                "md5": "520d089964e0d0b8c27ee670f429a21e",
                "sha256": "d581eb20edc798e05f6e7f42c589e2b27042cd77f2652b519349a7a33aa5fa60"
            },
            "downloads": -1,
            "filename": "neuroptimiser-1.0.1.post1.tar.gz",
            "has_sig": false,
            "md5_digest": "520d089964e0d0b8c27ee670f429a21e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 37654,
            "upload_time": "2025-08-29T15:32:09",
            "upload_time_iso_8601": "2025-08-29T15:32:09.731492Z",
            "url": "https://files.pythonhosted.org/packages/ac/3f/1610d1275b97f280062925df0632f9e5179f718038ef74e5771977184934/neuroptimiser-1.0.1.post1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-29 15:32:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "neuroptimiser",
    "github_project": "neuroptimiser",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "alabaster",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "alembic",
            "specs": [
                [
                    "==",
                    "1.16.1"
                ]
            ]
        },
        {
            "name": "anyio",
            "specs": [
                [
                    "==",
                    "4.9.0"
                ]
            ]
        },
        {
            "name": "appnope",
            "specs": [
                [
                    "==",
                    "0.1.4"
                ]
            ]
        },
        {
            "name": "argon2-cffi",
            "specs": [
                [
                    "==",
                    "23.1.0"
                ]
            ]
        },
        {
            "name": "argon2-cffi-bindings",
            "specs": [
                [
                    "==",
                    "21.2.0"
                ]
            ]
        },
        {
            "name": "arrow",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "asteval",
            "specs": [
                [
                    "==",
                    "0.9.33"
                ]
            ]
        },
        {
            "name": "asttokens",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "async-lru",
            "specs": [
                [
                    "==",
                    "2.0.5"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "25.3.0"
                ]
            ]
        },
        {
            "name": "babel",
            "specs": [
                [
                    "==",
                    "2.17.0"
                ]
            ]
        },
        {
            "name": "beautifulsoup4",
            "specs": [
                [
                    "==",
                    "4.13.4"
                ]
            ]
        },
        {
            "name": "bleach",
            "specs": [
                [
                    "==",
                    "6.2.0"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2025.4.26"
                ]
            ]
        },
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.17.1"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.4.2"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.2.1"
                ]
            ]
        },
        {
            "name": "cmaes",
            "specs": [
                [
                    "==",
                    "0.11.1"
                ]
            ]
        },
        {
            "name": "coco-experiment",
            "specs": [
                [
                    "==",
                    "2.8.1"
                ]
            ]
        },
        {
            "name": "cocopp",
            "specs": [
                [
                    "==",
                    "2.7.3"
                ]
            ]
        },
        {
            "name": "colorlog",
            "specs": [
                [
                    "==",
                    "6.9.0"
                ]
            ]
        },
        {
            "name": "comm",
            "specs": [
                [
                    "==",
                    "0.2.2"
                ]
            ]
        },
        {
            "name": "contourpy",
            "specs": [
                [
                    "==",
                    "1.3.2"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "==",
                    "45.0.3"
                ]
            ]
        },
        {
            "name": "customhys",
            "specs": [
                [
                    "==",
                    "1.1.6"
                ]
            ]
        },
        {
            "name": "cycler",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "debugpy",
            "specs": [
                [
                    "==",
                    "1.8.14"
                ]
            ]
        },
        {
            "name": "decorator",
            "specs": [
                [
                    "==",
                    "5.2.1"
                ]
            ]
        },
        {
            "name": "defusedxml",
            "specs": [
                [
                    "==",
                    "0.7.1"
                ]
            ]
        },
        {
            "name": "deprecated",
            "specs": [
                [
                    "==",
                    "1.2.18"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.21.2"
                ]
            ]
        },
        {
            "name": "exceptiongroup",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "executing",
            "specs": [
                [
                    "==",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "fastjsonschema",
            "specs": [
                [
                    "==",
                    "2.21.1"
                ]
            ]
        },
        {
            "name": "filelock",
            "specs": [
                [
                    "==",
                    "3.18.0"
                ]
            ]
        },
        {
            "name": "fonttools",
            "specs": [
                [
                    "==",
                    "4.58.0"
                ]
            ]
        },
        {
            "name": "fqdn",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "fsspec",
            "specs": [
                [
                    "==",
                    "2025.5.1"
                ]
            ]
        },
        {
            "name": "furo",
            "specs": [
                [
                    "==",
                    "2024.8.6"
                ]
            ]
        },
        {
            "name": "ga4mp",
            "specs": [
                [
                    "==",
                    "2.0.4"
                ]
            ]
        },
        {
            "name": "graphviz",
            "specs": [
                [
                    "==",
                    "0.20.3"
                ]
            ]
        },
        {
            "name": "h11",
            "specs": [
                [
                    "==",
                    "0.16.0"
                ]
            ]
        },
        {
            "name": "httpcore",
            "specs": [
                [
                    "==",
                    "1.0.9"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.28.1"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "imagesize",
            "specs": [
                [
                    "==",
                    "1.4.1"
                ]
            ]
        },
        {
            "name": "importlib-metadata",
            "specs": [
                [
                    "==",
                    "8.7.0"
                ]
            ]
        },
        {
            "name": "iniconfig",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "ioh",
            "specs": [
                [
                    "==",
                    "0.3.18"
                ]
            ]
        },
        {
            "name": "ipykernel",
            "specs": [
                [
                    "==",
                    "6.29.5"
                ]
            ]
        },
        {
            "name": "ipython",
            "specs": [
                [
                    "==",
                    "8.36.0"
                ]
            ]
        },
        {
            "name": "isoduration",
            "specs": [
                [
                    "==",
                    "20.11.0"
                ]
            ]
        },
        {
            "name": "jedi",
            "specs": [
                [
                    "==",
                    "0.19.2"
                ]
            ]
        },
        {
            "name": "jinja2",
            "specs": [
                [
                    "==",
                    "3.1.6"
                ]
            ]
        },
        {
            "name": "joblib",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "json5",
            "specs": [
                [
                    "==",
                    "0.12.0"
                ]
            ]
        },
        {
            "name": "jsonpointer",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "jsonschema",
            "specs": [
                [
                    "==",
                    "4.24.0"
                ]
            ]
        },
        {
            "name": "jsonschema-specifications",
            "specs": [
                [
                    "==",
                    "2025.4.1"
                ]
            ]
        },
        {
            "name": "kiwisolver",
            "specs": [
                [
                    "==",
                    "1.4.8"
                ]
            ]
        },
        {
            "name": "lava-nc",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "mako",
            "specs": [
                [
                    "==",
                    "1.3.10"
                ]
            ]
        },
        {
            "name": "markdown-it-py",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "markupsafe",
            "specs": [
                [
                    "==",
                    "3.0.2"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "==",
                    "3.10.3"
                ]
            ]
        },
        {
            "name": "matplotlib-inline",
            "specs": [
                [
                    "==",
                    "0.1.7"
                ]
            ]
        },
        {
            "name": "mdit-py-plugins",
            "specs": [
                [
                    "==",
                    "0.4.2"
                ]
            ]
        },
        {
            "name": "mdurl",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "mistune",
            "specs": [
                [
                    "==",
                    "3.1.3"
                ]
            ]
        },
        {
            "name": "mpmath",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "myst-nb",
            "specs": [
                [
                    "==",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "myst-parser",
            "specs": [
                [
                    "==",
                    "4.0.1"
                ]
            ]
        },
        {
            "name": "nbclient",
            "specs": [
                [
                    "==",
                    "0.10.2"
                ]
            ]
        },
        {
            "name": "nbconvert",
            "specs": [
                [
                    "==",
                    "7.16.6"
                ]
            ]
        },
        {
            "name": "nbformat",
            "specs": [
                [
                    "==",
                    "5.10.4"
                ]
            ]
        },
        {
            "name": "nest-asyncio",
            "specs": [
                [
                    "==",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "networkx",
            "specs": [
                [
                    "==",
                    "2.8.7"
                ]
            ]
        },
        {
            "name": "notebook",
            "specs": [
                [
                    "==",
                    "7.4.3"
                ]
            ]
        },
        {
            "name": "notebook-shim",
            "specs": [
                [
                    "==",
                    "0.2.4"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "1.25.0"
                ]
            ]
        },
        {
            "name": "optuna",
            "specs": [
                [
                    "==",
                    "4.3.0"
                ]
            ]
        },
        {
            "name": "optunahub",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "overrides",
            "specs": [
                [
                    "==",
                    "7.7.0"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "25.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "pandocfilters",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "parso",
            "specs": [
                [
                    "==",
                    "0.8.4"
                ]
            ]
        },
        {
            "name": "pexpect",
            "specs": [
                [
                    "==",
                    "4.9.0"
                ]
            ]
        },
        {
            "name": "pillow",
            "specs": [
                [
                    "==",
                    "11.2.1"
                ]
            ]
        },
        {
            "name": "pip",
            "specs": [
                [
                    "==",
                    "25.1.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "4.3.8"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "pockets",
            "specs": [
                [
                    "==",
                    "0.9.1"
                ]
            ]
        },
        {
            "name": "prometheus-client",
            "specs": [
                [
                    "==",
                    "0.22.0"
                ]
            ]
        },
        {
            "name": "prompt-toolkit",
            "specs": [
                [
                    "==",
                    "3.0.51"
                ]
            ]
        },
        {
            "name": "psutil",
            "specs": [
                [
                    "==",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "ptyprocess",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "pure-eval",
            "specs": [
                [
                    "==",
                    "0.2.3"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.22"
                ]
            ]
        },
        {
            "name": "pygithub",
            "specs": [
                [
                    "==",
                    "2.6.1"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": [
                [
                    "==",
                    "2.19.1"
                ]
            ]
        },
        {
            "name": "pyjwt",
            "specs": [
                [
                    "==",
                    "2.10.1"
                ]
            ]
        },
        {
            "name": "pynacl",
            "specs": [
                [
                    "==",
                    "1.5.0"
                ]
            ]
        },
        {
            "name": "pyparsing",
            "specs": [
                [
                    "==",
                    "3.2.3"
                ]
            ]
        },
        {
            "name": "pyqt5",
            "specs": [
                [
                    "==",
                    "5.15.11"
                ]
            ]
        },
        {
            "name": "pyqt5-qt5",
            "specs": [
                [
                    "==",
                    "5.15.17"
                ]
            ]
        },
        {
            "name": "pyqt5-sip",
            "specs": [
                [
                    "==",
                    "12.17.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.3.5"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "python-json-logger",
            "specs": [
                [
                    "==",
                    "3.3.0"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2025.2"
                ]
            ]
        },
        {
            "name": "pyyaml",
            "specs": [
                [
                    "==",
                    "6.0.2"
                ]
            ]
        },
        {
            "name": "pyzmq",
            "specs": [
                [
                    "==",
                    "26.4.0"
                ]
            ]
        },
        {
            "name": "referencing",
            "specs": [
                [
                    "==",
                    "0.36.2"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "rfc3339-validator",
            "specs": [
                [
                    "==",
                    "0.1.4"
                ]
            ]
        },
        {
            "name": "rfc3986-validator",
            "specs": [
                [
                    "==",
                    "0.1.1"
                ]
            ]
        },
        {
            "name": "rpds-py",
            "specs": [
                [
                    "==",
                    "0.25.1"
                ]
            ]
        },
        {
            "name": "schema",
            "specs": [
                [
                    "==",
                    "0.7.7"
                ]
            ]
        },
        {
            "name": "scikit-learn",
            "specs": [
                [
                    "==",
                    "1.6.1"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "==",
                    "1.15.3"
                ]
            ]
        },
        {
            "name": "seaborn",
            "specs": [
                [
                    "==",
                    "0.13.2"
                ]
            ]
        },
        {
            "name": "send2trash",
            "specs": [
                [
                    "==",
                    "1.8.3"
                ]
            ]
        },
        {
            "name": "setuptools",
            "specs": [
                [
                    "==",
                    "80.9.0"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.17.0"
                ]
            ]
        },
        {
            "name": "sniffio",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "snowballstemmer",
            "specs": [
                [
                    "==",
                    "3.0.1"
                ]
            ]
        },
        {
            "name": "soupsieve",
            "specs": [
                [
                    "==",
                    "2.7"
                ]
            ]
        },
        {
            "name": "sqlalchemy",
            "specs": [
                [
                    "==",
                    "2.0.41"
                ]
            ]
        },
        {
            "name": "stack-data",
            "specs": [
                [
                    "==",
                    "0.6.3"
                ]
            ]
        },
        {
            "name": "sympy",
            "specs": [
                [
                    "==",
                    "1.14.0"
                ]
            ]
        },
        {
            "name": "tabulate",
            "specs": [
                [
                    "==",
                    "0.9.0"
                ]
            ]
        },
        {
            "name": "terminado",
            "specs": [
                [
                    "==",
                    "0.18.1"
                ]
            ]
        },
        {
            "name": "threadpoolctl",
            "specs": [
                [
                    "==",
                    "3.6.0"
                ]
            ]
        },
        {
            "name": "tikzpy",
            "specs": [
                [
                    "==",
                    "0.0.4"
                ]
            ]
        },
        {
            "name": "tinycss2",
            "specs": [
                [
                    "==",
                    "1.4.0"
                ]
            ]
        },
        {
            "name": "tomli",
            "specs": [
                [
                    "==",
                    "2.2.1"
                ]
            ]
        },
        {
            "name": "torch",
            "specs": [
                [
                    "==",
                    "2.7.0"
                ]
            ]
        },
        {
            "name": "tornado",
            "specs": [
                [
                    "==",
                    "6.5.1"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    "==",
                    "4.67.1"
                ]
            ]
        },
        {
            "name": "traitlets",
            "specs": [
                [
                    "==",
                    "5.14.3"
                ]
            ]
        },
        {
            "name": "types-python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.20250516"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.13.2"
                ]
            ]
        },
        {
            "name": "tzdata",
            "specs": [
                [
                    "==",
                    "2025.2"
                ]
            ]
        },
        {
            "name": "uri-template",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.4.0"
                ]
            ]
        },
        {
            "name": "wcwidth",
            "specs": [
                [
                    "==",
                    "0.2.13"
                ]
            ]
        },
        {
            "name": "webcolors",
            "specs": [
                [
                    "==",
                    "24.11.1"
                ]
            ]
        },
        {
            "name": "webencodings",
            "specs": [
                [
                    "==",
                    "0.5.1"
                ]
            ]
        },
        {
            "name": "websocket-client",
            "specs": [
                [
                    "==",
                    "1.8.0"
                ]
            ]
        },
        {
            "name": "wrapt",
            "specs": [
                [
                    "==",
                    "1.17.2"
                ]
            ]
        },
        {
            "name": "zipp",
            "specs": [
                [
                    "==",
                    "3.22.0"
                ]
            ]
        }
    ],
    "lcname": "neuroptimiser"
}
        
Elapsed time: 3.55658s