动态规划

  1. 动态规划概述
    动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。20世纪50年代美国数学家贝尔曼(Rechard Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优性原理,把多阶段决策过程转化为一系列单阶段问题逐个求解,创立了解决多阶段过程优化问题的新方法——动态规划。
    动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、装载等问题,用动态规划方法比用其它方法求解更为方便。
  2. 动态规划概念
    动态规划所处理的对象是多阶段决策问题。多阶段决策问题,是指这样的一类特殊的活动过程,问题可以分解成若干相互联系的阶段,在每一个阶段都要做出决策,形成一个决策序列,该决策序列也称为一个策略。对于每一个决策序列,可以在满足问题的约束条件下用一个数值函数(即目标函数)衡量该策略的优劣。多阶段决策问题的最优化求解目标是获取导致问题最优值的最优决策序列(最优策略),即得到最优解。
    例子 已知6种物品和一个可载重量为60的背包,物品i(i=1,2,…,6)的重量分别为(15,17,20,12,9,14),产生的效益分别为(32,37,46,26,21,30)。在装包时每一件物品可以装入,也可以不装,但不可拆开装。确定如何装包,使所得装包总效益最大。
    这就是一个多阶段决策问题,装每一件物品就是一个阶段,每一个阶段都要有一个决策:
    这一件物品装包还是不装。
    这一装包问题的约束条件为:
    目标函数为:
    对于这6个阶段的问题,如果每一个阶段都面临2个选择,则共存在26个决策序列。应用贪心算法,按单位重量的效益从大到小装包,得第1件与第6件物品不装,依次装第5、3、
    2、4件物品,这就是一个决策序列,或简写为序列(0,1,1,1,1,0),该策略所得总效益为130。第1件与第4件物品不装,第2、3、5、6件物品装包,或简写为序列(0,1,1,0,1,1),这一决策序列的总载重量为60,满足约束条件,使目标函数即装包总效益达最大值134,即最优值为134。
    因而决策序列(0,1,1,0,1,1)为最优决策序列,即最优解,这是应用动态规划求解的目标。
    在求解多阶段决策问题中,各个阶段的决策依赖于当时的状态并影响以后的发展,即引起状态的转移。一个决策序列是随着变化的状态而产生的。应用动态规划设计使多阶段决策过程达到最优(成本最省,效益最高,路径最短等),依据动态规划最优性原理:“作为整个过程的最优策略具有这样的性质,无论过去的状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略”。也就是说,最优决策序列中的任何子序列都是最优的。
    “最优性原理”用数学语言描述:假设为了解决某一多阶段决策过程的优化问题,需要依次作出n个决策D1,D2,…,Dn,如若这个决策序列是最优的,对于任何一个整数k,不论前面k个决策是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策序列Dk+1,Dk+2,…,Dn也是最优的。
    最优性原理体现为问题的最优子结构特性。当一个问题的最优解中包含了子问题的最优解时,则称该问题具有最优子结构特性。最优子结构特性使得在从较小问题的解构造较大问题的解时,只需考虑子问题的最优解,从而大大减少了求解问题的计算量。
    最优子结构特性是动态规划求解问题的必要条件。
    例如,在以后案例中求得在数字串847313926中插入5个乘号,使乘积最大的最优解为:
    8*4*731*3*92*6=38737152
    该最优解包含了在84731中插入2个乘号使乘积最大,插入方式为8*4*731;
    在7313中插入1个乘号使乘积最大,插入方式为731*3;
    在3926中插入2个乘号使乘积最大,插入方式为3*92*6。
    这些子问题的最优解,这就是最优子结构特性。
    最优性原理是动态规划的基础。任何一个问题,如果失去了这个最优性原理的支持,就不可能用动态规划设计求解。能采用动态规划求解的问题都需要满足以下条件:
    (1)问题中的状态必须满足最优性原理;
    (2)问题中的状态必须满足无后效性。
    所谓无后效性是指: “下一时刻的状态只与当前状态有关,而和当前状态之前的状态无关,当前状态是对以往决策的总结”。
  3. 动态规划实施步骤
    动态规划求解最优化问题,通常按以下几个步骤进行。
    (1)把所求最优化问题分成若干个阶段,找出最优解的性质,并刻划其结构特性。
    最优子结构特性是动态规划求解问题的必要条件,只有满足最优子结构特性的多阶段决策问题才能应用动态规划设计求解。
    (2)将问题发展到各个阶段时所处不同的状态表示出来,确定各个阶段状态之间的递推(或递归)关系,并确定初始(边界)条件。
    通过设置相应的数组表示各个阶段的最优值,分析归纳出各个阶段状态之间的转移关系,是应用动态规划设计求解的关键。
    (3)应用递推(或递归)求解最优值。
    递推(或递归)计算最优值是动态规划算法的实施过程。具体应用与所设置的表示各个阶段最优值的数组密切相关。
    (4)根据计算最优值时所得到的信息,构造最优解。
    构造最优解就是具体求出最优决策序列。通常在计算最优值时,根据问题具体实际记录更多的信息,根据所记录的信息构造出问题的最优解。
    以上步骤前3个是动态规划设计求解最优化问题的基本步骤。当只需求解最优值时,第4个步骤可以省略。若需求出问题的最优解,则必须执行第4个步骤。

你可能感兴趣的:(数学,动态规划)