动态规划
从数学的视角来看,动态规划是一种运筹学方法,是在多轮决策过程中的最优方法。
从分治法的视角来看,每个子问题必须相互独立。但在多轮决策中,这个假设显然不成立。这也是动态规划方法产生的原因之一
动态规划的基本方法
动态规划问题没有标准化的解题方法,但它有一些宏观层面通用的方法论:
下面的 k 表示多轮决策的第 k 轮:
- 分阶段,将原问题划分成几个子问题。一个子问题就是多轮决策的一个阶段,它们可以是不满足独立性的。
- 找状态,选择合适的状态变量 Sk。它需要具备描述多轮决策过程的演变,更像是决策可能的结果。
- 做决策,确定决策变量 uk。每一轮的决策就是每一轮可能的决策动作,例如 D2 的可能的决策动作是 D2 -> E2 和 D2 -> E3。
- 状态转移方程。这个步骤是动态规划最重要的核心,即 sk+1= uk(sk) 。
- 定目标。写出代表多轮决策目标的指标函数 Vk,n。
- 寻找终止条件。
动态规划的基本概念:
- 策略,每轮的动作是决策,多轮决策合在一起常常被称为策略。
- 策略集合,由于每轮的决策动作都是一个变量,这就导致合在一起的策略也是一个变量。我们通常会称所有可能的策略为策略集合。因此,动态规划的目标,也可以说是从策略集合中,找到最优的那个策略。
具有如下几个特征的问题,可以采用动态规划求解:
- 最优子结构。它的含义是,原问题的最优解所包括的子问题的解也是最优的。例如,某个策略使得 A 到 G