Assume I have an infinite number of staff/supply. I have a table of how much time in hours needs to be spent on certain tasks:
Task | Demand |
---|---|
A | 0.75 |
B | 0.8 |
C | 0.65 |
D | 0.7 |
E | 0.6 |
F | 0.65 |
And the tasks can either be assigned to staff separately - i.e. 1 person does A (thus contributing 1 towards the demand for task A), or B, C, D, E, F - or they can be assigned in certain combinations, specified below:
Combination |
---|
A |
B |
C |
D |
E |
F |
A; B; C |
A; B |
B; C |
A; C |
D; E |
D; F |
If I assign a task like (A; B; C), there is no rule as to how much time must be spent on each task, just as long as the total time spent is 1. For example, in assigning task (A; B; C) to somebody, I may tell them to do 0.75hrs of A, 0.15hrs of B, and 0.1hrs of C, or I may tell them to do 0.5hrs of A, 0.3hrs of B, and 0.2hrs of C.
If it was the case that the demand for A+B+C <=1, D+E <= 1 and D+F <=1 then this would be a simple linear optimisation problem, solved here https://stackoverflow.com/questions/72982423/task-assignment-to-least-possible-people/72983289?noredirect=1#comment128972545_72983289.
But it is not. And I cannot simply ignore the combinations for which this is not true and proceed with linear optimisation, because then only the one-task-to-one-person assignments (e.g. 1 person on A, 1 on B, etc.) are permissible. Hence I would end up assigning 6 people to meet the demand, whereas I ought to have given, for example, (A; B; C) to 2 people, A to 1 person, (D; E) to 1 person and (D; F) to 1 person, making up 5 < 6 people in total.
I'm very confused as to how to optimise this. I have tried to find a way around it via for loops but things get very messy and I still don't get any closer to a problem.