有关动态规划顺序算法编程问题
下面有一道我一直没有编成功的题目设某公司需要制定一种产品今后4个时期的采购与库存计划,根据市场预测在今后四个时期内,该产品的市场需求量见下表。如果每批产品的固定采购成本费为3千元,若不采购成本费为0元;每单位产品的成本价为1千元;每个时期所允许的最大采购量不超过6个单位;对于每个时期末没能售出的产品,每单位产品需要储存费0.5千元。已知第一个时期的初始库存量和第四个时期末的库存量都为0.试问该公司应如何安排各个时期的采购与库存,才能在满足市场需求的条件下,使总的成本费最少。
时期(k) 1 2 3 4
需求量dk 2 3 2 4
我只把推导公式全写出来了,也算出了答案,20.5千元,可这编程就有点问题了,各位帮帮忙可以么,感激不尽。
【解答】:
1. 把生产的四个时期作为四个阶段,即第k个阶段的采购量为。k=1, 2, 3, 4。
2. 变量xk表示第k时期的生产量。
3. 变量Sk表示第k时期初(发货以前)的库存量。
0≤xk≤min{Sk+1+dk, 6} 其中dk为第k时期的需求量。
指标Ck(xk)+hk(Sk)表示第k时期的采购总成本。
其中,
, hk(Sk)=0.5Sk
状态转移方程为Sk=Sk+1+dk―xk。
从第1时期到第k时期的总成本表示的基本方程为
k=1,由f1(S2)=min{C1(x1)+h1(S2)}和s1=s2+d1-x1
x1=min{S2+2,6}
S2可在0与之间取值,即s2=0, 1, 2, 3, 4,于是由x1=min{S2+2,6}知,x1可取值为2, 3, 4, 5, 6。分别计算如下:
f1(0)=min{3+2+0.5×0}=5 有x1=2
x1=2
f1(1)=min{3+3+0.5×1}=6.5 有x1=3
x1=3
f1(2)=min{3+4+0.5×2}=8.5 有x1=4
x1=4
f1(3)=min{3+5+0.5×3}=9.5 有x1=5
x1=5
f1(4)=min{3+6+0.5×4}=11 有x1=6
x1=6
k=2,由f2(S3)=min{C2(x2)+h2(S3)+f1(S3+3-X2)}可知,
0≤x2≤min{S3+3, 6}
S3可在0与之间取值。即S3可取值0, 1, 2, 3。
x2可在0与min{S3+3, 6}之间取值。分别计算如下:
由,有x2=0。
由,有x2=0。
同理有: f2(2)=min{C2(x2)+h2(2)+f1(5-x2)}=14,有x2=5
0≤x2≤5
f2(3)=min{C2(x2)+h2(3)+f1(6-x2)}=15.5,有x2=6
0≤x2≤6
k=3,由f3(S4)=min{C3(x3)+h3(S4)+f2(S3+2-x3)}可知,S4可在0与min{4, 6-2}=4之间取值。x3可在0与min{S3+3, 6}之间取值。分别计算如下:
,有x3=0。
,有x3=0或3。
同理有: f3(2)=min{C3(x3)+h3(2)+f1(4-x3)}=17.5,有x3=4
0≤x3≤4
f3(3)=min{C3(x3)+h3(3)+f1(5-x3)}=19,有x3=5
0≤x3≤5
f3(4)=min{C3(x3)+h3(4)+f1(6-x3)}=20.5,有x3=6
0≤x3≤6
k=4,由f4(S5)=min{C4(x4)+h4(S5)+f3(S4+4-x4)}与S5=0
0≤x4≤min{S5+4, 6}可知,
f4(0)=min{C4(x4)+h4(0)+f3(4-x4)}
0≤x4≤4
,有x4=0。
按计算顺序反推算,
x4=0—→x3=6—→x2=0—→x1=5(由Sk=Sk+1+dk―xk推出)
即每个时期的最优生产决策为:
x1*=5,x2*=0,x3=6,x4*=0
其相应的最小总成本为20.5千元。