运筹学第九章动态规划应用举例
- 格式:ppt
- 大小:7.89 MB
- 文档页数:107
动态规划算法应用场景动态规划(Dynamic Programming)在数学上属于运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法,同时也是计算机科学与技术领域中一种常见的算法思想。
动态规划算法与我们前面提及的分治算法相似,都是通过组合子问题的解来求解原问题的解。
但是两者之间也有很大区别:分治法将问题划分为互不相交的子问题,递归的求解子问题,再将他们的解组合起来求解原问题的解;与之相反,动态规划应用于子问题相互重叠的情况,在这种情况下,分治法还是会做很多重复的不必要的工作,他会反复求解那些公共的子问题,而动态规划算法则对相同的每个子问题只会求解一次,将其结果保存起来,避免一些不必要的计算工作。
Tips: 这里说到的动态规划应用于子问题相互重叠的情况,是指原问题不同的子问题之间具有相同的更小的子子问题,他们的求解过程和结果完全一样。
动态规划算法更多的时候是用来求解一些最优化问题,这些问题有很多可行解,每个解都有一个值,利用动态规划算法是希望找到具有最优值的解。
接下来,就让我们具体看看动态规划算法的求解思路及相关应用场景。
1. 动态规划算法求解分析1.1 适用问题首先,在利用动态规划算法之前,我们需要清楚哪些问题适合用动态规划算法求解。
一般而言,能够利用动态规划算法求解的问题都会具备以下两点性质:最优子结构:利用动态规划算法求解问题的第一步就是需要刻画问题最优解的结构,并且如果一个问题的最优解包含其子问题的最优解,则此问题具备最优子结构的性质。
因此,判断某个问题是否适合用动态规划算法,需要判断该问题是否具有最优子结构。
Tips: 最优子结构的定义主要是在于当前问题的最优解可以从子问题的最优解得出,当子问题满足最优解之后,才可以通过子问题的最优解获得原问题的最优解。
重叠子问题:适合用动态规划算法去求解的最优化问题应该具备的第二个性质是问题的子问题空间必须足够”小“,也就是说原问题递归求解时会重复相同的子问题,而不是一直生成新的子问题。
第二节动态规划应用举例
本节将通过动态规划的三种应用类型——资源分配问题、复合系统可靠性问题、设备更新问题,进一步介绍动态规划的特点和处理方法。
资源分配问题的应用很广泛,例如:
1.某学生正在备考4门功课,还剩7天时间,每门功课至少复习1天。
若他已估计出各门功课的复习天数与能提高的分数之间的关系,问他应怎样安排复习时间可使总的分数提高最多?
2.背包问题:旅行者携带的背包中能装的物品重量为a,现他要从n种物品中挑选若干数量装入背包,问他应如何挑选可使所带的物品总价值最大?
可靠性问题的应用很广泛,例如:
1.某重要的科研攻关项目正在由3个课题组以3种不同的方式进行,各组已估计出失败的概率。
为减少失败的概率,选派了2名高级专家去充实科研力量。
若可估计出各组增加专家后的失败概率,问应如何分派专家可使总的失败概率最小?
2.已知x
1+x
2
+…+x
n
=c,求z=x
1
x
2
…x
n
的最大
值。
动态规划算法原理与的应用动态规划算法是一种用于求解最优化问题的常用算法。
它通过将原问题划分为子问题,并将每个子问题的解保存起来,以避免重复计算,从而降低了问题的时间复杂度。
动态规划算法的核心思想是自底向上地构建解,以达到求解整个问题的目的。
下面将介绍动态规划算法的原理以及一些常见的应用。
1.动态规划算法的原理1)将原问题划分为多个子问题。
2)确定状态转移方程,即找到子问题之间的关系,以便求解子问题。
3)解决子问题,并将每个子问题的解保存起来。
4)根据子问题的解,构建整个问题的解。
2.动态规划算法的应用2.1最长公共子序列1) 定义状态:假设dp[i][j]表示序列A的前i个字符和序列B的前j个字符的最长公共子序列的长度。
2) 确定状态转移方程:若A[i] == B[j],则dp[i][j] = dp[i-1][j-1] + 1;若A[i] != B[j],则dp[i][j] = max(dp[i-1][j],dp[i][j-1])。
3) 解决子问题:从前往后计算dp数组中每个元素的值。
4) 构建整个问题的解:dp[m][n]即为最终的最长公共子序列的长度,其中m和n分别为序列A和序列B的长度。
2.2背包问题背包问题是指给定一个背包的容量和一些物品的重量和价值,要求在不超过背包容量的情况下,选择若干物品放入背包中,使得背包中物品的总价值最大。
该问题可通过动态规划算法求解,具体步骤如下:1) 定义状态:假设dp[i][j]表示在前i个物品中选择若干物品放入容量为j的背包中,能够获得的最大价值。
2) 确定状态转移方程:考虑第i个物品,若将其放入背包,则dp[i][j] = dp[i-1][j-wi] + vi;若不将其放入背包,则dp[i][j] = dp[i-1][j]。
3) 解决子问题:从前往后计算dp数组中每个元素的值。
4) 构建整个问题的解:dp[n][C]即为最终的背包能够获得的最大价值,其中n为物品的个数,C为背包的容量。
动态规划算法详解及经典例题⼀、基本概念(1)⼀种使⽤多阶段决策过程最优的通⽤⽅法。
(2)动态规划过程是:每次决策依赖于当前状态,⼜随即引起状态的转移。
⼀个决策序列就是在变化的状态中产⽣出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
假设问题是由交叠的⼦问题所构成,我们就能够⽤动态规划技术来解决它。
⼀般来说,这种⼦问题出⾃对给定问题求解的递推关系中,这个递推关系包括了同样问题的更⼩⼦问题的解。
动态规划法建议,与其对交叠⼦问题⼀次重新的求解,不如把每⼀个较⼩⼦问题仅仅求解⼀次并把结果记录在表中(动态规划也是空间换时间的)。
这样就能够从表中得到原始问题的解。
(3)动态规划经常常使⽤于解决最优化问题,这些问题多表现为多阶段决策。
关于多阶段决策:在实际中,⼈们经常遇到这样⼀类决策问题,即因为过程的特殊性,能够将决策的全过程根据时间或空间划分若⼲个联系的阶段。
⽽在各阶段中。
⼈们都须要作出⽅案的选择。
我们称之为决策。
⽽且当⼀个阶段的决策之后,经常影响到下⼀个阶段的决策,从⽽影响整个过程的活动。
这样,各个阶段所确定的决策就构成⼀个决策序列,常称之为策略。
因为各个阶段可供选择的决策往往不⽌⼀个。
因⽽就可能有很多决策以供选择,这些可供选择的策略构成⼀个集合,我们称之为同意策略集合(简称策略集合)。
每⼀个策略都对应地确定⼀种活动的效果。
我们假定这个效果能够⽤数量来衡量。
因为不同的策略经常导致不同的效果,因此,怎样在同意策略集合中选择⼀个策略,使其在预定的标准下达到最好的效果。
经常是⼈们所关⼼的问题。
我们称这种策略为最优策略,这类问题就称为多阶段决策问题。
(4)多阶段决策问题举例:机器负荷分配问题某种机器能够在⾼低两种不同的负荷下进⾏⽣产。
在⾼负荷下⽣产时。
产品的年产量g和投⼊⽣产的机器数量x的关系为g=g(x),这时的年完善率为a,即假设年初完善机器数为x,到年终时完善的机器数为a*x(0<a<1);在低负荷下⽣产时,产品的年产量h和投⼊⽣产的机器数量y 的关系为h=h(y)。
运筹学教案动态规划一、引言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 动态规划算法框架介绍动态规划算法的基本框架,包括状态定义、状态转移方程、边界条件、计算顺序等。
第九章动态规划应用举例1.一维资源分配问题(1)问题:设有某种原料,总数量为a,用于生产n种产品。
若分配数量xi用于生产第i种产品,其收益为gi (xi)。
问应如何分配,才能使生产n种产品的总收入最大?(2)模型及其解法。
此问题可写成静态规划问题:此问题可写成静态规划问题:当gi (xi)都是线性函数时,它是一个线性规划问题;当gi(xi)是非线性函数时,它是一个非线性规划问题。
但当n比较大时,具体求解是比较麻烦的。
然而,由于这类问题的特殊结构,可以将它看成一个多阶段决策问题,并利用动态规划的递推关系来求解。
在应用动态规划方法处理这种“静态规划”问题时,通常以把资源分配给一个或几个使用者的过程作为一个阶段,把问题中的变量z。
为决策变量,将累计的量或随递推过程变化的量选为状态变量。
设状态变量sk表示分配用于生产第k种产品至第n种产品的原料数量。
决策变量uk 表示分配给生产第k种产品的原料数,即uk=xk。
状态转移方程:允许决策集合: Dk (sk)={uk|0≤uk=xk≤sk}令最优值函数fk (sk)表示以数量为sk的原材料分配给第k种产品至第n种产品所得到的最大总收入。
因而可写成出态规划的逆推关系式为:利用这个递推关系式进行逐段计算,最后求得f1(a)即为所求问题的最大总收入。
2.生产存储问题(1)问题:设某公司对某种产品要制定一项咒个阶段的生产(或购买)计划。
已知它的初始库存量为零,每阶段生产(或购买)该产品的数量有上限;每阶段社会对该产品的需求量是已知的,公司保证供应;在n阶段末的终结库存量为零。
问该公司如何制定每个阶段的生产(或采购)计划,从而使总成本最小。
(2)模型及其解法。
设dk 为第k阶段对产品的需求量,xk为第k阶段产品的生产量(或采购量),v k 为第k阶段结束时的产品库存量,则有vk=vk-1+xk-dk。
ck(xk)表示第k阶段生产产品xk 时的成本费用,它包括生产准备成本K和产品成本axk(其中a是单位产品成本)两项费用,即hk (vk)表示在第k阶段结束时有库存量vk所需的存储费用,故第k阶段的成本费用为ck (xk)+hk(xk),m表示每阶段最多能生产该产品的上限数。
徐州工程学院数理学院案例分析报告课程名称运筹学及应用案例分析题目农场五年计划的制定专业班级姓名学号指导教师成绩等级2013年 12 月 4 日目录小组成员分工 (1)一.问题描述 (2)二.问题分析 (2)三.模型建立 (3)四.模型求解与程序设计 (15)小组人员详细分工一.问题描述农场五年计划的制定英国某农场主有200英亩土地的农场,现在要为未来五年制定生产计划:现在他有120头母牛,其中20头为不到2岁的幼牛,100头为产奶牛。
每头幼牛需用2/3英亩土地供养,每头产奶牛需用1英亩。
产奶牛平均每头每年生1.1头牛,其中一半为公牛,生出后不久即卖掉,平均每头卖30英镑。
另一半为母牛,可以在生出后不久卖掉, 平均每头卖40英镑,也可以留下饲养,养至2岁成为产奶牛。
幼牛每年损失5%,产奶牛每年损失2%。
产奶牛养至12岁就卖掉,平均每头卖120英镑。
现有的幼牛0岁和1岁各10头,100头产奶牛,从2岁到11岁,每一年龄的都有10头,应该卖掉的小母牛都已卖掉。
现有的20头是要饲养成产奶牛的,一头牛所产的奶提供年收入370英镑。
现在最多只能养130头牛,超过此数每多养一头,要投资200英镑。
每头产奶牛每年消耗0.6吨粮食和0.7吨甜菜,粮食和甜菜可由农场种植出来.每英亩产甜菜1.5吨,只有80英亩的土地适于种粮食,且产量不同,按产量可分为4组:第一组20英亩,亩产1.1吨;第二组30英亩,亩产0.9吨;第三组20英亩,亩产0.8吨;第四组10英亩,亩产0.65吨。
从市场购粮食每吨90英镑,卖粮食每吨75英镑,买甜菜每吨70英镑,卖出50英镑。
养牛和种植所需劳动量为:每头幼牛每年10小时,每头产奶牛每年42小时,种一英亩粮食每年需4小时,种一英亩甜菜每年需14小时,其它费用:每头幼牛每年50英镑,每头产奶牛每年100英镑,种粮食每英亩每年15英镑,种甜菜每英亩每年10英镑。
劳动费用现在每年为4000英镑,提供5500小时的劳动量,超过此数的劳动量每小时费用为1.20英镑。