I am creating a timetabling software for a school, which given parameters for teachers/class sizes will output a timetable. There will be a list of classrooms per subject and a list of teachers per subject and I'll divide the students between the teachers.
The main focus is creating timetables for teachers, as opposed to the students, since the teachers will teach only one/two subjects so I believe it is a simper problem.
I aim to have a certain number of classes, which account for optimally ~20 students per class. Each class will require a teacher and each teacher can only be in one place at a time. Additionally, each subject will have a list of available rooms which they could take place in - e.g Computing cannot take place in a History classroom. As well as that, I hope to optimise the timetable so that a teacher is not forced to run across the whole school to get to their next lesson.
I have read a bit about Linear Programming, but I don't fully understand it all. Is it the best way to approach this problem, or should I use another algorithm? I will be using Python, combined with the use of an SQL database if that has any affect.