https://github.com/eusha425/network-topology-optimiser
Optimise cellular tower networks with modified MST algorithms (Kruskal's & Prim's). Includes real-world constraint handling, visualization tools, and support for diverse network configurations.
https://github.com/eusha425/network-topology-optimiser
c cell-tower-placement cellular-network cost-optimization graph-theory kruskal-algorithm minimum-spanning-tree network-coverage network-optimization prim-algorithm
Last synced: 29 days ago
JSON representation
Optimise cellular tower networks with modified MST algorithms (Kruskal's & Prim's). Includes real-world constraint handling, visualization tools, and support for diverse network configurations.
- Host: GitHub
- URL: https://github.com/eusha425/network-topology-optimiser
- Owner: Eusha425
- License: mit
- Created: 2023-10-04T05:48:10.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-18T06:59:36.000Z (6 months ago)
- Last Synced: 2025-02-09T18:36:36.898Z (3 months ago)
- Topics: c, cell-tower-placement, cellular-network, cost-optimization, graph-theory, kruskal-algorithm, minimum-spanning-tree, network-coverage, network-optimization, prim-algorithm
- Language: C
- Homepage:
- Size: 479 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Network Topology Optimiser

[](LICENSE)
[](https://en.wikipedia.org/wiki/C_(programming_language))
[](https://www.python.org/)
[](CONTRIBUTING.md)*An advanced network optimisation framework implementing modified MST algorithms for cellular tower placement*
[Features](#-features) •
[Installation](#-installation) •
[Usage](#-usage) •
[Documentation](#-project-structure) •
[Contributing](#-contributing)## 📋 Overview
Network Topology Optimiser is a high-performance tool that implements modified versions of Kruskal's and Prim's algorithms to optimise cellular tower networks. The project focuses on handling real-world constraints such as signal interference and operational costs while maintaining optimal network coverage.
### Key Features
- 🚀 **Efficient Implementation**: Optimised MST algorithms for network analysis
- 🎯 **Dual Optimisation**: Handles both interference and cost constraints
- 📊 **Visualization Tools**: Python scripts for network topology analysis
- 🔄 **Flexible Input**: Supports both sparse and dense network configurations## 🛠️ Prerequisites
- C Compiler (gcc recommended)
- Python 3.x
- Python packages:
```bash
pip install networkx matplotlib numpy pandas
```## 🚀 Installation & Setup
1. **Clone the repository**
```bash
git clone https://github.com/Eusha425/network-topology-optimiser.git
cd network-topology-optimiser
```2. **Compile the C code**
```bash
gcc -O2 -o optimiser main.c graph.c archive.c
```3. **Install required Python packages**
```bash
pip install networkx matplotlib numpy pandas
```## 📊 Usage
### Input Format
The program expects input in the following format:
```
[number_of_vertices]
[source] [destination] [interference] [cost]
...
```### Running the Program
#### Using Input Redirection (Default Method)
```bash
# For dense networks
./optimiser < input.txt# For sparse networks
./optimiser < input_sparse.txt
```#### Alternative Method (File Reading)
If you prefer direct file reading instead of input redirection, you'll need to modify the C code to implement file reading functionality. The main sections that would need modification are:
- `main.c`: Add file handling logic
- `graph.c`: Modify input processing functions### Generating Test Data
```bash
python main_generator.py
```### Visualizing Results
```bash
python graph_visual.py # General network visualization
python kruskal_visual.py # Kruskal's algorithm results
python prim_visual.py # Prim's algorithm results
```## 📁 Project Structure
```
network-topology-optimiser/
├── src/
│ ├── main.c # Main program implementation
│ ├── graph.c # Graph implementation and algorithms
│ ├── graph.h # Graph header file
│ └── archive.c # Archive utility functions
├── visualization/
│ ├── graph_visual.py # Network visualization script
│ ├── kruskal_visual.py # Kruskal's algorithm visualization
│ └── prim_visual.py # Prim's algorithm visualization
├── data/
│ ├── input.txt # Dense graph dataset
│ └── input_sparse.txt # Sparse graph dataset
└── main_generator.py # Test data generator
```## 📈 Performance Analysis
### Algorithm Comparison
| Network Type | Vertices | Kruskal (ms) | Prim (ms) |
|-------------|----------|--------------|------------|
| Sparse | 1000 | 45 | 89 |
| Dense | 1000 | 156 | 78 |## 🤝 Contributing
We love your input! We want to make contributing to Network Topology Optimiser as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainerCheck out our [Contributing Guidelines](CONTRIBUTING.md) for ways to get started.
Please refer to our [Code of Conduct](CONTRIBUTING.md#code-of-conduct) for details on our code of conduct.
## 📜 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.