问题提出
- 已知时段 t t t 某产品的需求量为 d t ( t = 1 , 2 , . . . , T ) d_t(t=1,2,...,T) dt(t=1,2,...,T),任意时刻或生产该产品,需付出生产准备费 c 0 c_0 c0 ,且生产每单位产品的生产成本为 k k k,若满足本时段需求后有剩余,每时段每单位产品需付出存贮费 h 0 h_0 h0。
- 设每时段最大生产能力为 X m X_m Xm,最大存贮量为 I m I_m Im,且第1时段初有库存量 i 1 i_1 i1。
- 试制定产品的生产计划,即每时段的产量,使 T T T 个时段的总费用最小。
- 假设:
T = 3 , d 1 = 2 , d 2 = 1 , d 3 = 2 ( 单位 ) , c 0 = 3 ( 千元 ) , k = 2 ( 千元 / 单位 ) , h 0 = 1 ( 千元 / 单位 ∗ 时段 ) , X m = 4 ( 单位 ) , I m = 3 ( 单位 ) , i 1 = 1 ( 单位 ) , T=3, d_1=2, d_2=1, d_3=2(单位), \\ c_0=3(千元), k=2(千元/单位), h_0=1(千元/单位*时段), \\ X_m=4(单位), I_m=3(单位), i_1=1(单位), T=3,d1=2,d2=1,d3=2(单位),c0=3(千元),k=2(千元/单位),h0=1(千元/单位∗时段),Xm=4(单位),Im=3(单位),i1=1(单位),
问题分析与求解
- 记时段
t
t
t 的产量为
x
t
x_t
xt :
当 x t > 0 x_t>0 xt>0 时,生产费用为 c ( x t ) = c 0 + k x t = 3 + 2 x t c(x_t)=c_0+kx_{t}=3+2x_{t} c(xt)=c0+kxt=3+2xt;
当 x t = 0 x_t=0 xt=0 时,生产费用为 c ( 0 ) = 0 c(0)=0 c(0)=0 - 记时段
t
t
t 的贮存量为
i
t
i_t
it:
满足时段 t t t 的需求量 d t d_t dt 后,时段 t + 1 t+1 t+1 初(即时段 t t t 末)的存贮量为 i t + 1 = i t + x t − d t i_{t+1}=i_{t}+x_{t}-d_{t} it+1=it+xt−dt - 于是时段
t
t
t 的存贮费为:
h ( i t ) = h 0 ( i t + x t − d t ) = i t + x t − d t ,且 x t ≤ X m = 4 , i t ≤ I m = 3. h(i_t)=h_0(i_t+x_t-d_t)=i_t+x_t-d_t,且x_t \le X_m=4,i_t \le I_m=3. h(it)=h0(it+xt−dt)=it+xt−dt,且xt≤Xm=4,it≤Im=3. - 为了简化这个多阶段生产计划问题,我们将它从后向前地分解为一个个单时段问题。
- 首先看最后一个时段(时段3),对于时段3初的存贮量
i
3
i_3
i3,记时段3的最小费用为
f
3
(
i
3
)
f_3(i_3)
f3(i3),产量为
x
3
(
i
3
)
x_3(i_3)
x3(i3)。为了使3个时段的总费用最小,时段3末的存贮量显然应为0,且时段3的产量只需满足需求
d
3
=
2
d_3=2
d3=2 即可,所以只需考虑
i
3
=
0
,
1
,
2
i_3=0,1,2
i3=0,1,2 的情况,容易计算出:
f 3 ( 0 ) = c ( 2 ) = 3 + 2 × 2 = 7 , x 3 ( 0 ) = 2 ; f 3 ( 1 ) = c ( 1 ) = 5 , x 3 ( 1 ) = 1 ; f 3 ( 2 ) = c ( 0 ) = 0 , x 3 ( 2 ) = 0. f_3(0)=c(2)=3+2\times2=7,x_3(0)=2;\\ f_3(1)=c(1)=5,x_3(1)=1;\\ f_3(2)=c(0)=0,x_3(2)=0. f3(0)=c(2)=3+2×2=7,x3(0)=2;f3(1)=c(1)=5,x3(1)=1;f3(2)=c(0)=0,x3(2)=0. - 然后看倒数第2个时段(时段2),对于时段2初的存贮量
i
2
i_2
i2,产量为
x
2
x_2
x2,因为
d
2
=
1
d_2=1
d2=1,时段2末的存贮量为
i
2
+
x
2
−
1
i_2+x_2-1
i2+x2−1,于是时段2与时段3的最小费用之和记为
f
2
(
i
2
)
f_2(i_2)
f2(i2),注意到时段3的最小费用为
f
3
(
i
3
)
=
f
3
(
i
2
+
x
2
−
1
)
f_3(i_3)=f_3(i_2+x_2-1)
f3(i3)=f3(i2+x2−1),所以:
f 2 ( i 2 ) = min x 2 { c ( x 2 ) + h ( i 2 ) + f 3 ( i 2 + x 2 − 1 ) } f_2(i_2)=\min_{x_2}{\left\{c(x_2)+h(i_2)+f_3(i_2+x_2-1)\right\}} f2(i2)=x2min{c(x2)+h(i2)+f3(i2+x2−1)}
- 故最优生产计划是:3个时段的产量依次是 x 1 = 2 , x 2 = 0 , x 3 = 2 x_1=2,x_2=0,x_3=2 x1=2,x2=0,x3=2。
最短路径问题
确定需求下多阶段生产计划的一般模型
1.根据时段
T
T
T 末存贮量的要求,确定
f
T
+
1
(
i
T
+
1
)
f_{T+1}(i_{T+1})
fT+1(iT+1)
2.时段从后向前地计算最小费用,按照以下公式递推:
f
t
(
i
t
)
=
min
x
t
{
c
(
x
t
)
+
h
(
i
t
)
+
f
t
+
1
(
i
t
+
1
)
}
,
i
t
+
1
=
i
t
+
x
t
−
d
t
i
t
≤
I
m
,
x
t
≤
X
m
,
t
=
T
,
T
−
1
,
.
.
.
,
1.
f_t(i_t)=\min_{x_t}{\left\{c(x_t)+h(i_t)+f_{t+1}(i_{t+1})\right\}}, i_{t+1}=i_t+x_t-d_t\\ i_t\le I_m,x_t\le X_m, t=T,T-1,...,1.
ft(it)=xtmin{c(xt)+h(it)+ft+1(it+1)},it+1=it+xt−dtit≤Im,xt≤Xm,t=T,T−1,...,1.
得到从时段
t
t
t 到时段
T
T
T d 最小费用
f
t
(
i
t
)
f_t(i_t)
ft(it) 及相应的
x
t
(
i
t
)
x_t(i_t)
xt(it)
3.时段从前向后地确定最优生产计划
随机需求下的多阶段生产计划
- 如果每个时段的需求量是随机的,那么对于确定的生产量,各时段的存贮量也是随机的,于是存贮费乃至总费用都是随机的,优化问题的目标是总费用的期望值最小,这个随机优化问题可以用随机动态规划求解。
- 仍然考察 T = 3 T=3 T=3 个时段,设需求量 d t = 1 d_t=1 dt=1 的概率为 1 / 3 1/3 1/3, d t = 2 d_t=2 dt=2 的概率为 2 / 3 ( t = 1 , 2 , 3 ) 2/3 (t=1,2,3) 2/3(t=1,2,3)。
- 因为计划结束时(时段3末)存贮量是随机的(不一定为零),我们假定,这时剩余的存贮量能够以 1.5千元/单位 的价格出售。
- 将随机需求表示为
P
(
d
t
=
1
)
=
1
/
3
,
P
(
d
t
=
2
)
=
2
/
3
P(d_t=1)=1/3, P(d_t=2)=2/3
P(dt=1)=1/3,P(dt=2)=2/3,生产费用为
c
(
x
t
)
=
c
0
+
k
x
t
=
3
+
2
x
t
(
x
t
>
0
)
,
c
(
0
)
=
0
c(x_t)=c_0+kx_t=3+2x_t(x_t>0),c(0)=0
c(xt)=c0+kxt=3+2xt(xt>0),c(0)=0,存贮量的转移仍为
i
t
+
1
=
i
t
+
x
t
−
d
t
i_{t+1}=i_t+x_t-d_t
it+1=it+xt−dt,由随机需求得到存贮费的期望值:
E h ( i t ) = h 0 E ( i t + x t − d t ) = ( i t + x t − 1 ) P ( d t = 1 ) + ( i t + x t − 2 ) P ( d t = 2 ) = i t + x t − 5 / 3 Eh(i_t)=h_0E(i_t+x_t-d_t)\\ =(i_t+x_t-1)P(d_t=1)+(i_t+x_t-2)P(d_t=2)\\ =i_t+x_t-5/3 Eh(it)=h0E(it+xt−dt)=(it+xt−1)P(dt=1)+(it+xt−2)P(dt=2)=it+xt−5/3 - 当时段3初的存贮量为
i
3
i_3
i3 时,计划结束时出售剩余量得到的回报记作
s
(
i
3
)
s(i_3)
s(i3),回报的期望值为:
E s ( i 3 ) = 1.5 [ ( i 3 + x 3 − 1 ) / 3 + 2 ( i 3 + x 3 − 2 ) / 3 ] = 1.5 ( i 3 + x 3 ) − 2.5 Es(i_3)=1.5[(i_3+x_3-1)/3+2(i_3+x_3-2)/3]=1.5(i_3+x_3)-2.5 Es(i3)=1.5[(i3+x3−1)/3+2(i3+x3−2)/3]=1.5(i3+x3)−2.5
产量、存贮量的限制仍然为 x t ≤ X m = 4 , i t ≤ I m = 3 x_t\le X_m=4,i_t\le I_m=3 xt≤Xm=4,it≤Im=3. - 记时段3期望费用的最小值为
f
3
(
i
3
)
f_3(i_3)
f3(i3),产量为
x
3
(
i
3
)
x_3(i_3)
x3(i3),在满足随机需求的
d
3
d_3
d3 的前提下,容易算出:
- 计算时段2与时段3期望费用的最小值
f
2
(
i
2
)
f_2(i_2)
f2(i2) 时,
h
(
i
t
)
h(i_t)
h(it) 应改为
E
h
(
i
2
)
Eh(i_2)
Eh(i2),
f
3
(
i
3
)
f_3(i_3)
f3(i3) 应改为
f
3
(
i
2
+
x
2
−
1
)
P
(
d
t
=
1
)
+
f
3
(
i
2
+
x
2
−
2
)
P
(
d
t
=
2
)
f_3(i_2+x_2-1)P(d_t=1)+f_3(i_2+x_2-2)P(d_t=2)
f3(i2+x2−1)P(dt=1)+f3(i2+x2−2)P(dt=2).
-可以将随机需求下的最优计划用图2表示:
总结归纳
- 建立动态规划模型的主要步骤为:划分阶段,定义状态(如存贮量)和决策(产量),建立状态转移律(如 i t + 1 = i t + x t − d t i_{t+1}=i_{t}+x_{t}-d_t it+1=it+xt−dt),确定允许状态集合和允许决策集合,列出最优方程并确定终端条件( f T + 1 ( i t + 1 ) f_{T+1}(i_{t+1}) fT+1(it+1))。