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.
📦 Installation
Requirements
- Python 3.10 (tested and recommended version)
- Lava-NC environment configured
Install with pip
# After cloning the repository and navigating to the project directory
pip install -e .
# or just install from PyPI
pip install neuroptimiser
Install with uv
# After cloning the repository and navigating to the project directory
uv pip install -e .
# or just install from PyPI
uv pip install neuroptimiser
You can also use the provided Makefile for additional installation options and commands.
Known Issues
"Too many open files" error: On some systems, you may encounter this error during execution. To fix it:
Unix/Linux/macOS:
ulimit -n 65536
Windows (PowerShell):
# No direct equivalent - typically not needed on Windows
# If issues persist, check system file handle limits via registry
Windows (Command Prompt):
REM Windows typically has higher default limits
REM If needed, adjust via Registry Editor or contact system administrator
🚀 Example Usage
from neuroptimiser import NeurOptimiser
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
📊 Benchmarking
Neuroptimiser has been validated over the BBOB suite, showing:
- Competitive convergence versus Random Search
- Consistent results across function types and dimensions
- Linear runtime scaling with number of units and problem size
🔬 Citation
@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
- 📜 Paper
- 🧠 Intel Lava-NC
- 🧪 COCO Platform
🛠️ License
BSD-3-Clause License — see LICENSE
🧑💻 Authors
- Jorge M. Cruz-Duarte — University of Lille
- El-Ghazali Talbi — University of Lille
Release files for neuroptimiser 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| neuroptimiser-1.0.4.tar.gz | 42.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neuroptimiser-1.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.2 kB
Release files / neuroptimiser-1.0.4.tar.gz
| Download URL | neuroptimiser-1.0.4.tar.gz |
|---|---|
| Size | 42.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d6e635887f29f4dda7ae368db3384ab0f453aa8cc6ac8f940015e96b90bc6041
|
|
BLAKE2b-256 checksum How to use checksums |
9dd6a6ab6c021c61a049127715af24fd6d5d1d678a84befb89c5c7342fbf6956
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.14
|
Release files / neuroptimiser-1.0.4-py3-none-any.whl
| Download URL | neuroptimiser-1.0.4-py3-none-any.whl |
|---|---|
| Size | 37.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31c48928d6d315596b5cf93d553fa00b50a18e2b311a28bf4cb908da836b56a1
|
|
BLAKE2b-256 checksum How to use checksums |
13aa75ef9bd695b775af6fddd1c045c6283638248b2b9c9bc4099d460be35772
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.14
|