I have the following allocation problem and I would like to know if there are some known efficient algorithms that I can apply here to solve the problem.
The problem:
- There are N resources which have capacity C.
- There are 4 level of priority: L,N,H,VH.
- Each object has a priority level that determines the order of allocation.
- Each level of priority has a different weight on the capacity, for example: Normal priority of resource x has a weight of 2, meaning that the allocation of object o to resource x at normal priority will decrease the resource x's capacity by 2.
- Each object has a matching grade to each resource.
- Each object has a requirement to achive a minimum overall matching grade by being allocated to resources so that the sum of their matching grades will surpass the minimun requirement.
- All objects at the same priority level are equal, which means there should be no starvation at the same priority level.
The allocation should be optimal, meaning:
- objects should get the highest grade they can get.
- resources should tend to max usage.
- When there is not enough capacity for the whole priority level's objects to fullfill their requirements, The algorithm should satisfy as many objects as possible while the rest will have the highest grade they can get.
I have a trivial solution that runs while there is no load, meaning that all of the objects can satisfy their requirement fully. When the system is under load, I don't have an efficient optimal solution for the problem. Would be happy for some advice or idea.
Thanks!