Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

PSO-SEM: Particle Swarm Optimization with Population Dynamics - Artificial Splitting, Extinction, and Migration

Python 3.10+ GECCO 2026

This is the official implementation of the paper: "Particle Swarm Optimization with Population Dynamics - Artificial Splitting, Extinction, and Migration", accepted at GECCO 2026.

This code is provided for research purposes only. If you make use of this framework or code in your own work, please cite our GECCO 2026 paper (see the Citation section below).

Overview

This repository contains a Python implementation of PSO-SEM, an advanced Particle Swarm Optimization (PSO) variant. This variant utilizes a multi-swarm approach using strategies of Splitting, Migration, and Extinction to manage the sub-swarms.

This dynamic group management helps the algorithm balance exploration (searching new areas of the solution space) and exploitation (refining known good solutions), making it robust for complex, multi-modal optimization problems.

File Structure

  • PSOSEM.py: The main library file containing the complete implementation of the algorithm.
    • Particle: Class defining an individual particle's state and behavior.
    • Group: Class defining a group (sub-swarm) of particles and its group-level best.
    • HarmonicAverageDistance: Class for calculating the crowding distance used for density estimation.
    • PSOSEM: The main function that runs the optimization process.
    • Helper functions: split_groups, remove_excess_groups, spawnParticles.
  • example.py: A simple script demonstrating how to import and use the PSOSEM algorithm to solve the 100-dimensional Ackley test function.
  • PSOSEM_numba.py: A version of the main algorithm optimized with Numba for improved performance. This file is less readable but more efficient for large-scale problems. It's recommended to use this version for computationally intensive tasks, while the original PSOSEM.py is better for understanding the algorithm's logic.

Installation

The code requires Python and the NumPy library.

The minimum Python version is 3.5. In case of any compatibility or Python feature errors, it is recommended to use Python 3.10.

Numba is required for the optimized version.

To install the required dependencies, run:

python -m pip install numpy

For the Numba-optimized version, also install Numba:

python -m pip install numba

Usage

The example.py file provides a clear template for using the algorithm.

  1. Define objective function, which accept a numpy.ndarray as input and return a single float value (the fitness).
  2. Define the search space bounds as an N x 2 NumPy array, where N is the number of dimensions.
  3. Call the PSOSEM function with your function, bounds, and desired hyperparameters.

To run the provided example:

python example.py

The script will output the optimised solution (position) and its corresponding fitness value.

Citation

If you use this code or framework in your research, please cite our paper:

Plain Text:

Yutong Zou, Wenjun Wang, and Wei Pang. 2026. Particle Swarm Optimization with Population Dynamics - Artificial Splitting, Extinction, and Migration. In Genetic and Evolutionary Computation Conference (GECCO ’26), July 13–17, 2026, San Jose, Costa Rica. ACM, New York, NY, USA. https://doi.org/10.1145/3795095.3805107

BibTeX:

@inproceedings{Zou2026PSOSEM,
   author = {Zou, Yutong and Wang, Wenjun and Pang, Wei},
   title = {Particle Swarm Optimization with Population Dynamics - Artificial Splitting, Extinction, and Migration},
   booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference (GECCO '26)},
   year = {2026},
   isbn = {979-8-4007-2487-9/2026/07},
   publisher = {Association for Computing Machinery},
   address = {New York, NY, USA},
   location = {San Jose, Costa Rica},
   doi = {10.1145/3795095.3805107}
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages