第6章 动态规划动态规划(Dynamic Programming )是解决多阶段决策过程最优化的一种有用的数学方法。
它是由美国学者Richard .Bellman 在1951年提出的,1957年他的专著《动态规划》一书问世,标志着运筹学的一个重要分支-动态规划的诞生.动态规划也是一种将多变量问题转化为单变量问题的一种方法。
在动态规划中,把困难的多阶段决策问题变换成一系列相互联系的比较容易的单阶段问题一个个地求解。
动态规划是考察解决问题的一种途径 ,而不是一种特殊的算法,不像线性规划那样有统一的数学模型和算法(如单纯形法).事实上,在运用其解决问题的过程中还需要运用其它的优化算法。
因此,动态规划不像其它方法局限于解决某一类问题,它可以解决各类多阶段决策问题。
动态规划在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
本教材主要介绍动态规划的基本概念、理论和方法,并通过典型的案例说明这些理论和方法的应用。
6.1动态规划的基本理论6.1.1多阶段决策过程的数学描述有这样一类活动过程,其整个过程可分为若干相互联系的阶段,每一阶段都要作出相应的决策,以使整个过程达到最佳的活动效果。
任何一个阶段(stage ,即决策点)都是由输入(input )、决策(decision )、状态转移律(transformation function )和输出(output )构成的,如图6-1(a )所示.其中输入和输出也称为状态(state ),输入称为输入状态,输出称为输出状态。
由于每一阶段都有一个决策,所以每一阶段都应存在一个衡量决策效益大小的指标函数,这一指标函数称为阶段指标函数,用k v 表示.显然),(k k k u S v v =,如图6—1(b )所示.显然,输出是输入和决策的函数,即:),(1k k k u S r S =+ (6-1)式(6—1)为状态转移方程。
在由n 个阶段构成的过程里,前一个阶段的输出即为后一个阶段的输入。
6。
1.2动态规划的基本概念动态规划的数学描述离不开它的一些基本概念与符号,因此有必要在介绍多阶段决策过程的数学描述的基础上,系统地介绍动态规划的一些基本概念。
(1)阶段、阶段变量阶段是过程中需要做出决策的决策点。
描述阶段的变量称为阶段变量,常用k 来表示。
阶段的划分一般是根据时间和空间的自然特征来进行的,但要便于将问题的过程转化为多阶段决策的过程。
对于具有n 个阶段的决策过程,其阶段变量k =1,2,…,n 。
(2)状态、状态变量状态表示每个阶段开始所处的自然状况或客观条件,它描述了研究问题过程的状况。
状态既反映前面各阶段系列决策的结局,又是本阶段决策的一个出发点和依据;它是各阶段信息的传递点和结合点。
各阶段的状态通常用状态变量Sk 来加以描述。
作为状态应具有这样的性质:如果某阶段状态给定后,则该阶段以后过程的发展不受此阶段以前各阶段状态的影响。
换句话说,过程的历史只能通过当前的状态来影响未来,当前的状态是以往历史的一个总结.这个性质称为无后效性(the future is independent of the past )。
状态变量的取值有一定的允许集合或范围,此集合称为状态允许集合。
(3) 决策、决策变量过程的某一阶段、某个状态,可以做出不同的决定(选择),决定下一阶段的状态,这种决定称为决策.描述决策的变量,称为决策变量.决策变量是状态变量的函数,常用u k (s k )表示第k 阶段当状态为s k 时的决策变量。
在实际问题中决策变量的取值往往在某一范围之内,此范围称为允许决策集合.常用D k (s k )表示第k 阶段从状态s k 出发的允许决策集合,显然有 u k (s k )∈D k (s k )(4)状态转移方程多阶段决策过程可以在各个阶段进行决策,去控制过程发展的多段过程;其发展是通过一系列的状态转移来实现的;系统在某一阶段的状态转移不但与系统的当前的状态和决策有关,而且还与系统过去的历史状态和决策有关。
其状态转移方程如下(一般形式)),,,,,,(),,,(),(221112*********k k k k u s u s u s T s u s u s T s u s T s===+能用动态规划方法求解的多阶段决策过程是一类特殊的多阶段决策过程,即具有无后效性的多阶段决策过程。
(5) 策略策略是一个按顺序排列的决策组成的集合。
由过程的第k 阶段开始到终止状态为止的过程,称为问题的后部子过程(或称为k 子过程)。
由每段的决策按顺序排列组成的决策函数序列称为k 子过程策略,简称子策略,记为)(,k n k s p ,即{})(,),(),()(11,n n k k k k k n k s u s u s u s p ++=当k=1时,此决策函数序列成为全过程的一个策略,简称策略,记为)(1,1s p n 即{})(,),(),()(22111,1n n n s u s u s u s p =在实际问题中,可供选择的策略有一定范围,此范围称为允许策略集合,用p 表示.从允许策略集合中找出达到最优效果的策略称为最优策略。
(6)函数和最优值函数用来衡量所实现过程优劣的一种数量指标,称为指标函数,它是定义在全过程或所有后部子过程上确定的数量函数.V k, n 表示之.即n k s u s u s V V n k k k k n k n k ,,2,1),,,,,,(111,, ==+++动态规划模型的指标函数,应具有可分离性,并满足递推关系。
即n k V ,可以表示为k s k u n k V ,1+的函数.即有如下式子)],,,(,,[),,,,,(111,1111,+++++++=n k k n k k k k n k k k k n k s u s V u s s u s u s V ϕ常见的指标函数的形式有以下两种情况:情形1 过程和它的任一子过程的指标是它所包含的各阶段的指标和。
即()()u s v s us V jjnkj jn kknk ,,,,1,∑=+=其中),(u s v j j j 表示第j 阶段的阶段指标。
情形2过程和它的任意子过程的指标是它所包含的各阶段的指标的乘积。
即),(),,,(1,u s v s u s V j j j nkj n k k n k =+∏=最优值函数:表示从第k 阶段的状态s k 开始到第n 阶段的终止状态的过程,采取最优策略所得到的指标函数值。
即{}),,,()(1,,,sus V opt sf n kknk kku u nk+=(7)多阶段决策过程的数学模型 具有无后效性的多阶段决策过程⎪⎪⎩⎪⎪⎨⎧-=∈∈==+=+∑1,,1,),(..),(),,,(111,},,,{21 n n k U u S s u s T s t s u s v s u s V opt k k kkk k k k nj j j j n k k n k u u u n所谓求解多阶段决策过程问题,就是要求出① 最优策略,即最优决策序列},,,{**2*1n u u u②最优目标函数值),,,,(***1*1*,1*,1n n n n u s u s V V =(){}()s us v opt s f n kkn k kku u nk1,,,,,,+= (6—2)6.1.3动态规划的数学模型动态规划的数学模型除包括式(6—2)外,还包括阶段的划分、各阶段的状态变量和决策变量的选取、允许决策集合和状态转移律的确定等。
如何获得最优指标函数呢?一个n 阶段的决策过程,具有如下一些特性: (1)刚好有n 个决策点;(2)对阶段k 而言,除了其所处的状态k S 和所选择的决策k u 外,再没有任何其它因素影响决策的最优性了;(3) 阶段k 仅影响阶段1+k 的决策,这一影响是通过1+k S 来实现的;(4)贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。
根据贝尔曼(Bellman )最优化原理,可以将式(6-2)表示为递推最优指标函数关系式(6—3)或式(6—4):)}({}{)(111~++++=⊕⊕⊕=k k k u N k k u k k S f v opt v v v opt S f kNk (6—3) )}({}{)(111~+++⨯=⊗⊗⊗=k k k u N k k u k k S f v opt v v v opt S f kNk (6—4)利用式(6—3)和式(6-4)可表示出最后一个阶段(第n 个阶段,即k=n )的最优指标函数:)}({)(11+++=n n n u n n S f v opt S f n(6—5))}({)(11++⨯=n n n u n n S f v opt S f n(6-6)其中)(11++n n S f 称为边界条件。
一般情况下,第n 阶段的输出状态1+n S 已经不再影响本过程的策略,即式(6-5)中的边界条件0)(11=++n n S f ,式(6-6)中的边界条件1)(11=++n n S f ;但当问题第n 阶段的输出状态1+n S 对本过程的策略产生某种影响时,边界条件)(11++n n S f 就要根据问题的具体情况取适当的值,这一情况将在后续例题中加以反映。
已知边界条件)(11++n n S f ,利用式(6-3)或式(6-4)即可求得最后一个阶段的最优指标函数)(n n S f ;有了)(n n S f ,继续利用式(6—3)或式(6—4)即可求得最后两个阶段的最优指标函数)(11--n n S f ;有了)(11--n n S f ,进一步又可以求得最后三个阶段的最优指标函数)(22--n n S f ;反复递推下去,最终即可求得全过程n 个阶段的最优指标函数)(11S f ,从而使问题得到解决。
由于上述最优指标函数的构建是按阶段的逆序从后向前进行的,所以也称为动态规划的逆序算法.通过上述分析可以看出,任何一个多阶段决策过程的最优化问题,都可以用非线性规划(特殊的可以用线性规划)模型来描述;因此,从原则上讲,一般也可以用非线性规划(或线性规划)的方法来求解。