whose semantics is that w
j,k
is the evacuation rate for
j between t
k
and t
k+1
, and which satisfies the
• For any j, k, w
j,k
≤vmax
j
;
• For any j, Σ
k
δ
k
.w
j,k
= P(j);
• For any arc e, any k: Σ
j
∈
J(e)
w
j,k
≤ CAP(e);
• For any j and any k such that t
k+1
≤ R
j
, w
j,k
= 0 ;
• For any j, k such that t
k
≥ (Δ
j
– λ): w
j,k
= 0}.
Lemma 1: Preemptive(
λ
) identifies a
preemptive schedule which is consistent with safety
margin
λ
, in case such a schedule exists.
Proof: If a preemptive schedule exists, consistent
with safety margin λ, release dates R
j
, deadlines Δ
j
, j
∈ J, and capacities CAP(e), e ∈ A, then it can be
chosen in such a way that for any job j and any k,
related evacuation rate of j is constant between t
k
and t
k+1
. Then we get above linear program.
We solve P-MSM-RCPSP by applying the
following binary process Optimal-P-MSM-RCPSP,
which computes optimal safety margin λ-Val by
making λ iteratively evolve between a non feasible
value λ
1
and a feasible one λ
0
:
Optimal-P-MSM-RCPSP(Threshold):
λ
0
<- 0 ; λ
1
<- Inf
j
[Δ(j) – (R
j
+ P(j)/vmax
j
)]; w-Sol
<- Nil ;
λ−
Val <- -
∞
; Solve Preemptive(λ
1
);
If Success(Solve) then
λ−
Val <- λ
1
; w-Sol <- related
vector w
Else
Solve Preemptive(λ
0
);
If Success(Solve) then
λ−
Val <- λ
0
; w-Sol <- related vector w ;
Counter <- 0;
While Counter ≤ Threshold do
λ <- (λ
1
+λ
0
)/2 ; Solve Preemptive(λ);
If Success(Solve) then λ
0
<- λ ;
λ−
Val <-
λ
0
; w-Sol <- related w Else λ
1
<- λ ;
Optimal-P-MSM-RCPSP <- (
λ−
Val, w-
Sol);
Else Optimal-P-MSM-RCPSP <- Fail;
Theorem 1: Optimal-P-MSM-RCPSP solves the P-
MSM-RCPSP Problem in Polynomial Time.
Proof: Optimality comes in straightforward way
from the very meaning of linear program
Preemptive(λ). As for complexity, we set Threshold
= Log
2
(Sup
j
Maximal binary encoding size of Δ
j
and R
j
+ 1) and derive Time-Polynomiality from
time polynomiality of LP.€
Sterilization: We may try to turn w into a non
preemptive schedule through 2 approaches:
• Sterilization1: Smoothing w while keeping safety
margin λ as in Figure 4 below:
Evacuation
Rate (w
j
)
Time
U
1
U
3
U
4
U
5
U
6
U
9
v
j
kmin(j) = 2
kmax(j) = 7
U
2
U
8
T
j
= U
2
T*
j
= U
8
U
7
w
j
,
3
Evacuation
rate
Time
T
j
= U
2
T*
j
= U
8
v
j
Preemptive solution for job j
Non Preemptive solution for
job j after Sterilization 1
Figure 4: Sterilization1 Scheme.
• Sterilization2: Deriving from w a topological
vector Π, and solving MSM-RCPSP(Π).
5 A FLOW BASED HEURISTIC
This section is devoted to the description of a
network flow based heuristic, which implements
insertion mechanisms as in (Quilliot, 2012), and
computes an efficient feasible MSM-RCPSP
solution. We consider resources e as flow units, that
jobs j share or transmit: If we represent every job as
a rectangle whose length is the duration T*
j
– T
j
and
height is the evacuation rate v
j
, then, if j
1
precedes
j
2
, and if not jobs j is located between j
1
and j
2
on the
e-diagram, then we see (fig. 2 and 6) that part of
evacuation rate v
j1
related to resource e is
transmitted to j
2
. In order to formalize this, we build
an auxiliary network G in which the vertex set is J ∪
{s, p}, where s and p are two fictitious jobs source
and sink, whose arcs are all arcs (i, j), i, j ∈ J,
augmented with all arcs (s, j) and all arcs (j, p). Then
we consider that the backbone of a schedule is a
flow vector w = (w
e
j1,j2
, j
1
, j
2
∈ J(e) ∪ {s, p}) ≥ 0,
which represents, for all resources e, the way jobs
share resource e. Clearly, this vector w must satisfy
standard flow conservation laws:
• For any e: Σ
j
∈
J
w
e
s,j
= Σ
j
∈
J
w
e
j,p
= w
e
p,s
= CAP(e);
• For any resource e of E and any job j
0
∈ J(e), Σ
j
∈
J
∪
{p}
w
e
j0,j
= Σ
j
∈
J
∪
{s}
w
e
j,j0
= v
j0
.
Besides, if we introduce starting times T
j
and
ending times T*
j
as in II, then, for any j
1
, j
2
, the
following implication is true: Σ
e
w
e
j1,j2
≠ 0 -> T
j2
≥
T*
j1
. This logical constraint means that if job j
1
provides j
2
with some part of resource e, then j
1
should be achieved before j
2
starts. Clearly, we must
keep on with the other standard constraints:
• For any j: R
j
≤ T
j
≤ T*
j
≤ Δ
j
; v
j
≤ vmax
j
; T*
j
= T
j
+ P(j)/v
j
; T
s
= T*
s
= 0.
• Maximize Min
j
(Δ
j
– T*
j
).