I'm working on a personal project and I need some help getting my ideas straight on a scheduling algorithm.
Imagine you're hosting a conference:
- Attendees need to be automatically assigned to 6 out of 8 possible workshops, and 2 out of 3 possible lectures throughout the day.
- Attendees can only attend a workshop or lecture once (no scheduled repeats).
- Everyone goes to lunch at noon.
- Attendees should get one break before lunch and one break after.
- Workshops are 30 minutes long and Lectures are 60 minutes long.
- Lectures are only available at 9am, 11am, 1pm, and 3pm, otherwise the attendees are in a workshop or on break.
Ideally, the basic schedule will be one of two variants (the only difference is which lecture they attend and when):
- 9am - noon: 3 workshops, a break, and a lecture (either A or B)
- 1pm - 4pm: 3 workshops, a break, and a lecture (either B or C)
OR
- 9am - noon: Lecture (either A or B), a break, 3 workshops
- 1pm - 4pm: Lecture (either B or C), a break, 3 workshops
I have a list of employees, and I can structure the "session" info tables however I want. But in the end I need to be able to loop through employees, figure out a schedule and then store it so we can print it later.
How would you go about this? I'm more than happy to go into detail about other constraints / requirements.