【优化数学模型】2. 动态规划DP方法的求解思路
一、动态规划
1. 概述
多阶段决策问题,就是要在允许的决策范围内,选择一个最优决策使整个系统在预定标准下达到最佳效果。
动态规划 (dynamic programming,DP) 是用来解决多阶段决策过程最优化的一种数量方法。其特点在于,它可以把一个n维决策问题变换为几个一维最优化问题,从而一个一个地去解决。
与分而治之技术的不同之处在于,动态规划解决方案中的子问题是重叠的,因此解决一个子问题所需的一些相同步骤也需要用于其他子问题。
许多文章中提到动态规划会将其称为是一种经典的算法,需要指出的是,动态规划是1951年,美国数学家贝尔曼等人根据一类多阶段决策问题特性提出的解决这类问题的“最优化原理”,是其创建出的最优化问题的一种新思路,是求解一类问题的一种方法,是考察问题的一种途径,而不是一种算法。
在解决相应问题时,必须对具体问题进行具体分析,运用动态规划的原理和方法,建立相应的模型,然后再用动态规划方法去求解。
2. 最优性原理
应用动态规划设计使多阶段决策过程达到最优(成本最省、效益最高、路径最短等),依据动态规划的最优性原理:“作为整个过程的最优策略具有这样的性质,无论过去的状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略”。也就是说,最优决策序列中的任何子序列都是最优的。
3. 最优子结构特性
最优性原理体现为问题的最优子结构特性。当一个问题的最优解中包含了子问题的最优解时,则称该问题具有最优子结构特性。最优子结构特性使得在从较小问题的解构造较大问题的解时,只需考虑子问题的最优解,从而大大减少了求解问题的计算量。
二、示例:0-1背包问题
1. 问题描述
0-1背包问题是应用动态规划设计求解的典型案例。
已知有 N 种物品和一个可容纳 W 重量的背包,物品 i 的重量为 w i w_i wi ,产生的效益为 p i p_i pi 。在装包时物品 i 可以装入,也可以不装,但不可拆开装。即物品 i可产生的效益为 x i p i x_ip_i xip