导语
动态规划作为一门强有力的编程技术,一直以来在解编程题中都是利器。总感觉自己学习的时候总是学习几道题目,并没有深入理解。故打算做个动态规划专题,包括理论和题目解析。正好在学习《运筹学教程》,里面对运筹学的数学原理知识讲解较为透彻。再结合之前在算法中学习的知识,打算对动态规划做个专题总结。这是我在博客园上的第一篇博客,自己得坚持下去。
动态规划简介
动态规划是解决多阶段决策过程最优化的一种方法。该方法由美国科学家贝尔曼(R Bellman)等人在20世纪50年代初提出。多阶段决策过程,本意指这样一类特殊活动过程,可以按时间顺序分解成相互联系的阶段,称为“时段”,在每一个时段都要做出决策,全部过程的决策是一个决策序列。多阶段决策过程最优化目标是要达到整个活动过程的总体效果最优。
基本概念
1.阶段
按时间或者空间特征分解成若干相互联系的阶段,以便按次序求解每阶段,常用\(k\)表示阶段变量
2.状态
各阶段开始时的客观条件叫做状态。描述各阶段状态的变量称为状态变量,常用\(s_{k}\)表示第\(k\)阶段的状态变量,状态变量\(s_{k}\)的取值范围称为状态集合,用\(S_{k}\)表示。
3.决策和策略
各阶段的状态取定以后,就可以做出不同的决策,从而确定下一阶段的状态,这种决定称之为决策。表示决策的变量,称之为决策变量,常用\(u_k(s_k)\)表示第\(k\)阶段当状态为\(s_{k}\)时的决策变量。实际问题中,决策变量的取值往往限制在一定范围,称此范围为允许决策集合,常用\(D_k(s_k)\)表示第\(k\)阶段从状态\(s_{k}\)出发的允许决策集合,显然有\(u_{k}(s_k) \in D_k(s_k)\)。
策略:各段决策确定后,整个问题的决策序列就构成了一个决策序列。
\(p_{1,n}(s_1) = \{u_1(s_1), u_2(s_2), ... ,u_n(s_n) \}\)
4.状态转移方程
动态规划中本阶段的状态往往是上一阶段状态和上一阶段的决策结果。如果给定了第\(k\)段的状态\(s_{k}\),本阶段决策\(u_k(s_k)\),则第\(k+1\)段的状态\(s_{k+1}\)也就完全确定,关系式如下:
\(s_{k+1} = T_{k}(s_k, u_k)\),状态转移方程。
5.指标函数
用于衡量所选定策略优劣的数量指标称之为指标函数。它分为阶段指标函数和过程指标函数。
基本要素
1.将多阶段决策过程划分成恰当的阶段;
2.正确选取状态变量,使其满足无后效性;
3.确定决策变量及每阶段的允许决策集合;
4.正确写出状态转移方程;
5.正确写出指标函数的关系;
来源:https://www.cnblogs.com/ddhdzt/p/8883856.html