This repository contains the full implementation of my dissertation work on optimizing vehicle loading and routing using:
- Genetic Algorithms (GA) for route ordering
- 3D Box/Bin Packing (3D-BPP)
- Iterative Isolation / VLR Repair methods
- Automated replicate experiments
- Timestamped experiment pipelines
- Full reproducibility of results
The system reads real-world merged & normalized datasets, runs multiple GA replicates, applies spatial repair, summarizes results, and generates publication-ready figures.
Dataset Generation/
│
├── input_dataset/
│ └── XML100_1111_01_merged_with_boxes_norm.json
│
├── experiments/
│ └── run_replicates.ps1
│
├── scripts/
│ ├── summarize_replicates_fixed.py
│ ├── extract_isolations.py
│ └── make_figures_fixed.py
│
├── dataset_generation/
├── results/
│ └── runs/
│
└── run_all_experiments.ps1
This project evaluates a hybrid optimisation pipeline combining:
- GA-driven route/order optimisation
- Realistic 3D box/bulk packing
- Automatic infeasibility detection & repair
- Multi-replicate GA runs
- Automated summary & figure generation
git clone <your-repo-url>
cd "Dataset Generation"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
If using requirements:
pip install -r requirements.txt
Otherwise:
pip install numpy pandas matplotlib
Place your dataset here:
input_dataset/XML100_1111_01_merged_with_boxes_norm.json
Runs the full workflow and saves results in timestamped folders:
.\run_all_experiments.ps1
This script automatically:
- Loads dataset
- Runs GA replicates
- Saves everything under
results/runs/<timestamp>/ - Generates: summary CSV, isolation CSV, figures, logs
.\experiments\run_replicates.ps1 `
-normfile ".\input_dataset\XML100_1111_01_merged_with_boxes_norm.json" `
-replicates 20 `
-seed_start 2000
Outputs go to:
experiments_output/
Per-seed GA performance (best score, duration, unpacked, infeasible, etc.)
Automatically generated plots:
- best_score vs seed
- duration vs seed
- unpacked distribution
- infeasible histogram
Shows spatial-repair / isolation behaviour.
Contains timestamp, params, and output paths.
Raw per-seed JSON outputs.
# Python
__pycache__/
*.pyc
# Virtual environment
.venv/
# Output folders
experiments_output/
results/
output/
# Logs
*.log
# Large datasets
input_dataset/*.json
input_dataset/*.csv
# Backup files
*.bak
Optimises route/stop ordering; multiple seeds measure stability.
Uses rotation rules, feasibility checks, and VLR/Isolation repair.
Shows variability, convergence stability, and runtime consistency.
Generates figures and summaries for dissertation use.
To reproduce all experiments:
.\run_all_experiments.ps1
Outputs will appear under:
results/runs/<timestamp>/