This is kind of a high-level question, in that I'm not sure which mathematical approach might be best for solving my problem.
I'm trying to automate a painful, error prone, and time consuming process that we do every year. Our camp gets requests from kids for programs, we use this data to base how many sessions of each program we offer (since a session has a cap due to room capacities), and then we try to fill the sessions with the kids in a way that minimizes the number of sessions while maximizing filled requests.
There are restrictions on how we organize our sessions, for example:
- Certain pairs of courses MUST be offered at different times because they use the same resources; graphic design and movie making both use the computer lab
- Certain pairs of courses SHOULD be offered at different times; dance and music should not be scheduled at the same time because the same campers like to take both topics
- If a course has more than one session those sessions should not be offered at the same time; for example it would be better to have a crafts session in 3 different time slots instead of having them all offered at the same time
- We would like to balance the number of sessions (and relatedly, camper spaces) being offered in each time slot; we don't want to have 20 sessions in the first time slot, and 45 in the second, or have 10 small programs in the first slot, and 10 huge programs in the second slot.
I would like to find the "schedule" for our camp that results in the most choices being fulfilled, and I'm sure there must be some kind of mathematical approach to do this.
I've been told that you can do Linear Equations (perhaps with Microsoft Excel "solver") to do this, but before I spend many hours trying to setup the equations and the rules, I wanted to be sure that an expert wouldn't suggest something better suited to the task.
Thanks for your ideas!