动态规划课程设计模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称: 动态规划 实验名称: 产量与库存问题 专 业: 信息与计算科学 姓 名: 张睿 学 号: 02-16

一、 问题描述

产量与库存问题

(1) 某企业生产并销售某种产品,6个月每个月的销售量,单位数量费用,储存费用

见表6.10.初始,终结库存均为0.问应如何安排每月生产,才能充分保证供应而总费用最小?

(2)示。假定:不论在任何时期,生产每批产品的固定费用F 为8(千元),单位产品的生产成本费用为2(千元),单位产品每时期(阶段)库存货H 为2(千元),最初库存量S1为1个单位,仓库容量为4个单位,计划期末库存量为0.任何一个时期生产能力所允许的最大生产批量B 不超过6个单位。在满足上述给定条件下,该厂如何安排各个时期的生产与库存,才能使所花的总成本费最低?

二、 建立动态规划模型

问题(1)求解:

为了便于问题的求解,我们先做如下合理假设:

(1) 生产在每月初时进行,且生产完毕后,产品会立刻按照每月的销售量

出售,方便计算库存量。

(2) 工厂只生产整数单位的产品。 (3) 生产时不算库存费用

阶段变量:1,2,3,4,5,6k =,将问题中的六个月分为六个阶段,即阶段变量

1,2,3,4,5,6k =。

状态变量:k V ,k V 为第k 个月末的库存量。

决策变量:k x ,表示第k 个月的生产量。

()k k C x 为第k 个月的生产成本,k d 为第k 个月的销售需求,()k h V 为第k 个

月的库存费用。

状态转移方程:111k k k k V V x d +++=+-。

目标函数:(,)k k k G V x 表示第k 个月的总生产成本。(,)()()k k k k k k G V x C x h V =+。 最优值函数:()k k f V 为第一个月到第k 个月的总的生产成本。因此动态规划的基本方程为:

11000()min {(,)()},1,2,3,4,5,6()()0

k k k

k k k k k k k x V d f V G V x f V k DP f V --≤≤+=+=⎧⎪⎨

=⎪⎩ 其中:()=p k k k k C x x ⋅,p k 为第k 个月的单位生产费用。()k k k h V s V =⋅,k s 为第k 个月的单位储存费用。

通过对上述模型进行编程求解(程序见三),则可得出最优的生产方案如下

在通过线性规划(程序见三),解出同是此解,说明此动态规划模型正确。

问题(2)求解

基本假设同问题(1)相同

阶段变量:,1,2,3k k =,表示题中所给的三个时期。

状态变量:,1,2,3,4k v k =,表示第k 个阶段的库存量,04k v ≤≤。其中0v 表示第1个时期前的库存量,011v s ==。

决策变量:k x ,表示第k 个月的生产量,06k x ≤≤。

P 为单位产品的生产费用。F 为生产每批产品的费用,k d 为k 时期的需求量,

H 为单位产品库存费用。

状态转移方程:111k k k k v v x d +++=+-

最优值函数:()k k f V 为第一个月到第k 个月的总的生产成本。因此动态规划的基本方程为:

110min(,6)

001()min {()},1,2,3()()2

k k k k k k k k k x V d f V P x F H v f v k DP f V H s --≤≤+=⋅++⋅+=⎧⎪⎨

=⋅=⎪⎩当1k =时:

104v ≤≤,1110x d v v =+-

11001100(0){()}

(4){4()}

f P x F f v f P x H F f v =⋅++=⋅++

+

一次下去一直算到三个时期结束。

三、程序及结果

问题(1) Matlab 程序: function L global d;

d=[60,55,50,45,40,30];%定义需求矩阵 global p;

p=[825,775,850,850,775,825];%定义生产单位费用矩阵 global s;

s=[40,30,35,20,40,0];%定义单位储藏费用 V1=0:220;%第一个月 F1=[]; for i=1:221

F1(V1(i)+1)=825*(V1(i)+d(1))+40*V1(i); % F1(i)=f1(V1(i)); end

V2=0:165;%第二个月 F2=[]; for i=1:166 f2=[];

x2=0:(d(2)+V2(i)); for j=1:(d(2)+V2(i)+1)

f2(j)=775*x2(j)+30*V2(i)+F1(d(2)+V2(i)-x2(j)+1); end

F2(V2(i)+1)=min(f2); end

V3=0:115;%第三个月 F3=[]; for i=1:116 f3=[];

x3=0:(d(3)+V3(i)); for j=1:(d(3)+V3(i)+1)

f3(j)=850*x3(j)+35*V3(i)+F2(d(3)+V3(i)-x3(j)+1);

end

F3(V3(i)+1)=min(f3);

end

V4=0:70;%第四个月

F4=[];

for i=1:71

f4=[];

x4=0:(d(4)+V4(i));

for j=1:(d(4)+V4(i)+1)

f4(j)=850*x4(j)+20*V4(i)+F3(d(4)+V4(i)-x4(j)+1);

end

F4(V4(i)+1)=min(f4);

end

V5=0:30;%第五个月

F5=[];

for i=1:31

f5=[];

x5=0:(d(5)+V5(i));

for j=1:(d(5)+V5(i)+1)

f5(j)=775*x5(j)+40*V5(i)+F4(d(5)+V5(i)-x5(j)+1);

end

F5(V5(i)+1)=min(f5);

end

x6=0:30;%第六个月

f6=[];

for j=1:31

f6(j)=825*x6(j)+F5(d(6)-x6(j)+1);

end

%往回算出生产量

F6=min(f6);%第6月

c6=find(f6==F6);

F6%最小费用

c6=c6-1

c5=find(f5==F5(31));%第5月

c5=c5-1

f4=[];%第4月

x4=0:d(4);

for j=1:(d(4)+1)

f4(j)=850*x4(j)+F3(d(4)-x4(j)+1);

end

c4=find(f4==170175);

c4=c4-1

f3=[];%第3月

相关文档
最新文档