The main concept of the topic is assigning jobs to multiple machines in order for them to be processed in parallel (Parallel Machine Scheduling - PMS). When jobs are processed in parallel in multiple machines the total execution time is reduced. This objective is often referred in the bibliography as minimization of makespan, which is simply the minimization of the total time for all the jobs to finish.
This project was based on https://www.tandfonline.com/doi/full/10.1080/00207543.2022.2102948 written by Ioannis Avgerinos, Ioannis Mourtos, Stavros Vatikiotis and Georgios Zois. I used the results of their Greedy Heuristic Algorithm and tried to improve them with an implementation of Simulated Annealing. The results were improved in more than 50% of the tested instances. The code was written in Python (Google Colab). The report contains extensive documentation, diagrams, results and description of mathematical concepts.