1. 摘要
本文考虑在许多项目的规划中出现的一个重大问题。项目公司通常使用外包供应商(outsourced providers),这些供应商要求在实现任务期限之前必须签订容量保留合同。对于一个给定部分特征分布信息的公司,我们建立了这些决策模型,假设任务持续时间服从最坏情况分布。一旦实现了任务工期,项目公司就会做出快速跟踪( fast tracking)和外包赶工(outsourced crashing)的决策,以最小化总的容量预留、快速跟踪、赶工和完工时间惩罚成本。我们使用基于目标的措施,尽量减少一个表现不佳的风险指数。我们考虑了任务性能的相关性,以及崩溃和最大完工时间(makespan)惩罚的分段线性代价。对于中小型项目,离散非线性模型的最优解是可能的。我们将模型的性能与鲁棒优化文献中的最佳基准进行了比较,结果表明,该模型对分布信息具有更低的风险和更强的鲁棒性。因此,我们的工作能够更有效地将项目中的风险降至最低,并提供有关如何做出更稳健的容量预留决策( capacity reservation decisions)的见解。
2. 模型
[
N
]
=
{
1
,
2
,
⋯
,
N
}
[N]=\{1,2,\cdots,N\}
[N]={1,2,⋯,N}, individual tasks with precedure relationships
n
i
→
n
j
n_i\rightarrow n_j
ni→nj:the task
n
i
n_i
ni must be completed before
n
j
n_j
nj starts
2.1 Two types of outsourced capacity
(1) general capacity: which can help to perform any task.
(
q
x
,
u
x
)
∈
R
2
×
O
(\boldsymbol{q}_x,\boldsymbol{u}_x)\in\mathbb{R}^{2\times O}
(qx,ux)∈R2×O where
O
O
O is the number of quantity-price pairs on the list,
q
x
j
q_{xj}
qxj units of the general resource are reserved, and the reservation cost
u
x
j
u_{xj}
uxj is paid.
x
∈
{
0
,
1
}
O
\boldsymbol{x}\in\{0,1\}^O
x∈{0,1}O denote the capacity decision for the general resource, where
x
j
=
1
x_j = 1
xj=1 if the
j
j
j-th package is reserved, and
x
j
=
0
x_j = 0
xj=0 otherwise. Then the total cost of general capacity reserved is
u
x
T
x
\boldsymbol{u}_x^T\boldsymbol{x}
uxTx.
(2) customized resource: which is applicable to a specific task. Let
y
∈
{
0
,
1
}
N
\boldsymbol{y}\in\{0,1\}^N
y∈{0,1}N and
u
y
∈
R
N
\boldsymbol{u}_y\in\mathbb{R}^N
uy∈RN represent the reservation decision and reservation cost, respectively, for the customized capacity. Hence, the total cost of customized capacity reserved is
u
y
T
y
\boldsymbol{u}_y^T\boldsymbol{y}
uyTy.
2.2 Sequence of Events
(1) decide how much of various types of capacity to reserve
(2) uncertain task durations are assumed to be realized
(3) The project manager responds by fast tracking and/or crashing the project, in order to minimize the cost of fast tracking, crashing, and makespan penalty.
2.3 Notations
( x , y ) ∈ Λ (\boldsymbol{x},\boldsymbol{y})\in\Lambda (x,y)∈Λ, represent the feasible set for the capacity reservation decision ( x , y ) (\boldsymbol{x},\boldsymbol{y}) (x,y). Assume all constraints in ( x , y ) ∈ Λ (\boldsymbol{x},\boldsymbol{y})\in\Lambda (x,y)∈Λ are linear, except for x ∈ { 0 , 1 } O \boldsymbol{x}\in\{0,1\}^O x∈{0,1}O and y ∈ { 0 , 1 } N \boldsymbol{y}\in\{0,1\}^N y∈{0,1}N.
2.4 Models
第二阶段的决策:
min
g
F
T
w
F
+
g
C
T
w
C
+
d
T
v
s.t.
(
w
F
,
w
C
,
v
,
c
)
∈
S
(
x
,
y
,
z
)
\begin{aligned} \min &\quad \boldsymbol{g}_F^T\boldsymbol{w}_F + \boldsymbol{g}_C^T\boldsymbol{w}_C + \boldsymbol{d}^T\boldsymbol{v} \\ \text{s.t.} &\quad (\boldsymbol{w}_F,\boldsymbol{w}_C,\boldsymbol{v},\boldsymbol{c})\in\mathcal{S}(\boldsymbol{x},\boldsymbol{y},\boldsymbol{z}) \end{aligned}
mins.t.gFTwF+gCTwC+dTv(wF,wC,v,c)∈S(x,y,z)
其中
w
n
1
n
2
F
:
基
于
快
速
跟
踪
的
任
务
n
1
和
n
2
的
并
行
处
理
(concurrent processing)
,
n
1
→
n
2
w
n
2
F
=
[
w
n
1
n
2
F
]
n
1
→
n
2
,
w
F
=
{
w
1
F
,
⋯
,
w
N
F
}
g
n
1
n
2
F
:
任
务
n
2
与
任
务
n
1
快
速
跟
踪
的
线
性
返
工
成
本
(linear rework cost)
,
n
1
→
n
2
g
n
2
F
=
[
g
n
1
n
2
F
]
n
1
→
n
2
,
g
F
=
{
g
1
F
,
⋯
,
g
N
F
}
Q
n
:
任
务
n
的
崩
溃
成
本
的
分
段
线
性
映
射
中
的
线
性
段
数
w
j
n
C
:
任
务
n
的
第
j
个
线
性
崩
溃
代
价
区
间
(linear cost interval of crashing)
的
使
用
,
j
∈
[
Q
n
]
,
n
∈
[
N
]
w
n
C
=
(
w
1
n
C
,
⋯
,
w
Q
n
n
C
)
,
w
C
=
{
w
1
C
,
⋯
,
w
N
C
}
g
j
n
C
:
第
j
个
线
性
成
本
区
间
内
崩
溃
任
务
n
的
线
性
成
本
,
g
1
n
C
<
⋯
<
g
Q
n
n
C
g
n
C
=
(
g
1
n
C
,
⋯
,
g
Q
n
n
C
)
,
g
C
=
{
g
1
C
,
⋯
,
g
N
C
}
d
j
:
第
j
个
线
性
成
本
区
间
内
项
目
完
工
时
间
惩
罚
的
线
性
成
本
,
d
1
<
⋯
<
d
Q
c
n
:
任
务
n
的
完
成
时
间
\begin{aligned} & w_{n_1n_2}^F: 基于快速跟踪的任务 n_1 和 n_2 的并行处理\text{(concurrent processing)}, n_1\rightarrow n_2 \\ & \boldsymbol{w}_{n_2}^F = \left[w_{n_1n_2}^F\right]_{n_1\rightarrow n_2}, \boldsymbol{w}_F=\{\boldsymbol{w}_1^F, \cdots, \boldsymbol{w}_N^F\} \\ & g_{n_1n_2}^F: 任务 n2 与任务 n1 快速跟踪的线性返工成本\text{(linear rework cost)}, n_1\rightarrow n_2 \\ & \boldsymbol{g}_{n_2}^F = \left[g_{n_1n_2}^F\right]_{n_1\rightarrow n_2}, \boldsymbol{g}_F=\{\boldsymbol{g}_1^F, \cdots, \boldsymbol{g}_N^F\} \\ & Q_n : 任务 n 的崩溃成本的分段线性映射中的线性段数 \\ & w_{jn}^C: 任务 n 的第 j 个线性崩溃代价区间\text{(linear cost interval of crashing)}的使用, j\in[Q_n], n\in[N] \\ & \boldsymbol{w}_{n}^C = \left(w_{1n}^C, \cdots, w_{Q_nn}^C\right), \boldsymbol{w}_C=\{\boldsymbol{w}_1^C, \cdots, \boldsymbol{w}_N^C\} \\ & g_{jn}^C: 第 j 个线性成本区间内崩溃任务 n 的线性成本, g_{1n}^C < \cdots < g_{Q_nn}^C \\ & \boldsymbol{g}_{n}^C = \left(g_{1n}^C, \cdots, g_{Q_nn}^C\right), \boldsymbol{g}_C=\{\boldsymbol{g}_1^C, \cdots, \boldsymbol{g}_N^C\} \\ & d_j : 第 j 个线性成本区间内项目完工时间惩罚的线性成本, d_1 < \cdots < d_Q \\ & c_n: 任务 n 的完成时间 \end{aligned}
wn1n2F:基于快速跟踪的任务n1和n2的并行处理(concurrent processing),n1→n2wn2F=[wn1n2F]n1→n2,wF={w1F,⋯,wNF}gn1n2F:任务n2与任务n1快速跟踪的线性返工成本(linear rework cost),n1→n2gn2F=[gn1n2F]n1→n2,gF={g1F,⋯,gNF}Qn:任务n的崩溃成本的分段线性映射中的线性段数wjnC:任务n的第j个线性崩溃代价区间(linear cost interval of crashing)的使用,j∈[Qn],n∈[N]wnC=(w1nC,⋯,wQnnC),wC={w1C,⋯,wNC}gjnC:第j个线性成本区间内崩溃任务n的线性成本,g1nC<⋯<gQnnCgnC=(g1nC,⋯,gQnnC),gC={g1C,⋯,gNC}dj:第j个线性成本区间内项目完工时间惩罚的线性成本,d1<⋯<dQcn:任务n的完成时间
可行域
S
(
x
,
y
,
z
)
\mathcal{S}(\boldsymbol{x},\boldsymbol{y},\boldsymbol{z})
S(x,y,z) 由下列约束定义:
c
n
2
−
c
n
1
+
w
n
1
n
2
F
+
∑
j
=
1
Q
n
2
w
j
n
2
C
≥
t
n
2
+
z
n
2
,
n
1
,
n
2
∈
[
N
]
,
n
1
→
n
2
∑
j
=
1
Q
n
v
j
−
c
n
≥
0
,
n
∈
[
N
]
\begin{aligned} &\; c_{n_2} - c_{n_1} + w_{n_1n_2}^F + \mathop{\sum}\limits_{j=1}^{Q_{n_2}} w_{jn_2}^C \ge t_{n_2} + z_{n_2}, & n_1,n_2\in[N], n_1\rightarrow n_2 \\ &\; \mathop{\sum}\limits_{j=1}^{Q_n} v_j - c_n \ge 0, & n\in[N] \end{aligned}
cn2−cn1+wn1n2F+j=1∑Qn2wjn2C≥tn2+zn2,j=1∑Qnvj−cn≥0,n1,n2∈[N],n1→n2n∈[N]