This project implements a genetic algorithm to solve the graph bi-partitioning problem. The graph bi-partitioning problem is a classical optimization problem where the goal is to divide a graph's vertices into equally sized groups while minimizing the number of edges between groups.
We implemented the Fiduccia-Mattheyses Heuristic search for local search, using a very efficient implementation that uses a custom doubly linked list.
MultiStart Local Search
Iterated Local Search
Genetic Local Search