I want a timetabling program that allows me to allocate about 30 people to their workstations. The ones I found through simple googling had WAY too many features and were cumbersome to use. I want a simple program, where I specify certain rules for both workers, and workstations, and the program outputs an excel-file of the optimized timetable. The program can run on Excel, or be a standalone program, as long as it outputs and excel file or something equally familiar. Something akin to the Primetimetable -program used for scheduling school classes - but less features, and the user interface doesn’t have to be so friendly.
Timetabling program rules:
Workstation: for each workstation, specify who can work there, and who works there preferentially. (i.e. for Workstation 1: person A, person R, person Q - where now the Workstation1 is preferentially worked by A, and if he’s not available then R, and only then Q). Also, some workstations can be closed (if no worker is available) but some must always remain open. There should be a list of workstations that are closed preferentially (e.g. stations that can be closed: 1, 3, 4, 7, 8 - where now station 1 is the first one to close if required)
Worker: for each worker, specify the workstations where he can work. (e.g. Person A: can work stations 1, 4, 6, and 7)
And then a “Go!” -button, that establishes the “default state”, where all workstations are occupied by the “first choice -worker”, and the workstations that must always remain occupied, are occupied. The output should be a calendar, where the first cell of each row is the worker’s name, and the following cells specify his working station for the next month.
Simple so far, I should hope. Now, there should be an option to tick off days when a person cannot work - e.g. when he is on holiday. IF he occupies a workstation that cannot be closed, another person is chosen to replace the one on holiday. The replacement person must be picked from a workstation that can be closed. If there are several possibilities, use the workstation’s “preferred people” to choose the worker. Similarly, I want to be able to close workstations, and the program should then relocate the person to another workstation where he can work. The key here is to keep moving people around to a minimum - it’s much better to close a station, than to relocate 10 people to optimize the preferences to each workstation. That I can do manually if required.
This would get me well started. But to really make a difference, I should be able to group several workstations together and specify a rule for them, of the form “Between workstations 1, 2, 5, 6, 8, and 9 there must always be 1-2 of the people A, B, F, H, T, or Y working there” For these “grouping rules” each workstation will appear only once, but a person can appear in several groups.
So, specify workstations, specify workers, click Go! to get the "default". Then tick off days when workstations are closed or people are on holiday, click "Go!" again to reschedule everything with minimal changes from the “default state”, to minimize moving people around. The result doesn’t have to be 100 % optimal, just close to it. Final adjustments will be made manually anyway.
Could you program this to me? At what cost? Or if something like this already exists, please direct me to it, thank you!