Goal:
My goal is to come up with a Resource-Constrained Project Scheduling (RCPS) model where the resource capacity constraints are aggregated and verified on time buckets, which can be of varying size. This allows the use of more detailed planning in the near future and more aggregated planning further away.
To be more specific, instead of enforcing that at all times, the resource requirement is not more than the resource availability, I would like to only look at the total resource requirement in a bucket and compare that to the total resource availability in that bucket. This introduces questions such as: what if an operation overlaps multiple buckets?
As an example, assume that we have two consecutive buckets [3,6] and [6,9]. Suppose that an activity is scheduled on [5,8], resource A is required for the entire activity lead time and is available at any time (yielding 3 units of resource availability per bucket). Would we then assign 1 unit of resource requirement (e.g. hour) to the first bucket and 2 units to the second bucket?
Literature example:
As part of literature research for this problem, I came across this publication from Rom et al. 2002. It is about MRP in a job shop environment and uses RCPS models to do so.
The model is a continuous-time model, as it allows lead times of activities to be non-integral. Interestingly, it uses time-buckets for checking resource capacity violations. The procedure is as follows:
- The time-horizon is divided into time milestones $T_i, i = 1, 2, \ldots, N$.
- Binary variable $y^j_i$ equals 1 IFF activity $j$ completes in bucket $i: [T_i, T_{i+1}]$.
- Parameter $a_{jk}$ is the amount of resource $k$ needed by activity $j$.
- Parameter $R_{i,k}$ is the availability of resource $k$ (resources that are similar are pooled) in bucket $i$.
The resource constraints are then given by $$\sum_{j=1}^{N} a_{j k} y_{i}^{j} \leqslant R_{i k} \quad \forall k, i$$
To me, this seems a bit odd because this equation says that for all activities that end in bucket $i$, we look at the total resource amount required by those activities (not necessarily in that bucket) and restrict this quantity to be less than the resource availability in a bucket. The main issue is that whenever an activity starts in e.g. bucket $i-1$ but ends in bucket $i$, the resource consumption seems only to be allocated to bucket $i$. Continuing the example mentioned above, this means that all three units of resource requirement are assigned to the second bucket, meaning that the resource is not available anymore in that bucket as its availability was 3 units.
Question:
I wonder whether my observation is correct and if anyone knows some good approaches to using time buckets in an RCPS setting. Any publications from literature would be highly appreciated.