A Python package to find the shortest path in a graph using Ant Colony Optimization (ACO)
Project description
Ant Colony Optimization
A Python package to find the shortest path in a graph using Ant Colony Optimization (ACO).
➡️ Check out my Medium article 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).
This implementation of the ACO algorithm uses the NetworkX graph environment.
🏁 Getting Started
To install the package directly from PyPi:
$ pip install aco_routing
🎈 Usage
Check out: example.py
Import all the dependencies:
from aco_routing import ACO
import networkx as nx
Create a NetworkX.Graph object with nodes and edges:
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:
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
📦 Contents
Ant
aco_routing.Ant
- An
Antthat 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).
Contributing
- Post any issues and suggestions on the GitHub issues page.
- To contribute, fork the project and then create a pull request back to master.
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aco_routing-1.2.1.tar.gz.
File metadata
- Download URL: aco_routing-1.2.1.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8df6d9da02cd293b35da53142f8f32b58e816a9d76b16bc67d03ab888e6e4e0b
|
|
| MD5 |
5751331db1b618de50a08eb3fc8dd746
|
|
| BLAKE2b-256 |
e84926a49b40d42726e379658227967b4b327337a5ea72a67ba1004403e12c98
|
File details
Details for the file aco_routing-1.2.1-py3-none-any.whl.
File metadata
- Download URL: aco_routing-1.2.1-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99183787d0a6413bbbdab4886594007a26bc24c948b6181c391648a5e8f06466
|
|
| MD5 |
350a3f3eabb0ad5a171f49883278d947
|
|
| BLAKE2b-256 |
359ef2883d9b32e981e1b2360763bbd048e59bc839de7f7144ad73a4caf07545
|