其实,在各种算法领域,动态规划的思想随处可见,用同事的话说,就是一种很朴素的方法,我之所以记录这么多文字,是今天看完动态规划,突然发现,有时候,静下心,好好理解理解最最基础的理论原理,你对这个算法的体会和理解会完全不一样。
动态规则是运筹学的一个分支, 它是解决多阶段决策过程最优化的一种数学方法。 大约产生于20世纪50年代。1951年美国数学家贝尔曼(R .Bellman)等人,根据一类多阶段决策问题的特点 , 把多阶段决策问题变换为一系列互相联系的单阶段问题 , 然后逐个加以解决。与此同时 , 他提出了解决这类问题的“ 最优性原理”, 研究了许多实 际问题 , 从而创建了解决最优化问题的一种新的方法——动态规划。他的名著“动态规划”于1957年出版 , 该书是动态规划的第一本著作。
动态规划的方法 , 在工程技术、企业管理、工农业生产及军事等部门中都有广泛的应用 , 并且获得了显著的效果。在企业管理方面 , 动态规划可以用来解决最优路径问题、资源分配问 题、生产调度问题 、库存问题 、装载问题 、排序问题 、设备更新问题 、生产 过程最优控制问题等等 , 所以它是现代企业管理中的一种重要的决策方法。许多问题用动态规划的方法去处理 , 常比线性规划或非线性规划更有成效。特别对于离散性的问题 , 由于解析数学无法施展其术 , 而动态规划的方法就成为非常有用的工具。应指出 , 动态规划是求解某类问题的一种方法 , 是考查问题的一种途径 , 而不是一种特殊算法 ( 如线性规划是一种算法)。因而, 它不像线性规划那样有一个标准的数学表达式和明确定义的一组规则, 而必须对具体问题进行具体分析处理。
动态规划模型的分类 , 根据多阶段决策过程的时间参量是离散的还是连续的变量 , 过程分为离散决策过程和连续决策过程。根据决 策过程的演变是确定性的还是随机性的 , 过程又可分为确定性决策过程和随机性决策 过程。组合起来就有离散确定性、离散随机 性、连续确定性、连续随机性四种决策过程模型。
在生产和科学实验中,有一类活动的过程, 由于它的特殊性, 可将过程分为若干个互相联系的阶段,在它的每一个阶段都需要作出决策, 从而使整个过程达到最好的活动效果。因此 , 各个阶段决策的选取不是任意确定的 , 它依赖于当前面临的状态 , 又影响以后的发展。当各个阶段决策确定后 , 就组成了一个决策序列 , 因而也就决定了整个过程的一条活动路线。这种把一个问题可看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,也称序贯决策过程。这种问题就称为多阶段决策 过程。
在多阶段决策问题中,各个阶段采取的决策, 一般来说是与时间有关的, 决策依赖于当前的状态, 又随即引起状态的转移, 一个决策序列就是在变化的状态中产生出来 的,故有“动态”的含义。因此, 把处理它的方法称为动态规划方法。但是, 一些与时间没有关系的 静态规划 ( 如线性规划 、非线性规划等 ) 问题 , 只要人为地引进“时间”因 素 , 也可把它视为多阶段决策问题 , 用动态规划方法去处理。
1. 阶段
把所给问题的过程, 恰当地分为若干个相互联系的阶段, 以便能按一定的次序去求解。描述阶段的变量称为阶段变量,常用 k表示。阶段的划分,一般是根据时间和空间的自然特征来划分,但要便于把问题的过程能转化为多阶段决策的过程。
2. 状态
状态表示每个阶段开始所处的自然状况或客观条件 , 它描述了研究问题过程的状况 ,又称不可控因素。通常一个阶段有若干个状态 , 一般第 k 阶段的状态就是第 k 阶段所有始点的集合。 描述过程状态的变量称为状态变量。它可用一个数、一组数或一向量(多维情形)来描述。常用 Sk 表示第 k 阶段的状态变量,这里所说的状态应具有下面的性质 : 如果某阶段状态给定后 , 则在这阶段以后过程的发展不受这阶段以前各段状态的影响。换句话说 , 过程的过去历史只能通过当前的状态去影响它未来的发展,当前的状态是以往历史的一个总结。这个性质称为无后效性(即马 尔科夫性)。
如果状态仅仅描述过程的具体特征 , 则并不是任何实际过程都能满足无后效性的要求。所以 , 在构造决策过程的动态规划模型时 , 不能仅由描述过程的具体特征这点着眼去规定状态变量 , 而要充分注意是否满足无后效性的要求。如果状态的某种规定方式可能
导致不满足无后效性 , 应适当地改变状态的规定方法 , 达到能使它满足无后效性的要求。例如,研究物体(把它看作一个质点)受外力作用后其空间运动的轨迹问题。从描述轨迹这点着眼,可以只选坐标位置( xk , yk , zk )作为过程的状态,但这样不能满足无后效性,因为即使知道了外力的大小和方向 , 仍无法确定物体受力后的运动方向和轨迹 , 只有把位置 ( xk , yk , zk )和速度( xk , yk , zk )都作为过程的状态变量, 才能确定物体运动下一步的方向 和轨迹 , 实现无后效性的要求。
3. 决策
决策表示当过程处于某一阶段的某个状态时 , 可以作出不同的决定 ( 或选择 ) , 从而确定下一阶段的状态 , 这种决定称为决策。在最优控制中也称为控制。描述决策的变量 , 称为决策变量。它可用一个数、一组数或一向量来描述。常用 uk (sk )表示第 k阶段当状态处于sk时的决策变量。它是状态变量的函数。在实际问题中 , 决策变量的取值往往限制在某一范围之内,此范围称为允许决策集合。常用 Dk ( sk )表示第 k阶段从状态sk出发的允许决策集合,显然有 uk (sk )∈Dk (sk )。
4. 策略
策略是一个按顺序排列的决策组成的集合。由过程的第 k 阶段开始到终止状态为止的过程,称为问题的后部子过程(或称为k子过程)。由每段的决策按顺序排列组成的决策函数序列{uk (sk ),⋯,un (sn )}称为 k子过程策略,简称子策略,记为 pk,n (sk )。即pk,n(sk)={uk(sk),uk+1 (sk+1),⋯,un(sn)}当 k=1时,此决策函数序列称为全过程的一个策略,简称策略,记为 p1, n (s1 )。即 p1,n(S1 )={u1 (s1 ),u2 (s2 ),⋯,un(sn)}在实际问题中,可供选择的策略有一定的范围, 此范围称为允许策略集合, 用 P 表示。从允许策略集合中找出达到最优效果的策略称为最优策略。
5. 状态转移方程
状态转移方程是确定过程由一个状态到另一个状态的演变过程。若给定第 k 阶段状态变量sk 的值,如果该段的决策变量uk 一经确定,第k+1阶段的状态变量sk+1的值也就 完全确定。即sk+1的值随sk和uk的值变化而变化。这种确定的对应关系 , 记为sk+1 =Tk(sk,uk)上式描述了由 k 阶段到 k + 1 阶段的状态转移规律, 称为状态转移方程。 Tk 称为状态转移函数。
6. 指标函数和最优值函数
用来衡量所实现过程优劣的一种数量指标 , 称为指标函 数。它是定义在全过程和所有后部子过程上确定的数量函数。常用 Vk, n 表示之。即Vk,n =Vk,n(sk,uk,sk+1 ,⋯,sn+1),k=1,2,⋯,n 对于要构成动态规划模型的指标函数 , 应具有可分离性 , 并满足递推关系。 即 Vk, n 可以表示为 sk 、uk 、Vk+ 1 , n 的函数。记为Vk,n(sk,uk,sk+1 ,⋯,sn+1)=ψk[sk,uk,Vk+1,n(sk+1,⋯,sn+1)]在实际问题中很多指标函数都满足这个性质。常见的指标函数的形式如下:
(1) 过程和它的任一子过程的指标是它所包含的各阶段的指标的和
(2) 过程和它的任一子过程的指标是它所包含的各阶段的指标的乘积
指标函数的最优值,称为最优值函数,记为 fk (sk )。它表示从第 k阶段的状态 sk 开始到第 n 阶段的终止状态的过程 , 采取最优策略所得到的指标函数值。在不同的问题中 , 指标函数的含义是不同的 , 它可能是距离、利润、成本、产品的产量或资源消耗等。
动态规划方法的关键在于正确地写出基本的递推关系式和恰当的边界条件(简言之为基本方程)。要做到这一点, 必须先将问题的过程分成几个相互联系的阶段, 恰当地选取状态变量和决策变量及定义最优值函数 , 从而把一个大问题化成一族同类型的子问题 , 然后逐个求解。即从边界条件开始 , 逐段递推寻优 , 在每一个子问题的求解中 , 均利用了它前面的子问题的最优化结果,依次进行, 最后一个子问题所得的最优解,就是整个问题的最优解。
在多阶段决策过程中,动态规划方法是既把当前一段和未来各段分开,又把当前效益和未来效益结合起来考虑的一种最优化方法。因 此 , 每段决策的选取是从全局来考虑的 , 与该段的最优选择答案一般是不同的。
在求整个问题的最优策略时,由于初始状态是已知的,而每段的决策都是该段状态的函数 , 故最优策略所经过的各段状态便可逐次变换得到 , 从而确定了最优路线。
给一个实际问题建立动态规划模型时 , 必须做到下面五点 :
(1) 将问题的过程划分成恰当的阶段;
(2) 正确选择状态变量 sk ,使它既能描述过程的演变,又要满足无后效性;
(3) 确定决策变量uk及每阶段的允许决策集合Dk(sk);
(4) 正确写出状态转移方程;
(5 ) 正确写出指标函数Vk, n的关系 , 它应满足下面三个性质 :
1 是定义在全过程和所有后部子过程上的数量函数;
2 要具有可分离性,并满足递推关系。即Vk,n(sk,kk,⋯,sn+1)=ψk[sk,uk,Vk+1,n(sk+1 ,uk+1,⋯,sn+1)]
3 函数ψk (sk ,uk ,Vk+ 1,n )对于变量 Vk+1,n要严格单调。
以上五点是构造动态规划模型的基础, 是正确写出动态规划基本方程的基本要素。而一个问题的动态规划模型是否正确给出 , 它 集中地反映在恰当的定义最优值函数和正确地写出递推关系式及边界条件上。
20 世纪 50 年代, R .Bellman 等人根据研究一类多阶段决策问题, 提出了最优性原理 (有的翻译成最优化原理) 作为动态规划的理论基础。用它去解决许多决策过程的优化问题。长期以来 , 许多动态规划的著作都用“ 依据最优化原理 , 则有⋯⋯”的提法去处理决策过程的优化问题。人们对用这样的一个简单的原理作为动态规划方法的理论根据很难理解。的确如此 , 实际上 , 这提法是给用动态规划方法去处理决策过程的优化问题披上神秘的色彩 , 使大家不能正确理解动态规划方法的本质。
下面将介绍“动态规划的最优性原理”的原文含义。并指出它为什么不是动态规划的理论基础 , 进而揭示动态规划方法的本质。其理论基础是“ 最优性定理”。
动态规划的最优性原理“: 作为整个过程的最优策略具有这样的性 质 : 即无论过去的状态和决策如何 , 对前面的决策所形成的状态而言 , 余下的诸决策必须构成最优策略。”简言之 , 一个最优策略的子策略总是最优的。
但是,随着人们深入地研究动态规划, 逐渐认识到: 对于不同类型的问题所建立严格定义的动态规划模型 , 必须对相应的最优性原理给以必要的验证。就是说 , 最优性原理不是对任何决策过程都普遍成立的 ; 而且“ 最优性原理”与动态规划基本方程 , 并不是无条件 等价的 , 两者之间也不存在确定的蕴含关系。 可见动态规划的基本方程在动态规划的理论和方法中起着非常重要作用。而反映动态规划基本方程的是最优性定理 , 它是策略最优性的充分必要条件 , 而最优性原理仅仅是策略最优性的必要条件 , 它是最优性定理的推论。在求解最优策略时 , 更需要的是其充分条件。所以 , 动态规划的基本方程或者说最优 性定理才是动态规划的理论基础。
动态规划优点:
(1) 易于确定全局最优解
(2) 能得到一族解,有利于分析结果。
(3) 能利用经验,提高求解的效率。
缺点:
(1) 到目前为止,没有一个统一的标准模型可供应用。
(2) 应用的局限性。由于构造动态规划模型时,状态变量必须满足“无后效性”条件,这条件不仅依 赖于状态转移规律,还依赖于允许决策集合和指标函数的结构,是一个相当强的条件。
(3) 在数值求解时,存在“维数障碍”。