NeurOptimiser
Framework v1.0.2 MIT

NeurOptimiser

NeurOptimiser is a neuromorphic optimisation framework in which metaheuristic search emerges from asynchronous spiking dynamics.

Installation

pip install neuroptimiser
Lava Neuromorphic Optimization Evolutionary Computation Event-Driven Python

NeurOptimiser is a neuromorphic optimisation framework in which metaheuristic search emerges from asynchronous spiking dynamics.

Overview

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.

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.

Quick Start

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,
)

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