Problem definition¶
The sections below detai lthe “complete” problem. Other problem variants are the “basic” and “minimized hold time” variants, which are discussed afterwards.
Given¶
Data on buffers e.g.
| indices | names | volumes | use start times | use_durations |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| 0 | Buffer #1 | 5825.23 | 62.86 | 39.16 |
| 1 | Buffer #2 | 10214.75 | 79.63 | 25.5 |
| 2 | Buffer #3 | 13995.95 | 17.6 | 61.7 |
| 3 | Buffer #4 | 14619.52 | 74.28 | 44.19 |
| 4 | Buffer #5 | 4504.94 | 29.73 | 36.0 |
| 5 | Buffer #6 | 16361.95 | 5.5 | 38.78 |
| 6 | Buffer #7 | 3464.09 | 38.25 | 57.93 |
| 7 | Buffer #8 | 13387.42 | 11.35 | 36.55 |
| 8 | Buffer #9 | 1064.93 | 61.21 | 45.84 |
| 9 | Buffer #10 | 1654.58 | 34.88 | 22.03 |
| 10 | Buffer #11 | 23631.53 | 26.26 | 37.99 |
| 11 | Buffer #12 | 11546.57 | 94.15 | 56.41 |
Data on available vessels
| indices | names | volumes | costs |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 0 | 1000 L | 1000.0 | 63.10 |
| 1 | 2000 L | 2000.0 | 95.64 |
| 2 | 3000 L | 3000.0 | 121.98 |
| 3 | 4000 L | 4000.0 | 144.96 |
| 4 | 5000 L | 5000.0 | 165.72 |
| 5 | 6000 L | 6000.0 | 184.88 |
| 6 | 8000 L | 8000.0 | 219.71 |
| 7 | 10000 L | 10000.0 | 251.19 |
| 8 | 12000 L | 12000.0 | 280.23 |
| 9 | 16000 L | 16000.0 | 333.02 |
| 10 | 18000 L | 18000.0 | 357.41 |
| 11 | 20000 L | 20000.0 | 380.73 |
| 12 | 22000 L | 22000.0 | 403.14 |
| 13 | 25000 L | 25000.0 | 435.28 |
| 14 | 30000 L | 30000.0 | 485.59 |
And some additional parameters:
| parameter | symbol | value |
|---|---|---|
| process cycle time (h) | ![]() |
96.0 |
| prep pre duration (h) | ![]() |
12.0 |
| prep post duration (h) | ![]() |
1.5 |
| transfer duration (h) | ![]() |
2.0 |
| hold pre duration (h) | ![]() |
8.0 |
| hold post duration (h) | ![]() |
1.5 |
| minimum hold duration (h) | ![]() |
12.0 |
| maximum hold duration (h) | ![]() |
60.0 |
| vessel minimum fill ratio | ![]() |
0.3 |
| maximum prep utilization | ![]() |
0.8 |
| max slots | ![]() |
5 |
Support formulae:









Subject to¶
Each buffer must be prepared in a defined slot

Each slot may contain at most one vessel

Each vessel must be sufficiently large to prepare allocated buffers

Each vessel must be sufficiently small to prepare allcoated buffers

Each preapration vessel must have a utilization below the maximum utilization limit

The total duration in each hold vessel must be less than the cycle time

Buffer preparation procedures mustn’t clash with one another






Variant Problems¶
Basic¶
The “basic” variant omits the buffer preparation scheduling constraints and as such does not compute a workable schedule. It merely calculates the vessels required to maintain the specified utilization ratio at minimum cost.
Minimized Hold Time¶
The “minimized hold time” variant involves two rounds of optimization. Firstly, the “complete” problem is solved, resulting in a minimum cost.
Next, the optimum (minimized) cost is set as a constraint:


Then the problem is re-run with the following objective to be minimized:

Nomenclature¶
| Symbol | Description |
|---|---|
![]() |
buffers and prepared in same vessel (binary) |
![]() |
(relative) cost of vessel ![]() |
![]() |
buffer maximum use duration ratio |
![]() |
vessel minimum fill ratio |
![]() |
buffer minimum use duration ratio |
![]() |
preparation slot maximum utilisation ratio |
![]() |
secondary buffer index ![]() |
![]() |
vessel size index ![]() |
![]() |
buffer index ![]() |
![]() |
slot index ![]() |
![]() |
the buffer hold operation crosses the single-cycle boundaries
(binary) |
![]() |
occurs before
in the single-cycle window
(binary) |
![]() |
occurs after
in the single-cycle window
(binary) |
![]() |
lower bound of feasible scheduling region for all buffers
with respect to buffer ![]() |
![]() |
preparation reference time for buffer ![]() |
![]() |
preparation reference time for buffer ![]() |
![]() |
upper bound of feasible scheduling region for all buffers
with respect to buffer ![]() |
![]() |
buffer time of first use, normalised |
![]() |
buffer time of first use, un-normalised |
![]() |
maximum feasible buffer use duration |
![]() |
maximum allowable buffer hold duration |
![]() |
minimum allowable buffer hold duration |
![]() |
duration of post-use operations in buffer hold procedures |
![]() |
duration of operations prior to receiving buffer in buffer hold procedures |
![]() |
total duration of buffer preparation procedures |
![]() |
duration of operations post transferring out buffer in buffer preparation procedures |
![]() |
duration of operations prior to transferring out buffer in buffer preparation procedures |
![]() |
duration of use of buffer ![]() |
![]() |
duration of transfers from buffer preparation vessel to buffer hold vessel |
![]() |
feasible scheduling window for buffer with respect to buffer
does not cross cycle boundary (binary) |
![]() |
feasible scheduling window for buffer with respect to buffer
occurs before buffer preparation procedure (binary) |
![]() |
distinct buffers and are both made in slot
(binary) |
![]() |
buffer is prepared in slot (binary) |
![]() |
a vessel of size is in slot (binary) |
![]() |
buffer hold duration |
![]() |
number of vessel sizes |
![]() |
set of vessel sizes |
![]() |
number of buffers |
![]() |
set of buffers |
![]() |
number of slots |
![]() |
set of slots |
![]() |
process cycle time (start–to–start duration) |
![]() |
volume of buffer to be prepared |
![]() |
maximum working volume of vessel size ![]() |
![]() |
largest maximum working volume of available vessel sizes |
![]() |
secondary objective; sum of buffer hold times, given minimal total vessel cost |
![]() |
primary objective; total vessel cost |
![]() |
minimal total vessel cost |






























prepared in same vessel (binary)








occurs before
in the single-cycle window
(binary)
occurs after
with respect to buffer 

















