https://github.com/hasnainroopawalla/ant-colony-optimization
A Python package to find the shortest path in a graph using Ant Colony Optimization
https://github.com/hasnainroopawalla/ant-colony-optimization
ant-colony-optimization antnet graph optimization python routing routing-algorithm shortest-path-algorithm
Last synced: 3 months ago
JSON representation
A Python package to find the shortest path in a graph using Ant Colony Optimization
- Host: GitHub
- URL: https://github.com/hasnainroopawalla/ant-colony-optimization
- Owner: hasnainroopawalla
- License: mit
- Created: 2022-01-15T10:39:43.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-03T06:43:59.000Z (11 months ago)
- Last Synced: 2025-02-15T01:36:07.653Z (3 months ago)
- Topics: ant-colony-optimization, antnet, graph, optimization, python, routing, routing-algorithm, shortest-path-algorithm
- Language: Python
- Homepage: https://medium.com/@hasnain.roopawalla/ant-colony-optimization-1bbc346c2da5
- Size: 43 KB
- Stars: 20
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Ant Colony Optimization
[](https://github.com/hasnainroopawalla/Ant-Colony-Optimization/actions/workflows/develop.yml)
[](https://github.com/hasnainroopawalla/Ant-Colony-Optimization/actions/workflows/deploy.yml)
[](https://pypi.python.org/pypi/aco_routing/)
A Python package to find the shortest path in a graph using Ant Colony Optimization (ACO).
➡️ Check out my [Medium article](https://medium.com/@hasnain.roopawalla/ant-colony-optimization-1bbc346c2da5) for a detailed walkthrough 🚀
The Ant colony Optimization algorithm is a probabilistic technique for solving computational problems which can be reduced to finding good paths through graphs ([source](https://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms)).
This implementation of the ACO algorithm uses the [NetworkX](https://networkx.org/) graph environment.
### To install the package directly from PyPi:
```
$ pip install aco_routing
```> Check out: [example.py](https://github.com/hasnainroopawalla/ant-colony-optimization/blob/master/example.py)
Import all the dependencies:
```python
from aco_routing import ACO
import networkx as nx
```Create a `NetworkX.Graph` object with nodes and edges:
```python
G = nx.DiGraph()G.add_edge("A", "B", cost=2)
G.add_edge("B", "C", cost=2)
G.add_edge("A", "H", cost=2)
G.add_edge("H", "G", cost=2)
G.add_edge("C", "F", cost=1)
G.add_edge("F", "G", cost=1)
G.add_edge("G", "F", cost=1)
G.add_edge("F", "C", cost=1)
G.add_edge("C", "D", cost=10)
G.add_edge("E", "D", cost=2)
G.add_edge("G", "E", cost=2)
```Use ACO to find the shortest path and cost between the `source` and `destination`:
```python
aco = ACO(G, ant_max_steps=100, num_iterations=100, ant_random_spawn=True)aco_path, aco_cost = aco.find_shortest_path(
source="A",
destination="D",
num_ants=100,
)
```Output:
```
ACO path: A -> H -> G -> E -> D
ACO path cost: 8.0
```### Ant
`aco_routing.Ant`
- An `Ant` that traverses the graph.
### ACO
`aco_routing.ACO`
- The traditional Ant Colony Optimization algorithm that spawns ants at various nodes in the graph and finds the shortest path between the specified source and destination ([pseudo code](https://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms#Algorithm_and_formula)).
## Contributing
- Post any issues and suggestions on the GitHub [issues](https://github.com/hasnainroopawalla/Ant-Colony-Optimization/issues) page.
- To contribute, fork the project and then create a pull request back to master.