Implementation and visualization of different swarm optimization algorithms.
Project description
swarmlib
Description
This repository implements several optimization algorithms.
Installation
You can install the package with pip
from pypi:
pip3 install swarmlib
swarm --version
Usage
To print all available algorithms:
swarm --help
Ant Colony Optimization
This repository includes an ant colony optimization algorithm for the traveling salesman problem (TSP) like Marco Dorigo, Mauro Birattari, and Thomas Stuetzle introduced in the IEEE Computational Intelligence Magazine in November 2006 (DOI: 10.1109/MCI.2006.329691).
The implementation was part of the course Natural computing for learning and optimisation at Charles University Prague in winter 2018/2019.
Features
Enables to apply the ant colony optimization algorithm to a TSP using a TSPLIB95 file and plots the result.
The algorithm solves the TSP and plots the result all n iterations.
The nodes are plot according to their coordinates read from the TSPLIB95 file. The widths of the edges indicate the amount of pheromone that is associated with this edge. If an edge is blue, it is part of the best found path.
To print all available options execute:
swarm ants -h
API
In addition to the client you can also use the API:
from swarmlib.aco4tsp.aco_problem import ACOProblem
problem = ACOProblem('/path/to/my/tsp-file.tsp', 10)
if problem.solve():
problem.show_result()
Firefly Algorithm
This repository includes the firefly algorithm like Xin-She Yang introduced in his paper Firefly Algorithms for Multimodal Optimization in 2009 (DOI: 10.1007/978-3-642-04944-6_14).
The implementation was part of the course Natural computing for learning and optimisation at Charles University Prague in winter 2018/2019.
Features
Enables to apply the firefly algorithm to one of the provided 2D functions. The algorithm tries to find the global minimum of the selected function.
Currently two functions can be selected:
To print all available options execute:
swarm fireflies -h
API
In addition to the client you can also use the API:
from swarmlib.fireflyalgorithm.firefly_problem import FireflyProblem
from swarmlib.fireflyalgorithm.functions import FUNCTIONS
problem = FireflyProblem(FUNCTIONS['michalewicz'], 14)
problem.solve()
Contribution
If you found a bug or are missing a feature do not hesitate to file an issue.
Pull Requests are welcome!
Support
When you like this package make sure to star the repository. I am always looking for new ideas and feedback.
In addition, it is possible to donate via paypal.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.