Skip to main content

A modular and asynchronous framework for neuromorphic optimisation using spike-driven metaheuristics and heuristic-controlled spiking dynamics.

Project description

Status PyPI Version GitHub Tag Python Versions PyPI Downloads License arXiv DOI DOI

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

🛠️ License

BSD-3-Clause License — see LICENSE

🧑‍💻 Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neuroptimiser-1.0.4.tar.gz (42.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neuroptimiser-1.0.4-py3-none-any.whl (37.9 kB view details)

Uploaded Python 3

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

Hashes for neuroptimiser-1.0.4.tar.gz
Algorithm Hash digest
SHA256 d6e635887f29f4dda7ae368db3384ab0f453aa8cc6ac8f940015e96b90bc6041
MD5 10e088fee5b4086f6728df1a1bd382cb
BLAKE2b-256 9dd6a6ab6c021c61a049127715af24fd6d5d1d678a84befb89c5c7342fbf6956

See more details on using hashes here.

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

Hashes for neuroptimiser-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 31c48928d6d315596b5cf93d553fa00b50a18e2b311a28bf4cb908da836b56a1
MD5 06f3083164ebf169b5c2aa8b4a65744f
BLAKE2b-256 13aa75ef9bd695b775af6fddd1c045c6283638248b2b9c9bc4099d460be35772

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page