Reputation: 453
(Skip this if you only care about the algorithm)
At the university where I work, one of the biggest hassles in our department is classroom scheduling. For illustration purposes and to lay out the scope of the problem, here's how we do scheduling now:
I have been asked to quietly investigate whether software could do this more optimally.
Is there an algorithm to efficiently schedule a set of resources such that the following criteria are met:
I feel like I can't be the first one to ask this. Is there a efficient algorithm for this, or is this the sort of problem that can only be brute-forced?
Upvotes: 3
Views: 387
Reputation: 19601
There have been papers written on timetabling and scheduling problems for some time. A web search on the two words "timetabling package" turns up commercial and other packages for this.
I know of a problem domain where, despite spasmodic attempts to seek sophisticated solutions, people have ended up writing pretty basic programs implementing ad-hoc solutions - there has been no obvious sign of institutional learning in this field. The stated reason for this is that the users need to understand why the program makes its decisions, especially if it fails to solve the problem and they need to relax the constraints.
It sounds possible that your particular problem - if it is as simple as it at first sounds - could be solved by using the http://en.wikipedia.org/wiki/Assignment_problem, where you assign particular courses to particular room time-slots instead of agents to tasks.
It is possible that a program or algorithm will be influenced by the relative order of constraints in its input, especially if it encounters ties, where two solutions come out as equally good. I would be included to check for this, and, if so, to randomly re-order the input before presenting it to the program or algorithm in an attempt to at least turn bias into random luck.
Upvotes: 1