College - Author 1

College of Engineering

Department - Author 1

Computer Science Department

Degree Name - Author 1

BS in Computer Science



Primary Advisor

Ryan Matteson, College of Engineering, Computer Science and Software Engineering Department

Additional Advisors

Zachary Peterson, College of Engineering, Computer Science and Software Engineering Department


The Flexible Job Shop Scheduling Problem is an NP-Hard combinatorial problem. This paper aims to find a solution to this problem using genetic algorithms, and discuss the effectiveness of this. Initially, I did exploratory work on whether neural networks would be effective or not, and found a lot of trade offs between using neural networks and chromosome sequencing. In the end, I decided to use chromosome sequencing over neural networks, due to the scope of my problem being on a small scale rather than on a large scale.

Therefore, the genetic algorithm was implemented using chromosome sequencing. My chromosomes were represented as binary strings with reserved bits for the machine and job numbers. This allowed me to experiment with different mutations such as random bit flip mutation and machine job swap mutations.

The biggest benefit of genetic algorithms over heuristic algorithms is the potential for improvement. While greedy gives good results initially, genetic beats out greedy quickly after a small number of epochs. Furthermore, I suspect that genetic algorithms should be much faster than other learning algorithms, but as this is an under-documented metric, I decided to contribute my own results to help document this metric.

For future work, it would be interesting to see how a neural network model would have reacted, and how its time to find a solution would compare to chromosome sequencing. Another interesting topic is a scheduler that can adapt to any variation of the Job Shop Scheduling Problem, as this would be very useful in the real world. One final interesting topic would be to implement some kind of dynamic job loading for this genetic algorithm, as in real world situations, new jobs and tasks get scheduled all the time. But, this is a very complicated problem, thus it is best left to the future.