workload balancing/distribution - who gets the next work item?

• Jul 14th 2011, 07:32 AM
zhitz18
workload balancing/distribution - who gets the next work item?
Hi everyone!

I need guidance,or the correct sub-realm of stats/probability, or some terms I could enter into google to fuel some research on the following problem:

There is a pool of 'x' workers. Each worker in this pool could receive the next work-item, but only one of them can receive the work item. We know the following information about each worker in the pool: how many work-items they have received this month and their capacity. The work-items they receive this month is represented by an integer, non-negative (i.e. Worker 'Q' has 11 work-items so far this month). The capacity is a percentage that represents how much work they should get relative to the other workers in the pool. So if I'm working at 70%, then out of 10 work-items that were handed my way, I would only get 7.

The problem: Given the aforementioned data about a pool of workers, what algorithm/formula could one use to see who, for a given pool, would be the best worker to get the next work-item.

Example table:

Worker Work Items Capacity
A 8 70%
B 5 80%
C 11 90%

If this is our pool, who would get the next work item?

What have I done to try and solve this?
I was screwing around with trying to find the amount of work items a worker would have if they were at 100%. So, for worker A, if they were at 100%, I did 70%x = 8 | x = 8/.7, where X becomes the number of apps they would have if at 100%. Which in this case is 11.4. I did that for all workers, and was going to take the difference between what they have currently (for worker A it would be 8) and what they would have if they were at 100%. And whoever had the greatest difference would have the most bandwidth and would take on the next work-item. But I realized the worker with the lowest capacity would always seem to have the greatest difference.

I'm not exactly sure where this problem falls under or what math one would use to solve it. I'm writing an algorithm (I'm a software developer) that is supposed to pick the best worker, and by best, who would have the most bandwidth to take on and handle the work-item. I'm not exactly sure if I have enough information to make a proper decision on what worker would get the next work-item.

Any help will be greatly appreciated, or links to articles that would help solve the problem. I apologize if this is not a stats/prob problem!

Thanks!!