Implementations of classic optimisation and combinatorial algorithms in Julia. Built as supplementary material alongside coursework in operations research and metaheuristics.
Each algorithm is implemented from scratch (no external solver libraries, only Julia standard library)
Single-source shortest path on a weighted directed graph. Step-by-step implementation showing the unvisited set Q and visited set S at each iteration.
Solves the N-Queens problem using a genetic algorithm with tournament selection, ordered crossover, and swap mutation. Also includes a brute-force solver for small N (≤ 8) for comparison.
Heuristic shortest path search using the haversine distance as an admissible heuristic on a geographic graph. Finds optimal routes between nodes with lat/lon coordinates.
Solves a 50-item, 600 kg capacity knapsack problem with simulated annealing. Greedy initial solution, single-flip neighbourhood moves, geometric cooling schedule.
optimisation-algorithms/
├── dijkstra/
│ └── dijkstra.jl
├── genetic_algorithm/
│ └── n_queens_genetic.jl
├── astar/
│ └── astar.jl
└── simulated_annealing/
└── simulated_annealing_knapsack.jl
julia dijkstra/dijkstra.jl
julia genetic_algorithm/n_queens_genetic.jl
julia astar/astar.jl
julia simulated_annealing/simulated_annealing_knapsack.jlNo packages required beyond Julia standard library (Random).