I want to ensure that incoming work is equally distributed as much as possible across a group of 100 people. I am not concerned about the complexity of each piece of work. I just want to ensure that the work is distributed equally on a numerical basis. The constraints/conditions are as follows:
- The work week begins on a Monday and ends on a Friday.
- Work is assigned immediately when it comes in.
- Work is assigned only to those who are available that day.
- A person's availability can vary from day to day.
- We cannot predict how much work will come in each day. But the amount of work that comes in each day is independent and identically distributed.
- At the beginning of each week, everybody's availability for each day of that week is known.
We are not too concerned about the distribution of work every day. What's of greater concern is the distribution of work at the end of each work week. At the end of each work week (i.e Friday), I want to ensure that all the incoming work has been distributed as equally as possible over the entire group of 100, taking availability over that week into account.
For example, let's assume there are three workers: two are available all week, and the third is not available at all. The work distribution should be proportional to worker availability. Thus (15, 15, 0) is the goal, not (10, 10, 10).
Is there a mathematical formula/concept that deals with such an issue? I've been trying to find an answer but I have not come across anything that addresses this issue.
Background: I do not have any advanced mathematical training/education. So, I would appreciate any help on this matter. Apologies if my tags are inaccurate as I'm really unsure what branch of mathematics deals with such an issue.
Hm...I think there is a simple solution for this. Think of keeping some utility score. If you are just concerned about weekly work allocation, consider this.
2.When work comes in, allocate work to any available worker with the lowest utility score. Recompute utility score, for that worker with the following formula:
utility score[new] = utility score[previous] + 1
Continue with Step 2 all the way to friday
Start from Step 1 again.
Does this work for you?