# Welcome to PySwarms’s documentation!

PySwarms is an extensible research toolkit for particle swarm optimization (PSO) in Python.

It is intended for swarm intelligence researchers, practitioners, and students who prefer a high-level declarative interface for implementing PSO in their problems. PySwarms enables basic optimization with PSO and interaction with swarm optimizations. Check out more features below!

- Free software: MIT license

- Github repository: https://github.com/ljvmiranda921/pyswarms

- Python versions: 3.5, 3.6, and 3.7

- Chat with us: https://gitter.im/pyswarms/Issues

## Launching pad

- If you don’t know what Particle Swarm Optimization is, read up this short Introduction! Then, if you plan to use PySwarms in your project, check the Installation guide and use-case examples.

- If you are a researcher in the field of swarm intelligence, and would like to include your technique in our list of optimizers, check our contributing page to see how to implement your optimizer using the current base classes in the library.

- If you are an open-source contributor, and would like to help PySwarms grow, be sure to check our Issues page in Github, and see the open issues with the tag help-wanted. Moreover, we accommodate contributions from first-time contributors! Just check our first-timers-only tag for open issues (Don’t worry! We’re happy to help you make your first PR!).

General

- Introduction
  - It’s all a treasure hunt
  - Particle Swarm Optimization (PSO)
  - Why make PySwarms?
- Features
  - Single-Objective Optimizers
  - Utilities
- Installation
  - Stable release
  - From sources
- Credits
  - Maintainers
  - Contributors
- History
  - 0.1.0 (2017-07-12)
  - 0.2.0 (2018-06-11)
  - 0.3.0 (2018-08-10)
  - 0.4.0 (2019-01-29)
  - 1.0.0 (2019-02-08)
  - 1.1.0 (2019-05-18)

Examples

- Tutorials
  - Basic Optimization
  - Writing your own optimization loop
  - Visualization
- Use cases
  - Training a Neural Network
  - Inverse Kinematics Problem
  - Solving an electric circuit using Particle Swarm Optimization

Developer's Guide

- Contributing
  - Types of Contributions
  - Get Started!
  - Pull Request Guidelines
- Understanding the PySwarms API
- Writing your own optimization loop
  - The Swarm Class
  - The Topology Class
- Contributing your own optimizer
  - Proposing an optimizer
  - Inheriting from base classes
  - Writing unit tests

API Documentation

- Backend
  - pyswarms.backend package
    - pyswarms.backend.generators module
    - pyswarms.backend.handlers module
    - pyswarms.backend.operators module
  - pyswarms.handlers package
    - pyswarms.handlers class
  - pyswarms.topology package
    - pyswarms.backend.topology.base module
    - pyswarms.backend.topology.star module
    - pyswarms.backend.topology.ring module
    - pyswarms.backend.topology.von_neumann module
    - pyswarms.backend.topology.pyramid module
    - pyswarms.backend.topology.random module
  - pyswarms.swarms package
    - pyswarms.swarms class
- Base Classes
  - pyswarms.base package
    - pyswarms.base module
- Optimizers
  - pyswarms.single package
    - pyswarms.single.global_best module
    - pyswarms.single.local_best module
    - pyswarms.single.general_optimizer module
  - pyswarms.discrete package
    - pyswarms.discrete.binary module
- Utilities
  - pyswarms.utils.decorators package
  - pyswarms.utils.functions package
    - pyswarms.utils.functions.single_obj module
  - pyswarms.utils.plotters package
    - pyswarms.utils.plotters.plotters module
    - pyswarms.utils.plotters.formatters module
  - pyswarms.utils.reporter package
  - pyswarms.utils.search package
    - pyswarms.utils.search.base_search module
    - pyswarms.utils.search.grid_search module
    - pyswarms.utils.search.random_search module

# Indices and tables

- Index

- Module Index

- Search Page