运筹学实验_动态规划
- 格式:docx
- 大小:63.07 KB
- 文档页数:7
运筹学动态规划第7章动态规划动态规划是Bellman 在1957年提出的解多阶决策问题的方法,在那个时期,线性规划很流行,它是研究静态问题的,而Bellman 提出的解多阶决策问题的方法适用于动态问题,相对于线性规划研究静态问题,取名动态规划。
动态规划方法应用范围非常广泛,方法也比较简单。
动态规划是将一个多阶决策问题分解为一系列的互相嵌套的一步决策问题,序贯求解使问题得到简化。
动态规划问题按照问题的性质可以分为确定性的和随机性的,按决策变量的和状态变量的取值可以分为离散型的和连续型的。
此外还有依据时间变量连续取值还是离散取值又分为连续时间动态规划问题和离散时间动态规划问题。
本章重点讨论离散时间确定性动态规划问题,包括状态变量和决策变量连续取值和离散取值两种情况。
7.1解多阶决策问题的动态规划法1.多阶决策问题的例(1)最优路径问题—多阶决策问题的例为了直观,先从最优路径问题谈起,它可以看作一个多阶决策过程。
通过最优路径问题的解可以看到用动态规划法解多阶决策问题的基本思想。
考虑图7-1所示的最优路径问题。
一汽车由S 点出发到终点F ,P 和Q 是一些可以通过的点。
图中两点间标出的数字是汽车走这一段路所需的时间(单位为小时)。
最优路径问题是确定一个路径,使汽车沿这条路径由S 点出发达到F 点所用时间最短。
最优路径问题可以看作一个多阶决策问题,由S 到城市甲是第1个阶段,第1个结点P 1或第2个结点Q 1做为第1阶段可以通过的两个站点,由城市甲到城市乙是第2阶段,这个阶段是从P 1或Q 1到P 2或Q 2,由城市乙到城市丙是第3阶段,这个阶段是从P 2或Q 2到P 3或Q 3,由城市丙的P 3或Q 3到F 做为第四阶段。
(2)最优路径问题的解对最优路径问题,存在一个非常明显的原理,即最优路径的一部分还是最优路径。
换句话说,如果SQ P Q F 123是所求的最优路径,那么,汽车从这一路径上的任何一点,例如P 2,出发到F 的最优路径必为P Q F 23。
运筹学教案动态规划一、教学目标1. 了解动态规划的基本概念及其在运筹学中的应用。
2. 掌握动态规划的基本原理和方法,能够解决实际问题。
3. 学会使用动态规划解决最优化问题,提高解决问题的效率。
二、教学内容1. 动态规划的基本概念动态规划的定义动态规划与分治法的区别2. 动态规划的基本原理最优解的性质状态转移方程边界条件3. 动态规划的方法递推法迭代法表格法4. 动态规划的应用背包问题最长公共子序列最短路径问题三、教学方法1. 讲授法:讲解动态规划的基本概念、原理和方法。
2. 案例分析法:分析实际问题,引导学生运用动态规划解决问题。
3. 编程实践法:让学生动手编写代码,加深对动态规划方法的理解。
四、教学准备1. 教材:《运筹学导论》或相关教材。
2. 课件:动态规划的基本概念、原理、方法及应用案例。
3. 编程环境:为学生提供编程实践的平台,如Python、C++等。
五、教学过程1. 引入:通过一个实际问题,引出动态规划的概念。
2. 讲解:讲解动态规划的基本原理和方法。
3. 案例分析:分析实际问题,展示动态规划的应用。
4. 编程实践:让学生动手解决实际问题,巩固动态规划方法。
5. 总结:对本节课的内容进行总结,强调动态规划的关键要点。
6. 作业布置:布置相关练习题,巩固所学知识。
六、教学评估1. 课堂讲解:评估学生对动态规划基本概念、原理和方法的理解程度。
2. 案例分析:评估学生运用动态规划解决实际问题的能力。
3. 编程实践:评估学生动手实现动态规划算法的能力。
4. 课后作业:评估学生对课堂所学知识的掌握情况。
七、教学拓展1. 研究动态规划与其他优化方法的联系与区别。
2. 探讨动态规划在运筹学其他领域的应用,如库存管理、生产计划等。
3. 了解动态规划在、数据挖掘等领域的应用。
八、教学反思1. 反思本节课的教学内容、方法和过程,确保符合教学目标。
2. 考虑学生的反馈,调整教学方法和节奏,提高教学效果。
3. 探讨如何将动态规划与其他运筹学方法相结合,提高解决问题的综合能力。
实验二用MATLAB解决动态规划问题问题:有一部货车每天沿着公路给四个售货店卸下6箱货物,如果各零售店出售该货物所得利润如下表所示,试求在各零售店卸下几箱货物,能使获得总利润最解:1)将问题按售货店分为四个阶段2)设s k表示为分配给第k个售货店到第n个工厂的货物数,x k设为决策变量,表示为分配给第k个售货店的货物数,状态转移方程为s k+1=s k-x k。
P k(x k)表示为x k箱货物分到第k个售货店所得的盈利值。
f k(s k)表示为s k箱货物分配给第k个售货店到第n个售货店的最大盈利值。
3)递推关系式:f k(s k)=max[ P k(x k)+ f k+1(s k-x k) ] k=4,3,2,1边界条件:f5(s5)=04)从最后一个阶段开始向前逆推计算。
第四阶段:设将s4箱货物(s4=0,1,2,3,4,5,6)全部分配给4售货店时,最大盈利值为: f4(s4)=max[P4(x4)] 其中x4=s4=0,1,2,3,4,5,6 x4*表示使得f4(s4)为最大值时的最优决策。
第三阶段:设将s3箱货物(s3=0,1,2,3,4,5,6)分配给3售货店与4售货店时,对每一个s3值,都有一种最优分配方案,使得最大盈利值为:f3(s3)=max[ P3(x3)+ f4(s3-x3) ] ,x3=第二阶段:设将s2箱货物(s2=0,1,2,3,4,5,6)分配给2售货店、3售货店与4售货店时,则最大盈利值为:f2(s2)=max[ P2(x2)+ f3(s2-x2) ]第一阶段:设将s2箱货物(s1=0,1,2,3,4,5,6)分配给1售货店、2售货店、3售货店与4售货店时,则最大盈利值为:f1(s1)=max[ P1(x1)+ f2(s1-x1) ]按计算表格的顺序反推,可知最优分配方案有6个:1) x1*=1,x2*=1,x3*=3,x4*=1。
2) x1*=1,x2*=2,x3*=2,x4*=1。
运筹学教案动态规划一、引言1.1 课程背景本课程旨在帮助学生掌握运筹学中的动态规划方法,培养学生解决实际问题的能力。
1.2 课程目标通过本课程的学习,学生将能够:(1)理解动态规划的基本概念和原理;(2)掌握动态规划解决问题的方法和步骤;(3)能够应用动态规划解决实际问题。
二、动态规划基本概念2.1 定义动态规划(Dynamic Programming,DP)是一种求解最优化问题的方法,它将复杂问题分解为简单子问题,并通过求解子问题的最优解来得到原问题的最优解。
2.2 特点(1)最优子结构:问题的最优解包含其子问题的最优解;(2)重叠子问题:问题中含有重复子问题;(3)无后效性:一旦某个给定子问题的解确定了,就不会再改变;(4)子问题划分:问题可以分解为若干个子问题,且子问题之间是相互独立的。
三、动态规划解决问题步骤3.1 定义状态状态是指某一阶段问题的一个描述,可以用一组变量来表示。
3.2 建立状态转移方程状态转移方程是描述从一个状态到另一个状态的转换关系。
3.3 确定边界条件边界条件是指初始状态和最终状态的取值。
3.4 求解最优解根据状态转移方程和边界条件,求解最优解。
四、动态规划应用实例4.1 0-1背包问题问题描述:给定n个物品,每个物品有一个重量和一个价值,背包的最大容量为W,如何选择装入背包的物品,使得背包内物品的总价值最大。
4.2 最长公共子序列问题描述:给定两个序列,求它们的最长公共子序列。
4.3 最短路径问题问题描述:给定一个加权无向图,求从源点到其他各顶点的最短路径。
5.1 动态规划的基本概念和原理5.2 动态规划解决问题的步骤5.3 动态规划在实际问题中的应用教学方法:本课程采用讲授、案例分析、上机实践相结合的教学方法,帮助学生深入理解和掌握动态规划方法。
教学评估:课程结束后,通过课堂讨论、上机考试等方式对学生的学习情况进行评估。
六、动态规划算法设计6.1 动态规划算法框架介绍动态规划算法的基本框架,包括状态定义、状态转移方程、边界条件、计算顺序等。
实验二用MATLAB解决动态规划问题
问题:有一部货车每天沿着公路给四个售货店卸下6箱货物,如果各零售店出售该货物所得利润如下表所示,试求在各零售店卸下几箱货物,能使获得总利润最大?其值为多少?
解:
1)将问题按售货店分为四个阶段
2)设s k表示为分配给第k个售货店到第n个工厂的货物数,
x k设为决策变量,表示为分配给第k个售货店的货物数,
状态转移方程为s k+1=s k-x k。
P k(x k)表示为x k箱货物分到第k个售货店所得的盈利值。
f k(s k)表示为s k箱货物分配给第k个售货店到第n个售货店的最大盈利值。
3)递推关系式:
f k(s k)=max[ P k(x k)+ f k+1(s k-x k) ] k=4,3,2,1
边界条件:f5(s5)=0
4)从最后一个阶段开始向前逆推计算。
第四阶段:
设将s4箱货物(s4=0,1,2,3,4,5,6)全部分配给4售货店时,最大盈利值为:f4(s4)
=s=0,1,2,3,4,5,6x*表示使得f
=max[P
第三阶段:
设将s3箱货物(s3=0,1,2,3,4,5,6)分配给3售货店和4售货店时,对每一个s3值,都有一种最优分配方案,使得最大盈利值为:f3(s3)=max[ P3(x3)+ f4(s3-x3) ] ,x3
设将s2箱货物(s2=0,1,2,3,4,5,6)分配给2售货店、3售货店和4售货店时,则最大盈利值为:f2(s2)=max[ P2(x2)+ f3(s2-x2) ]
其中,x=0,1,2,3,4,5,6
第一阶段:
设将s2箱货物(s1=0,1,2,3,4,5,6)分配给1售货店、2售货店、3售货店和4售货店时,则最大盈利值为:f1(s1)=max[ P1(x1)+ f2(s1-x1) ]
1) x1*=1,x2*=1,x3*=3,x4*=1。
2) x1*=1,x2*=2,x3*=2,x4*=1。
3) x1*=1,x2*=3,x3*=1,x4*=1。
4) x1*=2,x2*=0,x3*=3,x4*=1。
5) x1*=2,x2*=1,x3*=2,x4*=1。
6) x1*=2,x2*=2,x3*=1,x4*=1。
以上6种最优方案的总利润均为17。
使用Matlab解决上面的问题:
在matlab命令窗口输入下面的程序:
图1 程序及其运行结果-1
图2程序及其运行结果-2
图3程序及其运行结果-3 m=1;
A=[0 4 6 7 7 7 7];
B=[0 2 4 6 8 9 10];
C=[0 3 5 7 8 8 8];
D=[0 4 5 6 6 6 6];
for a=1:7
for b=1:7
for c=1:7
for e=1:7
if a+b+c+e==10
d(m)=A(a)+B(b)+C(c)+D(e);
E(m,1)=a;
E(m,2)=b;
E(m,3)=c;
E(m,4)=e;
m=m+1;
else
continue;
end
end
end
end
end
MAXNum=d(1);
for l=1:size(d,2)
if d(l)>MAXNum
MAXNum=d(l);
p=l;
else
continue;
end
end
for l=1:size(d,2)
if d(l)==MAXNum
E(l,:)-1
else
continue;
end
end
MAXNum
按回车后可以得到以下的结果:
ans =
1 1 3 1
ans =
1 2 2 1
ans =
1 3 1 1
ans =
2 0
3 1
ans =
2 1 2 1
ans =
2 2 1 1
MAXNum =
17
由运行结果可知最优方案有6个:
1)x1*=1,x2*=1,x3*=3,x4*=1。
2)x1*=1,x2*=2,x3*=2,x4*=1。
3)x1*=1,x2*=3,x3*=1,x4*=1。
4)x1*=2,x2*=0,x3*=3,x4*=1。
5)x1*=2,x2*=1,x3*=2,x4*=1。
6)x1*=2,x2*=2,x3*=1,x4*=1。
最大总利润为17。
这与之前的计算结果一致。