A modular and asynchronous framework for neuromorphic optimisation using spike-driven metaheuristics and heuristic-controlled spiking dynamics.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neuroptimiser-1.0.4.tar.gz.
File metadata
- Download URL: neuroptimiser-1.0.4.tar.gz
- Upload date:
- Size: 42.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6e635887f29f4dda7ae368db3384ab0f453aa8cc6ac8f940015e96b90bc6041
|
|
| MD5 |
10e088fee5b4086f6728df1a1bd382cb
|
|
| BLAKE2b-256 |
9dd6a6ab6c021c61a049127715af24fd6d5d1d678a84befb89c5c7342fbf6956
|
File details
Details for the file neuroptimiser-1.0.4-py3-none-any.whl.
File metadata
- Download URL: neuroptimiser-1.0.4-py3-none-any.whl
- Upload date:
- Size: 37.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31c48928d6d315596b5cf93d553fa00b50a18e2b311a28bf4cb908da836b56a1
|
|
| MD5 |
06f3083164ebf169b5c2aa8b4a65744f
|
|
| BLAKE2b-256 |
13aa75ef9bd695b775af6fddd1c045c6283638248b2b9c9bc4099d460be35772
|