Skip to content

A Python implementation of the Particle Swarm Optimization (PSO) algorithm, built as an extension of the 'softpy' library for Evolutionary Computing.

Notifications You must be signed in to change notification settings

tskatia/Particle_Swarm_Optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Particle Swarm Optimization (PSO) with SoftPy

This repository contains a working implementation of the Particle Swarm Optimization (PSO) algorithm, a population-based meta-heuristic used for optimizing continuous functions. The project was developed as an assignment for the Fuzzy Systems and Evolutionary Computing course (A.Y. 2024/2025).

Project overview

The implementation is fully compatible with the 'softpy' library interface, extending its capabilities to include swarm intelligence techniques.

Key components:

  • ParticleCandidate: inherits from 'softpy.FloatVectorCandidate'. It manages the position, velocity, and memory (best individual position) of each particle in the swarm.
  • ParticleSwarmOptimizer: inherits from 'softpy.MetaHeuristicsAlgorithm'. It manages the swarm's evolution, handling local, neighborhood and global best positions to guide the particles toward the optimum.

Repository structure:

  • 'softpy/' : the core library provided by the instructor.
  • 'particles.py' : implementation of the 'ParticleCandidate' class.
  • 'PSO_algorithm.py' : implementation of the 'ParticleSwarmOptimizer' logic.
  • 'test.py' : script to run and validate the optimizer on test functions.
  • 'requirements.txt' : list of Python dependencies.

Algorithm details:

The velocity update follows the standard PSO formula: 'v = (inertia * v) + (rl * wl * (local_best - x)) + (rn * wn * (neighbor_best - x)) + (rg * wg * (global_best - x))'

Where:

  • 'inertia': Controls the impact of the previous velocity.
  • 'wl, wn, wg': Cognitive, Social, and Global weights.
  • 'rl, rn, rg': Random components sampled at each iteration.

Credits

This project was developed as part of the Fuzzy Systems and Evolutionary Computing course, by Tsuhuy Ecaterina and Godino Tommaso.

It utilizes the softpy framewor, a Python library developed by Andrea Campagner (https://github.com/AndreaCampagner). You can find the original repository here: https://github.com/AndreaCampagner/softpy .

About

A Python implementation of the Particle Swarm Optimization (PSO) algorithm, built as an extension of the 'softpy' library for Evolutionary Computing.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages