In the realm of modern computational sciences and engineering, the complexity of problem-solving often exceeds the capacities of traditional algorithms. Graph partitioning, a fundamental challenge in various domains, lies at the heart of numerous optimization problems.
This project delves into the intricate world of graph partitioning optimization, leveraging the power of multiobjective optimization through NSGA-II (Non-dominated Sorting Genetic Algorithm II). NSGA-II stands as a beacon in the pursuit of balancing conflicting objectives, offering a versatile and robust approach to exploring the trade-offs within complex problem landscapes.
The algorithm provided in this repository, will accept data in 2D plane
Define a connected graph
$V = {v_1, v_2, v_3, ..., v_n}$ $E = {e_{ij} i,j \in {1,2,3, ..., n}, i\neq j }$
There are 3 objective functions that are gonna be optimized on this Graph Partitioning Problem,
The implementation of the interactive optimization method in this repository is gonna be using the NAUTILUS Navigator developed by DESDEO which is accessible here https://desdeo-mcdm.readthedocs.io/en/latest/notebooks/nautilus_navigator.html
- Run to install all needed dependencies
pip install requirements.txt
- Open to see the how it's implemented
Graph Partitioning.ipnyb
- Change the input as needed and then run each of the cells
- Enjoy the output!
For more information about the functions used, you can access the optimization.py
file and for all the objects used, you can access the graph.py
file.
If you need more information about the code you can reach out to me via my LinkedIn here https://www.linkedin.com/in/felix-fern/
[1] Datta, Dilip & Figueira, José & Fonseca, Carlos & Pereira, Fernando. (2008). Graph partitioning through a multi-objective evolutionary algorithm: A preliminary study. GECCO'08: Proceedings of the 10th Annual Conference on Genetic and Evolutionary Computation 2008. 625-632. 10.1145/1389095.1389222.