This repository contains the complete codebase for my Honours year project, based on research into cost-effective deployment and optimisation of next-generation (B5G/6G) reconfigurable RAN and optical X-haul networks. It includes implementations, datasets, and utilities for generating, analysing, and optimising network configurations.
Algorithms provided:
- Greedy Algorithm: Fast, heuristic-based solutions for initial network configurations.
- Genetic Algorithm: Evolutionary optimisation for exploring larger solution spaces.
- Local Search: Iterative improvement for refining solutions.
- CPLEX Models: Exact mathematical programming approaches, including shortest-path and full graph optimisation.
Helper scripts are included for preprocessing data, running batch experiments, and analysing results.
The project explores deployment strategies for next-generation (B5G/6G) reconfigurable RAN and optical X-haul networks, balancing cost, scalability, and performance.
Associated Research Papers:
-
Optical X-haul for Beyond 5G: Cost-effective Deployment Strategies
Presented at the Optical Fiber Communication Conference (OFC) 2025.
Focus: CPLEX shortest path model for efficient X-haul deployment. -
Cost Optimal Network Planning for Converged Optical X-haul in Beyond 5G Networks
Published in the Journal of Optical Communications and Networking (JOCN).
Focus: CPLEX full graph model with Steiner tree post-processing for optimal network design. -
Genetic Algorithm for Multi-layered Location-Allocation-Routing Problems in Network Planning
Submitted to Operations Research (under review).
Focus: Establishes the Steiner tree theorem and demonstrates the genetic algorithm as a scalable alternative to CPLEX for large datasets.
Deakin Mathematics Yearbook Report:
- A cost effective framework fo the design and deployment of B5G in rural Australia - published in the Deakin Mathematics Yearbook 2024.
The project is organised into modular components. Below is the folder layout, along with a description of each directory:
📂 Repository/
📁 code/ — Core source code
- 📁 logs/ — Experiment logs
- 📁 modules/ — Shared modules & utilities
- 📁 algorithms/ — Algorithm-specific helpers
- 📁 data-classes/ — Custom dataclasses for components
- 📄 README.md — Guide to the modules and algorithms
- 📁 results/ — Results from algorithm & CPLEX runs
- 🐍 CPLEX_graph_model.py — CPLEX full graph model implementation
- 🐍 CPLEX_shortest_path.py — CPLEX shortest-path model implementation
- 🐍 genetic_algorithm.py — Genetic algorithm implementation
- 📓 greedy_solution_generator.ipynb — Greedy algorithm implementation notebook
- 🐍 local_search.py — Local search algorithm implementation
- 📄 README.md — Guide to running algorithms
📁 dataset/ — Input datasets
- 📁 full-dataset/ — Large-scale experiments
- 📁 small-dataset/ — Debug & quick runs
- 📄 README.md — Dataset format & usage
📁 figures/ — Diagrams, plots, and figures
📁 scripts/ — Processing & analysis tools
📄 LICENSE — Project license
📄 requirements.txt - Python requirements for the project
📄 README.md — Main repository documentation
- Purpose: Provides a fast, heuristic-based solution for initial network configurations.
- Advantages: Lightweight, quick to implement, and useful as a baseline.
- Implementation: See
code/greedy_solution_generator.ipynb.
- Purpose: Explores larger solution spaces through evolutionary optimisation.
- Advantages: Finds higher-quality solutions at the cost of runtime and computational resources.
- Implementation: See
code/genetic_algorithm.py. - Features:
- Customisable crossover and mutation operators
- Configurable selection strategies
- Logging of population performance over time
- Purpose: Provides an alternative to genetic algorithms for refining solutions via iterative improvement.
- Advantages: Efficient for fine-tuning and escaping local optima.
- Implementation: See
code/local_search.py.
- CPLEX Shortest Path: Uses mathematical programming to find exact optimal network paths.
- Implementation: See
code/CPLEX_shortest_path.py.
- Implementation: See
- CPLEX Graph Model: Provides full graph-based optimisation for deployment strategies, delivering exact solutions.
- Implementation: See
code/CPLEX_graph_model.py.
- Implementation: See
The repository includes two datasets designed on a region within rural Australia, each tailored for different testing scenarios:
-
Full Dataset: Large-scale, complex data designed to fully test algorithms and evaluate scalability.
-
Small Dataset: Simplified data for debugging, quick experiments, and verifying correctness.
See the README in dataset/ for details on dataset structure and usage.
Located in the scripts/ directory, these tools support:
- Dataset Updates: Updating dataset files when changes are made.
- Visualisation: Viewing datasets on a map and plotting algorithm iteration results.
See the README in scripts/ for details on available scripts and their usage.
The figures/ folder stores images, diagrams, and charts used for documentation within this README. This includes dataset visualisations.
Algorithm outputs are stored under heuristic-algorithm/results/, with logs in heuristic-algorithm/code/logs/.
|
Phoebe: Lead Developer |
Phoebe: Chief Bug Finder |
Contribution Rule: If you submit code, you must include a photo of your cat. No cat? No commit! (Phoebe enforces this strictly.)
-
Clone the repository:
git clone https://github.com/breezy-codes/B5G-network-planning-algorithms.git cd B5G-network-planning-algorithms -
Install dependencies (Python 3.9+ recommended):
pip install -r requirements.txt
-
Explore the project:
Review the folder structure and documentation to understand available algorithms, datasets, and utilities. -
Run experiments:
-
For the Greedy Algorithm, open and run the notebook:
jupyter notebook code/greedy_solution_generator.ipynb
-
For the Genetic Algorithm, execute:
python code/genetic_algorithm.py
-
For the Local Search, run:
python code/local_search.py
-
For CPLEX models, execute either:
python code/CPLEX_shortest_path.py
or
python code/CPLEX_graph_model.py
-
-
Inspect results:
- Outputs will be saved in the
results/directory. - Logs can be found in
code/logs/. - Use the provided scripts in
scripts/for further analysis or visualisation of results.
- Outputs will be saved in the
- Fork the repository and create a feature branch.
- Add documentation for all new scripts or algorithms.
- Include experiment logs and a summary of results for reproducibility.
- Optional (but encouraged): Share a photo of your cat colleague.
This project is released under the GPL-3.0 License. See the LICENSE file for details.