Skip to content

Latest commit

 

History

History
230 lines (159 loc) · 8.77 KB

File metadata and controls

230 lines (159 loc) · 8.77 KB

Code Repository

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:

Deakin Mathematics Yearbook Report:


Repository Structure

The project is organised into modular components. Below is the folder layout, along with a description of each directory:

📂 Repository/


Algorithms

Greedy Algorithm

  • 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.

Genetic Algorithm

  • 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

Local Search

  • 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 Models (Exact Solution Methods)

  • CPLEX Shortest Path: Uses mathematical programming to find exact optimal network paths.
  • CPLEX Graph Model: Provides full graph-based optimisation for deployment strategies, delivering exact solutions.

Datasets

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.


Scripts and Utilities

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.


Figures

The figures/ folder stores images, diagrams, and charts used for documentation within this README. This includes dataset visualisations.


Results

Algorithm outputs are stored under heuristic-algorithm/results/, with logs in heuristic-algorithm/code/logs/.


Meet the Lead Developer (kidding!)

Phoebe the cat with the code
Phoebe: Lead Developer
Phoebe the cat with the code
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.)


Getting Started

  1. Clone the repository:

    git clone https://github.com/breezy-codes/B5G-network-planning-algorithms.git
    cd B5G-network-planning-algorithms
  2. Install dependencies (Python 3.9+ recommended):

    pip install -r requirements.txt
  3. Explore the project:
    Review the folder structure and documentation to understand available algorithms, datasets, and utilities.

  4. 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
  5. 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.

Contribution Guidelines

  • 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.

License

This project is released under the GPL-3.0 License. See the LICENSE file for details.