I was trying to estimate how large a team could grow with part time staff with variable schedules before scheduling an all-hands staff meeting would become infeasible. I think I came upon a solution for my environment.
We have X student workers who can be scheduled.
Our schedule is based on half hour increments from 7:30AM-7:30PM. That’s 120 half hour slots.
A typical student has 30 non-negotiable slots where they can’t be scheduled due to classes and other obligations. The distribution of these is close to random.
We want a half hour staff meeting.
If you have 0 staff, all 120 slots are free to be scheduled.
If you have 1 staff, 30 of those 120 slots will be blacked out, leaving 90 slots left for scheduling.
This is where it gets tricky. The next staff member may have a blacked out slot within the 90 that are free, or they may have a blacked out slot in a slot that was already out of the picture. The chance of any individual slot in the schedule being blacked out by a student is (AVG_Blacked_Out_Slots/Total_Slots_on_Schedule) = (30/120).
So, when adding the third student worker, the average free slots left is based on the previous slots remaining (90) and the chance any of those are blocked out by their non-negotiable schedule. That would be Slots_Remaining = [ 1 – (AVG_Blacked_Out_Slots/Total_Slots_on_Schedule)] * Slots_Remaining_Before = [1 – (30/120)] * 90 = 67.5 slots.
From then on each additional student follows the same pattern with the input of the previous slots remaining.
Here is the solution graphically: