动态规划word版
6动态规划(精品)
第6章动态规划本章基本要求1、理解多阶段决策问题的含义;2、掌握动态规划的基本概念,特别是状态变量、决策变量、状态转移方程、指标函数与最优值函数、边界条件、基本方程;3、掌握最优化原理的内容、动态规划的求解步骤及逆序递推法、顺序递推法;4、掌握求解动态规划的解析法与列表法;5、会判定动态规划问题的类型并求解.在生产、计划、管理中往往需要研究处理包含多个阶段决策过程的问题,这类问题能分解为若干阶段或若干个子问题,通过对每个子问题作出决策得到解决,动态规划就是研究这种多阶段决策问题的优化方法.它能为分析问题的全过程提供总的框架,在这个框架内又可用各种优化技术解决每一阶段上的具体问题. 根据决策过程是离散的还是连续的,是确定的还是随机的,动态规划大体可分为离散确定型、离散随机型、连续确定型和连续随机型等四种决策类型.本章首先介绍多阶段决策问题及动态规划的基本概念,然后介绍动态规划的基本原理、求解步骤和方法,最后介绍动态规划的一些应用.§6.1多阶段决策问题动态规划(Dynamic Programming)是运筹学的一个重要分支,是求解多阶段决策问题的一种最优化方法.20世纪50年代初R. E. Bellman等人在研究多阶段决策过程(Multistep Decision Process)的优化问题时,提出了著名的最优性原理(Principle of Optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类优化问题的新方法——动态规划.1957年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作.动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用.例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便.动态规划的成功之处在于,它可以把一个n 维决策问题变换为n 个一维最优化问题,一个一个地求解.这是经典极值方法所做不到的,它几乎超越了所有现存的计算方法,特别是经典优化方法.另外,动态规划能够求出全局极大或极小,这也是其它优化方法很难做到的.虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划等),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解.应该指出的是,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊的算法,它不像线性规划那样有统一的数学模型和算法(例如单纯形法),而必须对具体问题进行具体分析,针对不同的问题,运用动态规划的原理和方法,建立起相应的模型,然后再用动态规划方法去求解.因此,读者在学习时,除了要对动态规划的基本原理和方法正确理解外,还应以丰富的想象力去建立模型,用灵活的技巧去求解.多阶段决策问题很多,下面通过几个具体例子说明什么是多阶段决策问题.例6.1-1 最短路径问题设有一个旅行者从图7.1-1中的A 点出发途中需经B C D ,,等处,最后到达终点E .从A 到E 有很多条路线可供选择,各点之间的距离如图所示,问旅行者应选择哪一条路线,使从A 到达E 的总路程最短?图6.1-1 A 经,,B C D 到E 的路径图从A 出发有三种方案可供选择:到12,B B 或3B ,如果仅考虑一段内最优,自然要选A 到1B ,但从整体上考虑,从A 到E 的最短路确经3B 而不经过1B ,因此,分段孤立地从本段最优考虑,总体不一定最优.如果把从A 到E 的所有可能路线一一列举出来,找出最短一条,这不仅费事,而且当阶段数多时就很难办到.实际上,这是一个多阶段决策问题.显然可以将全过程划分为4个阶段,每个阶段开始时要确定选择哪一条路径,而且上一个阶段的决策必然影响到下一个阶段选择路径时的状态.决策的目标是使总的路程最短.例6.1-2 生产计划问题工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件).经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件).如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元).还规定年初和年末这种产品均无库存.试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少.这也是一个多阶段决策问题.显然可以将全过程划分为4个阶段(一个季度一个阶段),每个阶段开始时要确定该季度的产量,而且上一个阶段的决策必然影响到下一个阶段的生产状态.决策的目标是使一年的总费用(生产成本和存储费)最少.例6.1-3 机器负荷分配问题某种机器可以在高低两种不同的负荷下进行生产,在高负荷下生产时,产品的年产量g 和投入生产的机器数量x 的关系为()g g x =,这时的年完好率为a ,即如果年初完好机器数为x ,到年终时完好的机器数为(01)ax a <<,在低负荷下生产时,产品的年产量h 和投入生产的机器数量y 的关系为()h h y =,相应的完好率为(01)by b <<,且a b <.假定开始生产时完好的机器数量为1s ,要制定一个五年计划,确定每年投入高、低两种负荷生产的完好机器数量,使5年内产品的总产量达到最大.这同样是一个多阶段决策问题.显然可以将全过程划分为5个阶段(一年一个阶段),每个阶段开始时要确定投入高、低两种负荷下生产的完好机器数,而且上一个阶段的决策必然影响到下一个阶段的生产状态.决策的目标是使产品的总产量达到最大.例6.1-4 装载问题某运输公司要为某企业运送物资,现有n 种货物供其选择装运.这n 种货物的编号为1,2,...,n .已知第j 种货物每件重j a 公斤,每件可收费j c 元,1,2,...,j n =.又知该公司的车辆所能承受的总重量不超过b 公斤.问该公司应如何选择这种货物的件数,使得收取的运费最多.设该公司选择第j 种货物的件数为(1,2,...,)j x j n =,则问题可归结为11max ..012nj jj n j j j jz c x a x b s t x j n === ≤ ≥= ∑∑L 且为整数(,,,) 这是一个整数规划问题,当然可以用整数规划的方法求解.然而,由于这一模型的特殊结构,我们可以把本来属于“静态规划”的各问题引进“时间”因素,分成若干个阶段,用动态规划的方法求解.以上几个问题虽然具体意义各不相同,但也有一些共同的特点,即都可以看成一个多阶段的决策问题,而且各个阶段决策的选取不是任意的,它依赖于当前面临的状态,又对以后的发展产生影响.当各个阶段的决策确定之后,就组成了一个决策序列,也就决定了整个过程的一条活动路线.这种把一个问题变成一个前后关系具有链状态结构的多阶段决策过程,也称为序贯决策过程,相应的问题就称为多阶段决策问题.下面以例7.1-1为例简单的介绍一下动态规划方法求解多阶段决策问题的基本思路与基本步骤.动态规划方法解题的基本思路是:将一个多阶段决策问题转化为依次求解多个单阶段决策问题,从而简化计算过程,这种转化的实现是从最后一个阶段出发进行反推,这种算法称为逆序算法.对于例7.1-1,具体求解步骤如下:(1)考虑一个阶段的最优选择.旅行者到达E 点前,上一站必然到达1D 或2D .如果上一站为1D ,则本阶段最优决策为1D E →,距离1(,)3d D E =,其中(,)d I J 表示,I J 之间的距离,记1()3f D =,1()f D 表示某阶段初从1D 出发到终点E 的最短距离.同理,若上一站为2D ,则最优决策为2D E →,2()4f D =.(2)联合考虑两个阶段的最优选择.当旅行者离终点E 还剩两站时,他必然位于12,C C 或3C 的某一点,如果位于1C ,则从1C 到终点E 的路线可能有两条:11C D E →→或12C D E →→,旅行者从这两条路线中选取最短的一条,并且不管经过1D 或2D ,到达该点后,他应沿着从1D 或2D 到E 的最短路程继续走.故从1C 出发到E 的最短路程为111122(,)()13min min 4.(,)()44d C D f D d C D f D ++ == ++即,从1C 到E 的最短路线为11C D E →→,并记1() 4.f C =同理,从2C 出发到E 的最优选择为211222(,)()63min min 7.(,)()34d C D f D d C D f D ++ == ++即,从2C 到E 的最短路线为22C D E →→,并记2()7f C =.从3C 出发到E 的最优选择为311322(,)()33min min 6.(,)()34d C D f D d C D f D ++ == ++即,从3C 到E 的最短路线为31C D E →→,并记3()6f C =.(3)再考虑三个阶段联合起来的最优选择.当旅行者离终点E 还有三站时,他位于12,B B 或3B 中的某一点,如果位于1B ,则出发到E 的最优选择为111122133(,)()74min (,)()min 571166(,)()d B C f C d B C f C d B C f C ++ +=+= ++即,从1B 到E 的最短路线为111B C D E →→→,记1()11f B =.如果从2B 出发,到E 点的最优选择为211222233(,)()34min (,)()min 27746(,)()d B C f C d B C f C d B C f C ++ +=+= ++即,从2B 到E 的最短路线为211B C D E →→→,记2()7f B =,如果从3B 出发,到E 点的最优选择为311322333(,)()54min (,)()min 17856(,)()d B C f C d B C f C d B C f C ++ +=+= ++即:从3B 到E 的最短路线为322B C D E →→→,记3()8f B =.(4)四个阶段联合考虑.从A 到E 的最优选择为112233(,)()211min (,)()min 571138(,)()d A B f B d A B f B d A B f B ++ +=+= ++即,从A 到E 的最短路线为322A B C D E →→→→,距离长度为()11f A =.§6.2动态规划的基本概念用动态规划处理多阶段决策问题时,首先建立一些基本概念,通过这些概念定量描述这个多阶段决策问题,现结合例6.1-1解释这些概念.(1)阶段:指一个问题需要作出决策的步数.如例6.1-1中有4个阶段.描述问题阶段数的变量称为阶段变量,常用k 来表示,k 编号方法常用顺序编号法,即,初始阶段编号为1,以后随进程逐渐增大.通常将所给问题的过程按时间或空间特征分解为若干互相联系的阶段.(2)状态:对于多阶段决策问题,我们把每一阶段的起始“位置”叫做状态,它既是该阶段的某一起点,又是前一阶段的某一终点.例如在例6.1-1中第二阶段的状态有三个:12,B B 和3B .我们把描述过程状态的变量叫做状态变量.它可以用一个数,一组数或一个向量来描述,通常用i k s 表示第k 阶段的第i 个状态.一般每一阶段都有若干个状态,故我们用k S = {}12,,,m k k k s s s L 表示第k 段的所有状态构成的状态集合.在最短路问题例6.1-1中 {}1,S A ={}{}{}{}212331234125,,,,,,,,S B B B S C C C S D D S E ====.应当指出,这里说的状态和常识中的状态不尽相同,它一般要满足:①要能描述问题的变化过程.②给定某一阶段的状态,以后各阶段的发展不受以前各阶段状态的影响,也就是说,当前的状态是过去历史的一个完整总结,过程的过去历史只能通过当前状态去影响它未来的发展,这个性质称为无后效性.③要能直接或间接地计算出来.(3)决策:指某阶段初从给定的状态出发,决策者从面临的若干种不同方案中做出的选择.决策变量()k k x s 表示第k 阶段状态为k s 时对方案的选择,决策变量的取值要受到一定的限制,用()k k D s 表示k 阶段状态为k s 时决策允许的取值范围,称为允许决策集合.故有()()k k k k x s D s ∈例如例6.1-1最短路径问题中{}21123(),,D B C C C =,而211()x B C =是可能的决策.(4)策略:当每一阶段的决策都确定以后,按先后顺序排列的决策组成的集合,称为一个全过程策略,简称策略,记为1,n p ,即{}1,1122(),(),,()n n n p x s x s x s =L如例7.1-1中选取122A B C D E →→→→就是一个策略.而,{(),,()}k n k k n n p x s x s =L ,称为后部子过程策略,如例6.1-1中选取从1B 到E 的一条路线121B C D E →→→就是一个后部子过程策略.对于多阶段决策问题,可供选择的策略很多,用1,1()n P s 及,()k n k P s 表示全体策略集合和后部子策略集合,显然有1,1,1,,(),().n n k n k n k p P s p P s ∈∈由于每一阶段都有若干个可能的状态和多种不同的决策,因而一个多阶段决策问题存在许多策略可供选择,称其中能够满足预期目标的策略为最优策略.如例6.1-1中路线3A B → 22C D E →→→为最优策略.(5)状态转移方程:从k s 的某一个状态出发,当决策变量()k k x s 的取值决定后,下一个阶段状态变量1k s +的取值也就随之确定.这种从上阶段的某一状态值到下阶段某一状态值得转移的规律称为状态转移律.显然下一阶段状态1k s +的取值是上阶段状态变量k s 和上阶段决策变量()k k x s 的函数,记为:1(,)k k k k s T s x +=状态转移律也叫状态转移方程.如例6.1-1中由于前一阶段的终点即为后一阶段的起点,故状态转移方程为1()k k k s x s +=(6)指标函数:用来衡量允许策略优劣的数量指标称为指标函数,它分为阶段指标函数与过程指标函数.阶段指标函数是指对应某一阶段状态k s 和从该状态出发的一个阶段的决策k x 的某种效益度量,用(,)k k k r s x 表示.过程的指标函数是指从状态k s 出发(k =1,2,…,n )至过程最终,当采取某种策略时,按预定标准得到的效益值,这个值既与k s 的状态值有关,又与k s 以后所选取的策略有关,它是两者的函数.记作,,11,,,,,,,.k n k n k k k k n n k n k k n V V s x s x s x V s p ++==L (,,)()例如,在例6.1-1中,两点间距离(,)d A B 1即为阶段的指标函数,而从1B 到终点E 的距离即为过程指标函数.常见指标函数的形式为:○1②(7)最优值函数:指标函数的最优值,称为最优值函数,记为()k k f s ,它表示从第k 个阶段的状态k s 出发到第n 个阶段的终止状态的过程,采取最优策略所得到的指标函数值,即,,,,()(,),k k k n k k n k n k n f s opt V s p p P =∈式中,opt 表示最优化,根据效益值的具体含义可以是求最大,或求最小.,11,(,)(,)(,)(,)n k n i i i i k n k k k i i i i k k k k k n V r s x r s x r s x r s x V ==++==+=+∑∑,11,(,)(,)(,)(,)n k n i i i i k n k k k i i i i k k k k k nV r s x r s x r s x r s x V ==++===∏∏..§6.3动态规划的基本原理和建立动态规划模型的步骤6.3.1 最优化原理我们知道,最短路问题具有这样的特点:如果最短路线经过第k 阶段的状态k s ,那么从k s 出发到达终点的这条路线,对于从k s 出发到达终点的所有路线来说,也是最短路线.实际上具有上述特点的问题很多,贝尔曼正是研究这样一类所谓多阶段决策问题,发现它们都有这一共同特点,于是提出了解决这类问题的最优化原理.最优化原理 作为整个过程的最优策略具有这样的性质:无论过去的状态和决策如何,对前面所形成的状态而言,余下的决策必然构成一个最优子策略.简言之:一个最优策略的子策略仍是最优的.例6.1-1正是根据这一原理求解的,从图6.1-1可以看出,无论从哪一段的某状态出发到终点E 的最短路线,只与此状态有关,而与这点以前的状态路线无关,即不受从A 点是如何到达这点的决策影响.而且从A 到E 的最短路线若经过i B ,则此路线由i B 到E 的后半部分应是由i B 到E 的最短路线.根据这个原理写出的计算动态规划问题的递推关系式称为动态规划方程.当,(,)nk n i i ii k V r s x ==∑时 ,,,,11()(,)(){(,)()}(())k k k n k k n k n k n k k k k k k k k f s opt V s p p P opt r s x f s x D s ++=∈=+∈ 当,(,)nk n i i ii k V r s x ==∏时 ,,,,11()(,)(){(,)()}(())k k k n k k n k n k n k k k k k k k k f s opt V s p p P opt r s x f s x D s ++=∈=∈6.3.2 建立动态规划模型的步骤用动态规划求解多阶段决策问题的基本思想是:利用最优化原理,建立动态规划方程,即建立动态规划的数学模型,最后再设法求其数值解.建立动态规划模型的步骤为:(1)将问题的过程恰当地分成若干个阶段,一般按问题所处的时间或空间进行划分,并确定阶段变量;(2)正确选取状态变量k s 使之满足无后效性等三个条件;(3)确定决策变量()k k x s 及每个阶段的允许决策集合()k k D s ;(4)写出状态转移方程 1(,)k k k k s T s x +=;(5)根据题意列出指标函数,k n V 、最优函数()k k f s 及阶段指标函数(,)k k k r s x ;(6)明确边界条件动态规划方程是递推关系,方程中含有11()k k f s ++,当k n =时,也即从最后一个阶段开始逆推时出现11()n n f s ++,这个项称为问题的边界条件.边界条件11()n n f s ++的值要根据问题的条件来决定,例如,当指标函数值是各阶段指标函数值的和时,可取11()n n f s ++=0,当指标函数值是各阶段指标函数值的积时,可取11()n n f s ++=1.(7)写出动态规划方程最后,根据最优化原理,结合所给的边界条件,可以写出如下的动态规划方程1111(){(,)()}()0(,1,,1)k k k k k k k n n f s opt r s x f s f s k n n ++++=+==− L (6.3-1) 或 1111(){(,).()}()1(,1,,1)k k k k k k k n n f s opt r s x f s f s k n n ++++= ==− L (6.3-2) 上面7步是构造动态规划模型的基础,是正确写出动态规划基本方程的基本要素,一个问题的动态规划模型构造得是否正确,又集中地反映在要恰当地定义最优值函数、正确地写出递推关系和边界条件,下面我们就来讨论这个问题.公式(6.3-1)和(6.3-2)称为动态规划的递推方程.由于是从k=n 开始向前逆序递推,又称为逆序递推方程.在递推过程中,将前面几个公式写在一起就构成对第一类指标函数式(加法形式)的一组基本方程:11111(){(,)()}()0(,),(,1,...,1)k k k k k k k n n k k k k f s opt r s x f s f s s T s x k n n +++++=+ = ==− (6.3-3)同理,对于第二类指标函数(乘法形式的),也可写出它的一组基本方程:11111(){(,).()}()1(,),(,1,...,1)k k k k k k k n n k k k k f s opt r s x f s f s s T s x k n n +++++= = ==− (6.3-4)于是得到求解动态规划的逆序方法的求解过程:运用公式(6.3-3)、(6.3-4)(或者公式(6.3-1) 、(6.3-2))之一,从k=n 开始,由后向前逆推,逐步求得各阶段的最优决策和相应的最优值,求出11()f s ,就是全过程的最优值(将1s 的值代入计算即得),然后再由1s 和*1x ,利用状态转移方程计算出2s ,从而确定*2x ,...,依次类推,最后确定*n x ,于是得最优策略****1,12{,,...,}n n p x x x =. 后面的计算过程称为“回代”,又称为“反向追踪”.总之,动态规划的计算过程是由递推和回代两部分组成.逆序递推的过程如图6.3-1所示§6.4动态规划的求解方法本节主要讨论一维动态规划的求解法.所谓一维动态规划问题是指:在一个多阶段决策过程中,每一个阶段只用一个状态变量k s 就足以描述系统的状态演变,并且在每一个阶段,只需要选择一个决策变量k x 就够了.前面讨论的问题都属于这一类.若每个阶段需要两个或多个状态变量才能描述系统的演变,或者每个阶段需要选择两个或多个决策变量时,这类问题都属于多维动态规划问题,本书不做讨论.求解一维动态规划问题,基本上有两类方法:一类是解析法;一类是列表法(数值计算法).所谓解析法,它需要用到指标函数的数学公式表示式,并且能用经典求极值的方法得到最优解,即用解析的方法求得最优解.所谓列表法,它在计算过程中不用或者很少用到指标函数的解析性质,而是通过列表的方式来逐步求得最优解,它可以解决解析法难于解决的问题.下面通过实例来分别介绍这两种方法.6.4.1 动态规划的解析法我们首先讨论仅有一个约束条件的数学规划问题)()()(max 2111n n x g x g x g Z +++=L=≥≤+++),,2,1(0..2211n j x b x a x a x a t s j n n L L 这里,当()j j g x ,j=1,2,…,n 均为线性函数时,则为线性规划问题;当()j j g x 不全为线性函数时,则为非线性规划问题;当j x 有整数要求时,则为整数规划问题.虽然这一类问题可在线性规划、非线性规划及整数规划中讨论.但是,用动态规划方法来解决这一类问题有其特殊的优点和方便之处.用动态规划求解这一类问题,有一个统一的模式.即把问题划分为n 个阶段,取k x 为第k 阶段的决策变量.第k 阶段的效益为()k k g x (k=1,2,…,n ).过程指标函数为各阶段效益之和,即,()(1,2,...,)nk n jjj kV g xk n ===∑问题是如何选择状态变量k s ,正如线性规划问题中可以将约束条件看成资源限制一样,这里也可以这样理解,即将现有数量为b 个单位的某种资源用来生产n 种产品,问如何分配使总利润最大.假设工厂的决策者分几个阶段来考虑这个问题,如果是用逆序递推法,决策者首先考虑的是第n 种产品生产几件,消耗资源多少;然后考虑第1n −种和第n 种产品各生产多少,消耗资源多少,依次向前递推.在第k 阶段时,就要考虑第k 种、第1k +种,…,第n 种产品各生产多少,消耗资源多少.于是我们就可以这样来选择状态变量,即令k s 表示可供第k 种产品至第n 种产品消耗的资源数.显然由0k s ≥,且k s 满足无后效性,而第k 阶段的资源消耗为k k a x ,于是得状态转移方程为.1,,1,,1L −=−=+n n k x a s s k k k k再由0k s ≥及决策变量k x 的非负性,可得允许决策集合为≤≤=k k k k k k a s x x s D 0|)( 允许状态集合为{}b s s S k k k ≤≤=0|且S 1={b }.设最优函数()k k f s 表示从第k 阶段到第n 阶段指标函数的最优值,则逆序递推方程为+=≤≤224/05651max 22s x s x 2*225,44s s x ==当k=1时,状态转移方程2113s s x =−,故{})(4max )(2213/01111s f x s f s x +=≤≤−+=≤≤)3(454max 1113/011x s x s x+=≤≤113/04541max 11s x s x *1114,33s s x ==由于110s ≤及11()f s 关于1s 是单调增函数,故应取110s =.这时3401034)10(1=×=f这就是指标函数的最优值.再回代求最优决策:由于110s =,所以03103103,31031121*1=×−=−===x s s s x 00404,042232*2=×−=−===x s s s x 053*3==s x即线性规划问题的最优解为T X )0,0,310(*=最优值Z *=40/3.例6.4-2 用动态规划方法求解33221max x x x Z ==≥≤++)3,2,1(06..321j x x x x t s j解:这个问题可以理解为将一个数6(或某种资源数)分成三部分,使目标函数23123max z x x x =达到最大.取阶段变量k=1,2,3共分三个阶段0.决策变量k x 表示第k 阶段分配的数量,状态变量k s 表示从第k 阶段至第3阶段可供分配的总数量,则状态转移方程为k k k x s s −=+1允许决策集合 {}k k k k k s x x s D ≤≤=0|)(, 允许状态集合1{06},{6}k k k S s s S =≤≤=,递推方程为1144()max{(,).()}()1(3,2,1)k k k k k k k f s r s x f s f s k ++= ==当k=3时,有3333*3333330()max{},x s f s x s x s ≤≤===当k=2时,有{}{}32220332022)(max )(max )(2222x s x s f x s f s x s x −=⋅=≤≤≤≤令322222)()(x s x x −=ϕ,则)4()()(2222222x s x s x −−=′ϕ 再由22()0x ϕ′=得22x s =或224s x =,又由直接验证可知22(04s ϕ′′<,故224sx =为)(22x ϕ的极大值点.这时4*2222227(),2564s f s s x ==当k=1时,有令4112111)(25627)(x s x x −⋅=ϕ,则)62()(25627)(11311111x s x s x x −−=′ϕ再令 0)(11=′x ϕ 得3,,011111s x s x x === 又由直接验证可知11(03s ϕ′′<,故113sx =为11()x ϕ的极大值点.这时1122*11111102()max{8}2,2s x s f s x s x ≤≤===当k=2时,有{}{}2222201122022)(24max )(4max )(2222x s x s f x s f s x s x −+=+=≤≤≤≤令2222222)(24)(x s x x −+=ϕ,则)(48)(22222x s x x −−=′ϕ. 由0)(22=′x ϕ得223s x =.但由于012)(22>=′′x ϕ,所以223s x =为最小值点.故极大值点必在区间[0,2s ]的端点,计算两端点的函数值22222224)(,2)0(s s s ==ϕϕ并比较其大小可知极大值点为22x s =.这时22224)(s s f =当k=3时,有{})(max )(223310/03333s f s s f s x +=≤≤{}2333310/0)10(4max 33x s s s x −+=≤≤但320s ≤,所以取320s =,得{}233303)1020(4max )20(23x x f s x −+=≤≤由直接验证可知,30x =为极大值点.故0,1600)20(*33==x f又02,02020;20,20101*12212*2332===−=−====−=s x x s s s x x s s ,即,最优解为0,20,0*3*2*1===x x x目标函数最优值为1600.以上几个例子中,由于是将状态变量和决策变量都是作为连续变量看待的,且指标函数和状态转移方程都有确定的解析表达式,求极值时所用的方法是微积分中的方法,所以我们把这类问题的求解方法统称为动态规划的解析法.6.4.2 动态规划的列表法在多阶段决策问题中,当指标函数没有明确的解析表达式(例如用数值表给出),或者对变量有整数要求时,则不能用解析法求解,只能用列表法(数值计算法)求解,下面举例说明.例6.4-4 (资源分配问题) 设有6810×元资金用于扩建三个工厂投资数均为整数(单位为610元),每个工厂的利润增长额与投资数有关,详细数据见表6.4-1(单位:610元).表6.4-1 投资与利润增长的关系问应如何确定这三个工厂的投资数,使总的利润增长额为最大?解 将问题分为三个阶段,即把向第k 个工厂进行投资作为第k 个阶段,k =3,2,1.第k 阶段初,选取可用于向第k 个工厂至第3个工厂进行的投资数,作为该阶段的状态变量,用k s 表示.选取用于第k 个工厂的投资数作为决策变量,用k x 表示,显然每个阶段的允许决策集合为(){|0}k k k k k D s x x s =≤≤,因每阶段初可用的投资数是上阶段初可用的投资数减去上阶段用去的投资数,故状态转移方程为1,(1,2,3)k k k s s x k +=−=.用()k k g x 表示给工厂k 分配资金k x 时得到的利润增长额,故指标函数可写为3,3i11,3()()()k k k ii k k k k V g x g x g x V =++=+=+∑设用()k k f s 表示从k 阶段状态k s 开始采用最优策略时的利润增长额,则有11()max{()()},()k k k k k k k k k f s g x f s x D s ++=+∈因问题中只有三个工厂,故假想的第4阶段初拥有的投资数已不可能促使这三个工厂利润额的增长,故边界条件44()0.f s = 动态规划递推方程为144()max{()()}()0,(3,2,1)k k k k k k k f s g x f s x f s k +=+−== (1)当3k =时,可用于投资的只有第3个工厂,投资额33(0,1,2,,8)s s =L 全部给第3个工厂,最大利润增长额为:3333333()max{()},()f s g x x D s =∈根据这个关系式,由表6.4-1中数据,得表7.4-2的结果表6.4-2 仅投资第三个工厂的情况 (单位:610元) 状态3s0 1 2 3 4 5 6 7 8 33()f s0 4 26 40 45 50 5l 52 53 对应决策*3x12345678(2)当2k =时,可用于投资的工厂为2和3.这时有222232222()max{()()}0f s g x f s x x s =+−≤≤2s 可能取得值为0,1,2,3,4,5,6,7,8具体计算步骤见表6.4-3.(3)当1k =时,可用于投资的工厂为1,2和3.这时有111121111()max{()()}0f s g s f s x x s =+−≤≤利用动态规划方程1s 分别求出不同值时的11()f s 及*11()x s .计算步骤见表6.4-4.表6.4-3 投资2,3两工厂的情况表6.4-4 投资三个工厂的情况由表6.4-4可知,当1s 6810=×时,投资给第1个工厂的金额为4×610元,即1(8)4x =×610(元);当62410s =×时,查表6.4-3知投资给第2个工厂的金额为4×610元,即62(4)410x =× (元);当30s =时,查表6.4-2知,投资给第3个工厂的金额为0,即3(0)0x =; 即最优策略为,6410×元,6410×元,0元. 预期最大投资增长额为140×610元.。
第6章动态规划
第6章 动态规划动态规划(Dynamic Programming )是解决多阶段决策过程最优化的一种有用的数学方法。
它是由美国学者Richard .Bellman 在1951年提出的,1957年他的专著《动态规划》一书问世,标志着运筹学的一个重要分支-动态规划的诞生.动态规划也是一种将多变量问题转化为单变量问题的一种方法。
在动态规划中,把困难的多阶段决策问题变换成一系列相互联系的比较容易的单阶段问题一个个地求解。
动态规划是考察解决问题的一种途径 ,而不是一种特殊的算法,不像线性规划那样有统一的数学模型和算法(如单纯形法).事实上,在运用其解决问题的过程中还需要运用其它的优化算法。
因此,动态规划不像其它方法局限于解决某一类问题,它可以解决各类多阶段决策问题。
动态规划在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
本教材主要介绍动态规划的基本概念、理论和方法,并通过典型的案例说明这些理论和方法的应用。
6.1动态规划的基本理论6.1.1多阶段决策过程的数学描述有这样一类活动过程,其整个过程可分为若干相互联系的阶段,每一阶段都要作出相应的决策,以使整个过程达到最佳的活动效果。
任何一个阶段(stage ,即决策点)都是由输入(input )、决策(decision )、状态转移律(transformation function )和输出(output )构成的,如图6-1(a )所示.其中输入和输出也称为状态(state ),输入称为输入状态,输出称为输出状态。
第6章-动态规划
求解过程
由最后一个阶段的优化开始,按逆向顺序逐步 向前一阶段扩展,并将后一阶段的优化结果带 到扩展后的阶段中去,以此逐步向前推进,直 至得到全过程的优化结果。
f1
(
A)
min
dd11
( (
A, A,
B1) B2 )
ff22((BB12))
min
4 9
9 11
13
d1( A, B3) f2 (B3)
5 13
其最短路线是A→ B1→C2 →D2 →E ,相应的决 策变量是u1(A)=B1
因此,最优策略序列是:
u1(A) =B1, u2(B1)=C2, u3(C2)=D2, u4(D2)=E
5 8 C2 4 6 4
4 C3 2
C3
D1 4 2 6
D2 9 7
D3 5
D4
E1 1 F
E2 2
E5
F
动态规划的逆序解法与顺序解法
逆序(递推)解法:即由最后一段到第一段逐步 求出各点到终点的最短路线,最后求出A点到E点 的最短路线。运用逆序递推方法的好处是可以始 终盯住目标,不致脱离最终目标。 顺序解法:其寻优方向与过程的行进方向相同, 求解时是从第一段开始计算逐段向后推进,计算 后一阶段时要用到前一段求优的结果,最后一段 的计算结果就是全过程的最优结果。
B1
A
4+9=13
d(u1)+f2
B2
B3
f1(s1) u1*
动态规划问题标准版文档
线性规划、非线性规划等静态的规划问题也可以通过适当地引入阶段的概念,应用动态规划方法加以解决。 航天飞机飞行控制问题:由于航天飞机的运动的环境是不断变化的,因此就要根据航天飞机飞行在不同环境中的情况,不断地决定航
状态 状态 状态 状态 天飞机的飞行方向和速度(状态),使之能最省燃料和实现目的(如软着落问题)。 1 2 n 在低负荷下生产时,产品的年产量h和投入生产的机器数量u2的关系为
g=g(u1)
精品课程《运筹学》
这时,机器的年完好率为a,即如果年初完好机器 的数量为u,到年终完好的机器就为au, 0<a<1。
在低负荷下生产时,产品的年产量h和投入生产 的机器数量u2的关系为
h=h(u2)
相应的机器年完好率b, 0< b<1。
假定开始生产时完好的机器数量为s1。要求制
定一个五年计划,在每年开始时,决定如何重新 分配完好的机器在两种不同的负荷下生产的数量, 使在五年内产品的总产量达到最高。
决策达到最优效果。 在多阶段决策过程中,系统的动态过程可以按照时间进程分为状态相互联系而又相互区别的各个阶段;
找到不同时刻的最优决策以及整个过程的最优策略。 机器负荷分配问题:某种机器可以在高低两种不同的负荷下进行生产。 找到不同时刻的最优决策以及整个过程的最优策略。 要求制定一个五年计划,在每年开始时,决定如何重新分配完好的机器在两种不同的负荷下生产的数量,使在五年内产品的总产量达
解决。
优策略。 线性规划、非线性规划等静态的规划问题也可以通过适当地引入阶段的概念,应用动态规划方法加以解决。
机器负荷分配问题:某种机器可以在高低两种不同的负荷下进行生产。 在高负荷下进行生产时,产品的年产量g和投入生产的机器数量u1的关系为
第九章动态规划
2 A 5 1
12 14 6 10 B2 4 13 12 B3 11 B1
C1 C2 C3
3 9 6 5 8 10 D1 5 2 D2 E
解:设阶段k=1,2,3,4依次表示4个阶段选路的过程; 状态sk表示k阶段初可能处的位置; 决策xk表示k阶段初可能选择的路; 阶段指标vk表示k阶段与所选择的路段相应的路长; 指标函数 vk4 =
vk
0 0 5 0 5 10 0 5 10 11 0 5 10 11 11 0 5 10 11 11 11
vk+fk+1
0+0 0+4 5+0 0+6 5+4 10+0 0+11 5+6 10+4 11+0 0+12 5+11 10+6 11+4 11+0 0+12 5+12 10+11 11+6 11+4 11+0
D D
1
D1
5 2 E
D2 fk
5 2
8 7 12
P
1 2
kn
E E D D D D D D
1
5 2 3 9 6 5 8 10
50 20 35 92 65 5 2 85 10 2
DE DE
C1D1E C2D2E C3D2E
2
C1
2
3
C2 C3
1
2
1
2
k
Sk
B1 B2
xk
C C C C C C
第一节 动态规划的基本概念与方法
一、多阶段决策问题 1. 时间阶段的例子(机器负荷问题) 某厂有1000台机器,现需作一个五年计划, 以决定每年安排多少台机器投入高负荷生产(产 量大但损耗也大)可使五年的总产量最大。
动态规划-例题众多-详细讲解
步骤2:状态转移方程:
步骤3:以自底向上的方法来计算最优解
12
程序的实现
BuyTicks(T, R)
1 n ← length[T]
2 f[0] ← 0
3 f[1] ← T[1]
4 for i ← 2 to n do
5
f[i] ← f[i-2]+R[i-1]
6
if f[i] > f[i-1]+T[i] then
n 0 1 2 3 4 5 6 7 8 9 10 F(n) 1 1 2 3 5 8 13 21 34 55 89
2
递归 vs 动态规划
递归版本:
F(n)
1 if n=0 or n=1 then
2
return 1
3 else
4
return F(n-1) + F(n-2)
太慢!
动态规划:
F(n)
1 A[0] = A[1] ← 1
这里是某支股票的价格清单: 日期 1 2 3 4 5 6 7 8 9 10 11 12 价格 68 69 54 64 68 64 70 67 78 62 98 87 最优秀的投资者可以购买最多4次股票,可行方案中的一种是: 日期 2 5 6 10 价格 69 68 64 62 输入 第1行: N (1 <= N <= 5000),股票发行天数 第2行: N个数,是每天的股票价格。 输出 输出文件仅一行包含两个数:最大购买次数和拥有最大购买次数的方案数(<=231) 当二种方案“看起来一样”时(就是说它们构成的价格队列一样的时候),这2种方 案被认为是相同的。
你的任务是,已知所有N位同学的身高,计算最少需要 几位同学出列,可以使得剩下的同学排成合唱队形。
动态规划作业完整
动态规划作业1、1、设某工厂自国外进口一部精密机器,由机器制造厂至出口港有三个港口可供选择,而进口港又有三个可供选择,进口后可经由两个城市到达目的地,其间的运输成本如图中所标的数字,试求运费最低的路线?把A看作终点,该问题可分为4个阶段。
f k(S k)表示从第K阶段点S k到终点A的最短距离。
f4(B1)=20,f4(B2)=40,f4(B3)=30f3(C1)=min[d3(C1,B1)+ f4(B1), d3(C1,B2)+ f4(B2), d3(C1,B3)+ f4(B3) ]=70,U3(C1)= B2 或B3f3(C2)=40 ,U3(C2)= B3f3(C3)=80 ,U3(C3)= B1或B2 或B3f2(D1)=80 ,U2(D1)= C1f2(D2)=70 ,U2(D2)= C2f1(E)=110 ,U1(E)= D1或D2所以可以得到以下最短路线,E→D1→C1→B2 / B3→AE→D2→C2→B3→A2、习题4-2解:1)将问题按地区分为三个阶段,三个地区的编号分别为1、2、3;2)设Sk表示为分配给第k个地区到第n个地区的销售点数,Xk表示为分配给第k个地区的销售点数,S k+1=S k-X kPk(Xk)表示为Xk个销售点分到第k个地区所得的利润值fk(Sk)表示为Sk个销售点分配给第k个地区到第n个地区的最大利润值3)递推关系式:fk(Sk)=max[ Pk(Xk)+ f k+1(S k-X k) ] k=3,2,1f4(S4)=04)从最后一个阶段开始向前逆推计算第三阶段:设将S3个销售点(S3=0,1,2,3,4)全部分配给第三个地区时,最大利润值为:f3(S3)=max[P3(X3)] 其中X3=S3=0,1,2,3,4表1第二阶段:设将S2个销售点(S2=0,1,2,3,4)分配给乙丙两个地区时,对每一个S2值,都有一种最优分配方案,使得最大盈利值为:f2(S2)=max[ P2(X2)+ f3(S2-X2) ]其中,X2=0,1,2,3,4表2第一阶段:设将S1个销售点(S1=4)分配给三个地区时,则最大利润值为:f1(S1)=max[ P1(X1)+ f2(4-X1) ]其中,X1=0,1,2,3,4表3然后按计算表格的顺序反推,可知最优分配方案有两个:最大总利润为531)由X1*=2,X2*=1,X3*=1。
动态规划
*=s
max {[8u5 5(s5 u5 )] 0u s
k 5
5时,f5(s5)有最大值,相应的有
f 4 ( s 4 ) max {[8u 4 5(s4 u 4 )] f 5 [0.7u 4 0.9(s4 u 4 )]}
0 u 4 s 4
=
0 u 4 s 4
2 2
2 2
9
3.动态规划方法的基本步骤
k=1时有
f1 ( s1 ) 0max {8u1 5(s1 u1 )+ 20.8[0.7u1 0.9(s1 u1 )]} u s
1 1
=
0u1 s1
max {22.55u1 23.7( s1 u1 )}
当取u1*=0时, f1(s1)有最大值,即 f1(s1)=23.7s1,因为s1=1000,故 f1(s1)=23700个产品. 按照上述计算顺序寻踪得到下述计算结果:
4 4
= max {8u 4 5( s 4 u 4 ) 18.5u5 7500}
0 u 4 s 4
= max {8u 4 5(s4 u 4 ) 18.5[0.7u 4 0.9(s4 u 4 )] 7500}
0u 4 s 4
= max {21.7 s 4 0.75u 4 7500}
k=1,2,3,4,5
7
3.动态规划方法的基本步骤
6.边界条件为 f 51 (s51 ) 0 下面采用逆序递推计算法,从第5年度开始 递推计算。 k=5时有 f 5 (s5 ) 0maxs {[8u5 5(s5 u5 )] f6 (s6 )} u
k 5
,
显然,当u5 f5(s5)=8s5
(完整版)动态规划问题常见解法
(完整版)动态规划问题常见解法动态规划问题常见解法一、背包问题1. 0/1背包问题0/1背包问题是动态规划中的经典问题,解决的是在背包容量固定的情况下,如何选择物品放入背包,使得总价值最大化。
常见的解法有两种:记忆化搜索和动态规划。
记忆化搜索是一种自顶向下的解法,通过保存子问题的解来避免重复计算,提高效率。
动态规划是一种自底向上的解法,通过填表格的方式记录每个子问题的解,最终得到整个问题的最优解。
2. 完全背包问题完全背包问题是在背包容量固定的情况下,如何选择物品放入背包,使得总价值最大化,且每种物品可以选择任意个。
常见的解法有两种:记忆化搜索和动态规划。
记忆化搜索和动态规划的思路和0/1背包问题相似,只是在状态转移方程上有所不同。
二、最长公共子序列问题最长公共子序列问题是指给定两个序列,求它们之间最长的公共子序列的长度。
常见的解法有两种:递归和动态规划。
递归的思路是通过分别考虑两个序列末尾元素是否相等来进一步缩小问题规模,直至问题规模减小到边界情况。
动态规划的思路是通过填表格的方式记录每个子问题的解,最终得到整个问题的最优解。
三、最短路径问题最短路径问题是指在加权有向图或无向图中,求解从一个顶点到另一个顶点的最短路径的问题。
常见的解法有两种:Dijkstra算法和Bellman-Ford算法。
Dijkstra算法是通过维护一个距离表,不断选择距离最短的顶点来更新距离表,直至找到目标顶点。
Bellman-Ford算法是通过进行多次松弛操作,逐步缩小问题规模,直至找到目标顶点或发现负权环。
总结:动态规划是一种解决最优化问题的常见方法,它通过分组子问题、定义状态、确定状态转移方程和填表格的方式,来得到整个问题的最优解。
在解决动态规划问题时,可以采用记忆化搜索或者动态规划的策略,具体选择哪种方法可以根据问题的特点和优化的需要来决定。
(完整word版)TSP问题的动态规划解法
TSP问题的动态规划解法第十七组:3103038028 郑少斌3103038029 王瑞锋3103038035 江飞鸿3103038043 韩鑫3103055004 唐万强1.TSP问题简介旅行商问题(Traveling Salesman Problem,简称TSP, 亦称为货单郎问题)可以描述为:对于N 个城市,它们之间的距离已知,有一旅行商要从某一城市走遍所有的城市,且每一城市只能经过一次,最后回到出发的城市,问如何选择路线可使他走过的路径最短。
这是一个典型的组合优化问题。
它有很强的现实意义,可以应用于交通运输,物资调配,旅游线路设置。
对于了解某个国家地理分布也有一定的现实意义。
这个问题的解法有很多种,在这里我们尝试使用最优控制中的动态规划的相关知识来进行求解。
2.TSP问题分析对于这个问题,我们首先想到的是应用穷举法进行解答,但是这个方法时间和空间的复杂度很高。
从表面上看,TSP 问题很简单,其实则不然。
对于N 个城市的TSP,存在的可能路径为(N-1)!/2条,当N较大时,其数量是惊人的。
计算每条路经都需求出N 个距离之和,这样各种路径及其距离之和的计算量正比与N!/2.用搜索法要求就规模大的TSP是不现实的。
例如使用1GFLOPs 次的计算机搜索TSP 所需的时间如下表所示 城市数7152050100200加法量 3105.2⨯ 11105.6⨯ 18102.1⨯ 64105.1⨯ 157105⨯ 37410搜索时间s 5105.2-⨯1.8h350yy 48105⨯ y 14210y 35810由上可知,对于这个问题采用穷举法进行解答是不现实的,这就要求我们采用其他的方法进行解答。
3. 其他求解TSP 问题的方法*贪心法a. 所谓贪心法,就是在组合算法中,将每一步都取局部最优的求解方法。
b. 下表表示用贪心法求解TSP 的过程。
先将各城市间的距离用行列式形式表示,主对角线上用∞表示。
第二节 动态规划
第二节动态规划动态规划是近来发展较快的一种组合算法,是运筹学的一个分支,是解决多阶段决策过程最优化的一种数学方法。
我们可以用它来解决最优路径问题,资源分配问题,生产调度问题,库存问题,装载问题,排序问题,设备更新问题,生产过程最优控制问题等等。
在生产和科学实验当中,有一类活动的过程,可将它分成若干个阶段,在它的每个阶段要作出决策,从而使全局达到最优。
当各个阶段决策确定后,就组成一个决策序列,因而也就决定了整个过程的一条活动路线。
这种把一个过程看作一个前后相关具有链状结构的多阶段过程就称为多阶段决策过程。
所谓动态是指在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前的状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生,故有"动态"的含义。
下面,我们结合最短路径问题来介绍动态规划的基本思想。
)。
从点O到点U,可以按经过的路径,分成七个阶段,分别为:O->AB->CDE->FGHJ->KLMN->PQR->ST->U。
最短路径有一个重要特性:如果点O经过点H到达点U是一条最短路径,则在这条最优路径上由点H 出发到达点U的子路径,是由点H出发到达点U所有可能选择的不同路径的最短路径(证明略)。
根据这一特点,寻找最短路径的时候,可以从最后一段开始,用由后向前逐段递推的方法,求出个点到点U的最短路径。
如若考虑到从点O到点U的最短路径,也是该路径上个点到点的最短路径,令O点到U点的最短距离为dO,A点到U点的最短距离为dA,...,故有:dO=min{2+dA,1+dB},dA=min{3+dC,2+dD},dB=min{2+dD,3+dE},................dQ=min{5+dT,2+dS}.下面按照动态规划的方法,将上例从最后一段开始计算,由后向前逐步递推移至O点。
计算步骤如下:阶段7:从S点或T点到达U点,这时各自只有一种选择,故:dS=2;dT=3;阶段6:出发点有P,Q,R三个,其中Q点到达U点有两种选择,或是经过S点,或是经过T点,故:dQ=min{2+dS,5+dT}=min{4,8}=4;dP=min{1+dS}=min{3}=3;dR=min{3+dT}=min{6}=6;阶段5:出发点有K,L,M,N四个,同理有:dK=min{3+dP}=min{6}=6;dL=min{2+dP,4+dq}=min{5,8}=5;dM=min{2+dQ,4+dR}=min{6,10}=6;dN=min{4+dR}=min{10}=10;阶段4:出发点有F,G,H,J四个,同理有:dF=min{2+dK}=min{8}=8;dG=min{1+dK,3+dL}=min{7,8}=7;dH=min{1+dL,1+d}=min{6,7}=6;dJ=min{3+dM,3+dN}=min{9,13}=9;阶段3:出发点有C,D,E三个,同理有:dC=min{2+dF,2+dG}=min{10,9}=9;dD=min{4+dG,2+dH}=min{11,8}=8;dE=min{1+dH,2+dJ}=min{7,11}=7;阶段2:出发点有A,B两个,同理有:dA=min{3+dC,2+dD}=min{12,10}=10;dB=min{2+dD,3+dE}=min{10,10}=10;阶段1:出发点是O,同理有:dO=min{2+dA,1+dB}=min{12,11}=11.由此得到全过程的最短路径是11,并且可以由以上推导过程反推得最短的路线是:O->B->D->H->L->P->S->U;或O->B->E->H->L->P->S->U。
动态规划(完整)
(3) 决策、决策变量
所谓决策就是确定系统过程发展的方案,
决策的实质是关于状态的选择,是决策者
从给定阶段状态出发对下一阶段状态作出
的选择。
用以描述决策变化的量称之决策变量, 和状态变量一样,决策变量可以用一个数, 一组数或一向量来描述.也可以是状态变量
的函数,记以 xk xk (sk ) ,表示于 k 阶段状
动态规划的分类:
• 离散确定型 • 离散随机型 • 连续确定型 • 连续随机型
动态规划的特点:
• 动态规划没有准确的数学表达式和定义 精确的算法, 它强调具体问题具体分析,
依赖分析者的经验和技巧。
• 与运筹学其他方法有很好的互补关系, 尤 其在处理非线性、离散性问题时有其独 到的特点。
通常多阶段决策过程的发展是通过状态的一系列变换来 实现的。一般情况下,系统在某个阶段的状态转移除与本阶 段的状态和决策有关外,还可能与系统过去经历的状态和决 策有关。因此,问题的求解就比较困难复杂。而适合于用动 态规划方法求解的只是一类特殊的多阶段决策问题,即具有 “无后效性”的多阶段决策过程。
4 6
C1
3
B2 3
4T
3 3
C2
阶段指标函数:
vk sk , xk cskxk
5
A3
B3
过程指标(阶段递推)函数:
fk(sk ) min
vk (sk , xk )
fk
1
(sk
1 )
k= 4
f4 (C1) = 3, f4 (C2) = 4
2
k=3
f3(B1)=min{1+f4(C1)=4*, 4+f4(C2)=8}=4
(6) 指标函数
用来衡量策略或子策略或决策的效果的 某种数量指标,就称为指标函数。它是定义 在全过程或各子过程或各阶段上的确定数量 函数。对不同问题,指标函数可以是诸如费 用、成本、产值、利润、产量、耗量、距离、 时间、效用,等等。
动态规划(二)70页PPT文档
【输入】
第一行一个整数N(N<100)。接下来有N 行,每一行描述一个人的信息,信息之间用 空格隔开。姓名是长度不超过20的字符
双层动态规划
农 田 个 数(count.pas) 你的老家在河北农村。过年时,你回老家去拜年。你家有一片NM
农田,将其看成一个NM的方格矩阵,有些方格是一片水域。你的农 村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总 共包含了多少个不存在水域的正方形农田。 两个正方形农田不同必须至少包含下面的两个条件中的一条: 边长不相等 左上角的方格不是同一方格
110
000
分析
(1)设F[I,J]表示以方格(I,J)为右下角,可以得到的最 大无水正方形边长,那么显然如果(I,J)是水域,F[I, J]=0;否则F[I,J]=Min{F[I-1,J],F[I,J-1],F[I-1,J1]}+1 (2)求出了F数组的值后,我们可以用F1[I]表示F数组中,值 为I的个数。 (3)显然,假定边长为I的正方形数目为Sum[I],那么有 Sum[I]=Sum[I+1]+F1[I] (4)最后只要算出Sum数组各个值的和为问题的解。
输入
输入数据第一行为两个由空格分开的正整数N、M(1<=m<n<=1000)
第2行到第N+1行每行有M个数字(0或1),描述了这一片农田。0表示这 个方格为水域,否则为农田(注意:数字之间没有空格,而且每行不会出 现空格)
动态规划1(qh)
4 1 C3
B2
2
2
C2 3
5 B1 4
3 C1 3
D3 5
E2
3
2
D2
4
F
4
2 E1
D1
A
B
C
D
E
F
动态规划的函数方程(DP)
建立DP函数方程是指确定过 程的阶段及阶段数,规定状态变 量和决策变量的取法,给出各阶 段的状态集合,允许决策集合, 状态转移方程和指标函数等。
在上面的计算过程中,利用了第 k阶段与第k+1阶段的关系:
f3(C1)=MIN r(C1,D1)+ f4(D1) r(C1,D2)+ f4(D2)
=MIN(3+6,3+5)=8 最短路线: C1——D2——E2——F 最优解: d3*(C1)= D2
4 A3
4 1 C3
B2
2
2
C2 3
5 B1 4
3 C1 3
D3 5
E2
3
2
D2
4
F
4
2 E1
D1
A
B
C
D
4
F
4
2 E1
D1
A
B
C
D
E
F
d1
r (S 1,d 1 (S 1))+ f2(S 2) f 1(S 1) d 1 (S 1)
S1
B1
B2
A
15
14
14
B2
4 A3
4 1 C3
B2
2
2
C2 3
5 B1 4
3 C1 3
D3 5
E2
3
动态规划——精选推荐
动态规划动态规划思想是将前⾯处理的结果记录下来,供后来的处理过程直接使⽤01背包有N件物品和⼀个容量为V的背包。
第i件物品的体积是c[i],价值是w[i]。
求解将哪些物品装⼊背包可使价值总和最⼤。
f[i,v] = max(f[i-1][v], f[i-1][v-c[i]] + w[i])答:⼀开始总是以为f[i-1][v-c[i]] + w[i]求的是i-1的重量+w[i],这样肯定⽐前⾯那个⼤,那max有什么⽤,原来要减去v-c[i]的容量爬楼梯假设你正在爬楼梯。
需要n阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。
你有多少种不同的⽅法可以爬到楼顶呢?注意:给定n是⼀个正整数。
答:f(n) = f(n-1) + f(n-2)最长递增⼦序列给你⼀个整数数组nums ,找到其中最长严格递增⼦序列的长度。
⼦序列是由数组派⽣⽽来的序列,删除(或不删除)数组中的元素⽽不改变其余元素的顺序。
例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的⼦序列。
答:f(n) = max(f(i<n))+1不同的⼦序列给定⼀个字符串s和⼀个字符串t,计算在s的⼦序列中t出现的个数。
字符串的⼀个⼦序列是指,通过删除⼀些(也可以不删除)字符且不⼲扰剩余字符相对位置所组成的新字符串。
(例如,"ACE"是"ABCDE"的⼀个⼦序列,⽽"AEC"不是)题⽬数据保证答案符合32位带符号整数范围。
答:dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1]当遍历到t[i]=s[j]时,即最后⼀个字符相等,这时有两种情况⼀种是t[i]匹配了s[j],个数相当是dp[i - 1][j - 1]⼆种是t[i]没匹配了s[j],那肯定是匹配了s[j]之前的字符,个数相当是dp[i][j - 1],所有两者相加当遍历到t[i]!=s[j]时,t[i]肯定不匹配s[j],所以个数只有dp[i][j - 1]让字符串成为回⽂串的最少插⼊次数给你⼀个字符串s,每⼀次操作你都可以在字符串的任意位置插⼊任意字符。
动态规划DOC
动态规划转移方程1. 资源问题1-----机器分配问题总公司拥有高效生产设备M台,准备分给下属的N个公司。
各分公司若获得这些设备,可以为国家提供一定的盈利。
问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。
其中M<=15,N<=10。
分配原则:每个公司有权获得任意数目的设备,但总台数不得超过总设备数M。
数据文件格式为:第一行保存两个数,第一个数是设备台数M,第二个数是分公司数N。
接下来是一个M*N的矩阵,表明了第I个公司分配J台机器的盈利。
用机器数来做状态,数组F[I,J]表示前I个公司分配J台机器的最大盈利。
则状态转移方程为:F[I,j]:=max(f[i-1,k]+w[i,j-k])2. 资源问题2------01背包问题有N件物品和一个容量为V的背包。
第i件物品的费用是c,价值是w。
求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
F[I,j]:=max(f[i-1,j-v[i]]+w[i],f[i-1,j]);3. 线性动态规划1-----朴素最长非降子序列设有由n个不相同的整数组成的数列,记为:a(1),a(2),……,a(n)且a(i)<>a(j) (i<>j)例如3,18,7,14,10,12,23,41,16,24。
若存在i1<I2<I3< span < ie …>且有a(i1)<A(I2)< span … <a(ie)<>则称为长度为e的不下降序列。
如上例中3,18,23,24就是一个长度为4的不下降序列,同时也有3,7,10,12,16,24长度为6的不下降序列。
程序要求,当原数列给出之后,求出最长的不下降序列。
F[i]:=max{f[j]+1}4. 剖分问题1-----石子合并在一个园形操场的四周摆放N堆石子(N≤100),现要将石子有次序地合并成一堆。
动态规划新版
第6章动态规划动态规划是我们要介绍的几种算法设计方法中难度最大的一种,它建立在最优原则的基础上。
采用动态规划方法,可以高效地解决许多用贪婪算法或分而治之算法无法解决的问题。
在介绍动态规划的原理之后,将分别考察动态规划方法在解决背包问题、图象压缩、矩阵乘法链、最短途径、无交叉子集等方面的应用。
1算法思想和贪婪算法同样,在动态规划中,可将一个问题的解决方案视为一系列决策的结果。
不同的是,在贪婪算法中,每采用一次贪婪准则便做出一个不可撤回的决策,而在动态规划中,还要考察每个最优决策序列中是否包含一个最优子序列。
例6-1[最短路经]考察下图中的有向图。
假设要寻找一条从源节点s=1到目的节点d=5的最短途径,即选择此途径所通过的各个节点。
第一步可选择节点2,3或4。
假设选择了节点3,则此时所规定解的问题变成:选择一条从3到5的最短途径。
假如3到5的途径不是最短的,则从1开始通过3和5的途径也不会是最短的。
所以在最短途径问题中,假如在的第一次决策时到达了某个节点v,那么不管v是如何拟定的,此后选择从v到d的途径时,都必须采用最优策略。
例6-2[0/1背包问题]考察前面的0/1背包问题。
如前所述,在该问题中需要决定x1 … x n的值。
假设按i=1,2,…,n的顺序来拟定x i的值。
假如置x1=0,则问题转变为相对于其余物品(即物品2,3,…,n),背包容量仍为c的背包问题。
若置x1=1,问题就变为关于最大背包容量为c- w1的问题。
现设r {c,c-w1}为剩余的背包容量。
在第一次决策之后,剩下的问题便是考虑背包容量为r时的决策。
不管x1是0或是1,[x2,…,x n]必须是第一次决策之后的一个最优方案,假如不是,则会有一个更好的方案[y2,…,y n],因而[x1,y2,…,y n]是一个更好的方案。
假设n=3,w=[100,14,10],p=[20,18,15],c=116。
若设x1=1,则在本次决策之后,可用的背包容量为r=116-100=16。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章动态规划规划问题的最终目的就是确定各决策变量的取值,以使目标函数达到极大或极小。
在线性规划和非线性规划中,决策变量都是以集合的形式被一次性处理的;然而,有时我们也会面对决策变量需分期、分批处理的多阶段决策问题。
所谓多阶段决策问题是指这样一类活动过程:它可以分解为若干个互相联系的阶段,在每一阶段分别对应着一组可供选取的决策集合;即构成过程的每个阶段都需要进行一次决策的决策问题。
将各个阶段的决策综合起来构成一个决策序列,称为一个策略。
显然,由于各个阶段选取的决策不同,对应整个过程可以有一系列不同的策略。
当过程采取某个具体策略时,相应可以得到一个确定的效果,采取不同的策略,就会得到不同的效果。
多阶段的决策问题,就是要在所有可能采取的策略中选取一个最优的策略,以便得到最佳的效果。
动态规划(dynamic programming)同前面介绍过的各种优化方法不同,它不是一种算法,而是考察问题的一种途径。
动态规划是一种求解多阶段决策问题的系统技术,可以说它横跨整个规划领域(线性规划和非线性规划)。
当然,由于动态规划不是一种特定的算法,因而它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,动态规划必须对具体问题进行具体的分析处理。
在多阶段决策问题中,有些问题对阶段的划分具有明显的时序性,动态规划的“动态”二字也由此而得名。
动态规划的主要创始人是美国数学家贝尔曼(Bellman)。
20世纪40年代末50年代初,当时在兰德公司(Rand Corporation)从事研究工作的贝尔曼首先提出了动态规划的概念。
1957年贝尔曼发表了数篇研究论文,并出版了他的第一部著作《动态规划》。
该著作成为了当时唯一的进一步研究和应用动态规划的理论源泉。
1961年贝尔曼出版了他的第二部著作,并于1962年同杜瑞佛思(Dreyfus)合作出版了第三部著作。
在贝尔曼及其助手们致力于发展和推广这一技术的同时,其他一些学者也对动态规划的发展做出了重大的贡献,其中最值得一提的是爱尔思(Aris)和梅特顿(Mitten)。
爱尔思先后于1961年和1964年出版了两部关于动态规划的著作,并于1964年同尼母霍思尔(Nemhauser)、威尔德(Wild)一道创建了处理分枝、循环性多阶段决策系统的一般性理论。
梅特顿提出了许多对动态规划后来发展有着重要意义的基础性观点,并且对明晰动态规划路径的数学性质做出了巨大的贡献。
动态规划在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
本教材主要介绍动态规划的基本概念、理论和方法,并通过典型的案例说明这些理论和方法的应用。
§7.1 动态规划的基本理论1.1多阶段决策过程的数学描述有这样一类活动过程,其整个过程可分为若干相互联系的阶段,每一阶段都要作出相应的决策,以使整个过程达到最佳的活动效果。
任何一个阶段(stage,即决策点)都是由输入(input)、决策(decision)、状态转移律(transformation function)和输出(output)构成的,如图7-1(a)所示。
其中输入和输出也称为状态(state),输入称为输入状态,输出称为输出状态。
图7-1由于每一阶段都有一个决策,所以每一阶段都应存在一个衡量决策效益大小的指标函数,这一指标函数称为阶段指标函数,用n 表示。
显然g n 是状态变量S n 和决策变量d n 的函数,即g n = r (S n ,d n ),如图7-1(b )所示。
显然,输出是输入和决策的函数,即:,(1n n n d S f S =+ (7-1)式(7-1)即为状态转移律。
在由N 个阶段构成的过程里,前一个阶段的输出即为后一个阶段的输入。
1.2 动态规划的基本概念动态规划的数学描述离不开它的一些基本概念与符号,因此有必要在介绍多阶段决策过程的数学描述的基础上,系统地介绍动态规划的一些基本概念。
1. 阶段(stage )阶段是过程中需要做出决策的决策点。
描述阶段的变量称为阶段变量,常用k 来表示。
阶段的划分一般是根据时间和空间的自然特征来进行的,但要便于将问题的过程转化为多阶段决策的过程。
对于具有N 个阶段的决策过程,其阶段变量k =1,2,…,N 。
2. 状态(state )状态表示每个阶段开始所处的自然状况或客观条件,它描述了研究问题过程的状况。
状态既反映前面各阶段系列决策的结局,又是本阶段决策的一个出发点和依据;它是各阶段信息的传递点和结合点。
各阶段的状态通常用状态变量S k 来加以描述。
作为状态应具有这样的性质:如果某阶段状态给定后,则该阶段以后过程的发展不受此阶段以前各阶段状态的影响。
换句话说,过程的历史只能通过当前的状态来影响未来,当前的状态是以往历史的一个总结。
这个性质称为无后效性(the future is independent of the past )或健忘性(the process is forgetful )。
3. 决策(decision )决策是指决策者在所面临的若干个方案中做出的选择。
决策变量d k 表示第k 阶段的决策。
决策变量d k 的取值会受到状态S k 的某种限制,用D k (S k )表示第k 阶段状态为S k 时决策变量允许的取值范围,称为允许决策集合,因而有d k (S k )D k (S k )。
4. 状态转移律(transformation function )状态转移律是确定由一个状态到另一状态演变过程的方程,这种演变的对应关系记为S k+1 = T k (S k , d k )。
输 出 输 入 决 策 阶 段 状态转移 (a ) S n+1 S n d n Stage n g n = r (S n ,d n )(b )5. 策略(policy )与子策略(sub-policy )由所有阶段决策所组成的一个决策序列称为一个策略,具有N 个阶段的动态规划问题的策略可表示为:)}(,),(),({2211N N S d S d S d从某一阶段开始到过程终点为止的一个决策子序列,称为过程子策略或子策略。
从第k 个阶段起的一个子策略可表示为:)}(,),(),({11N N k k k k S d S d S d ++6. 指标函数指标函数有阶段指标函数和过程指标函数之分。
阶段指标函数是对应某一阶段决策的效率度量,用g k = r (S k ,d k )来表示;过程指标函数是用来衡量所实现过程优劣的数量指标,是定义在全过程(策略)或后续子过程(子策略)上的一个数量函数,从第k 个阶段起的一个子策略所对应的过程指标函数常用G k,N 来表示,即:),,,,,,(11,N N k k k k N k d S d S d S R G ++=构成动态规划的过程指标函数,应具有可分性并满足递推关系;即:N k k N k G g G ,1,+⊕=这里的⊕表示某种运算,最常见的运算关系有如下二种:(1) 过程指标函数是其所包含的各阶段指标函数的“和”,即:∑==Nk j j N k g G ,于是N k k N k G g G ,1,++=(2) 过程指标函数是其所包含的各阶段指标函数的“积”,即:∏==Nk j j N k g G ,于是N k k N k G g G ,1,+⨯=7. 最优指标函数从第k 个阶段起的最优子策略所对应的过程指标函数称为最优指标函数,可以用式(7-2)加以表示:}{)(1~N k k d k k g g g opt S f Nk ⊕⊕⊕=+ (7-2)其中“opt ”是最优化“optimization ”的缩写,可根据题意取最大“max ”或最小“min ”。
在不同的问题中,指标函数的含义可能是不同的,它可能是距离、利润、成本、产量或资源量等。
1.3 动态规划的数学模型动态规划的数学模型除包括式(7-2)外,还包括阶段的划分、各阶段的状态变量和决策变量的选取、允许决策集合和状态转移律的确定等。
如何获得最优指标函数呢?一个N 阶段的决策过程,具有如下一些特性:(1) 刚好有N 个决策点;(2) 对阶段k 而言,除了其所处的状态k S 和所选择的决策k d 外,再没有任何其它因素影响决策的最优性了;(3) 阶段k 仅影响阶段1+k 的决策,这一影响是通过1+k S 来实现的;(4) 贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。
根据贝尔曼(Bellman )最优化原理,可以将式(7-2)表示为递推最优指标函数关系式(7-3)或式(7-4):)}({}{)(111~++++=⊕⊕⊕=k k k d N k k d k k S f g opt g g g opt S f kN k (7-3))}({}{)(111~+++⨯=⊕⊕⊕=k k k d N k k d k k S f g opt g g g opt S f kN k (7-4)利用式(7-3)和式(7-4)可表示出最后一个阶段(第N 个阶段,即k=N )的最优指标函数:)}({)(11+++=N N N d N N S f g opt S f N(7-5))}({)(11++⨯=N N N d N N S f g opt S f N(7-6)其中)(11++N N S f 称为边界条件。
一般情况下,第N 阶段的输出状态1+N S 已经不再影响本过程的策略,即式(7-5)中的边界条件0)(11=++N N S f ,式(7-6)中的边界条件1)(11=++N N S f ;但当问题第N 阶段的输出状态1+N S 对本过程的策略产生某种影响时,边界条件)(11++N N S f 就要根据问题的具体情况取适当的值,这一情况将在后续例题中加以反映。
已知边界条件)(11++N N S f ,利用式(7-3)或式(7-4)即可求得最后一个阶段的最优指标函数)(N N S f ;有了)(N N S f ,继续利用式(7-3)或式(7-4)即可求得最后两个阶段的最优指标函数)(11--N N S f ;有了)(11--N N S f ,进一步又可以求得最后三个阶段的最优指标函数)(22--N N S f ;反复递推下去,最终即可求得全过程N 个阶段的最优指标函数)(11S f ,从而使问题得到解决。