The Resource Allocation Problem optimizes using scarce resources for valued activities. The resources are limited by some maximum quantity available, while the activities have some numeric value assigned to each of them. A matrix-like parameter shows all of the resources needed to conduct one unit of that activity (:pyResourceNeeds
). This type of problem is seen often, with a few examples being production management and budget allocation.
:py
Activities
- Set of activities that are available to produce- :py
a in Activities
or a ∈ A
- :py
:py
Resources
- Set of resources that are used to conduct activities- :py
r in Resources
or r ∈ R
- :py
-
:py
Values
- measure of value from conducting one unit of :pyActivity a
- :py
Values[a] for a in Activities
or$V_a \enspace \forall a \in A$
- :py
-
:py
ResourceNeeds
- amount of :pyResource r
needed for :pyActivity a
- :py
ResourceNeeds[r, a] for r in Resources for a in Activities
or$N_{r,a} \enspace \forall r \in R, a \in A$
Note
To conduct one unit of :py
Activity a
, you need all resources required. For example, to conduct one unit of :pyActivity a_1
, you need :pysum(ResourceNeeds[r, a_1] for r in Resources)
- :py
-
:py
MaxResource
- maximum amount of units available of :pyResource r
- :py
MaxResource[r] for r in Resources
or$M_r \enspace \forall r \in R$
- :py
-
:py
MaxActivity
- maximum amount of demand for :pyActivity a
- :py
MaxActivity[a] for a in Activities
or$M_a \enspace \forall a \in A$
- :py
-
:py
NumActivity
- number of units to conduct of :pyActivity a
- :py
NumActivity[a] for a in Activities
or$X_a \enspace \forall a \in A$
- :py
Maximize total value of activities being conducted.
Max∑a ∈ AVaXa
- An :py
Activity a
cannot be conducted more than its :pyMaxActivity
0 ≤ Xa ≤ Ma ∀a ∈ A
- To conduct 1 unit of an Activity, all :py
ResourceNeeds
are required. In other words, :pysum(ResourceNeeds[r,a] for r in Resources)
must happen per :pyActivity a
conducted. This is implied by the problem parameters given by the user and the next constraint. - The amount of resources used for a :py
Resource r
must not exceed :pyMaxResource[r]
∑a ∈ ANr, aXa ≤ Mr ∀r ∈ R
See the corresponding section in the api_reference
to learn more about how to use the API for this problem class.