文章目录
- 引言
- 5.1 动态规划的基本概念
- 首先明确什么是多阶段决策问题
- 5.2 动态规划的最短路径问题
- 贝尔曼最优化原理
- 建立动态规划模型的步骤
- 5.3 动态规划的投资分配问题
- 投资分配问题定义
- 投资分配问题的数学模型
- 5.4 动态规划的背包问题
- 背包问题定义
- 背包问题数学模型
引言
动态规划(dynamic programming)是运筹学的一个分支,是解决多阶段决策过程
最优化的一种方法。该方法是由美国数学家贝尔曼(R.E.Bellman)等人在20世纪50年代初提出的。Bellman在1957年出版了《Dynamic Programing》一书,是动态规划领域中的第一本著作。动态规划问也以来,在经济管理、工程技术等方面得到了广泛应用。例如最短路线、库存管理、资源分配、装载问题等。
5.1 动态规划的基本概念
首先明确什么是多阶段决策问题
-
多阶段决策问题定义
多阶段决策问题中,系统的动态过程可以按照时间进程分为状态相互联系而又相互区别的多个阶段,每个阶段都要进行决策,目的是使整个动态过程的决策达到最优 -
阶段
指的是决策问题需要做出决策的步数。阶段总数常记为n,对应n个阶段的决策问题。阶段的序号常记为k,称为阶段变量,k=1,2,…,n。k即可以是顺序编号也可以是逆序编号,常用顺序编号 -
状态
各阶段开始时的客观条件,第k阶段的状态常用状态变量 s k s_k sk表示,各个阶段状态变量取值的集合称为状态集合,用 S k = { s 1 , s 2 , . . . s k } S_k=\{s_1,s_2,...s_k\} Sk={s1,s2,...sk}表示 -
决策
是指从某阶段的某状态出发,在若干个不同方案中做出决策的变量,称为决策变量,用 u k ( s k ) u_k(s_k) uk(sk)表示 -
状态转移方程
从上一阶段的某一状态值转变为下一阶段某一状态值的转移规律,用 s k + 1 = T k ( s k , u k ) s_{k+1}=T_k(s_k,u_k) sk+1=Tk(sk,uk)
-
无后效性(马尔科夫性)
- 层面一:在推导后面阶段的状态的时候,我们只关心前一个阶段的状态值,不关心这个状态是怎么一步一步推导出来的。
- 层面二: 某阶段状态一旦确定,就不受之后阶段的决策影响。
-
指标函数:分为阶段指标函数和过程指标函数。在不同的问题中,指标函数的含义是不同的,它可能是距离、利润、成本、产量或资源消耗等
- 阶段指标函数:指的是第k阶段从状态 s k s_k sk出发,采取决策 u k u_k uk时的效益,用 v k ( s k , u k ) v_k(s_k,u_k) vk(sk,uk)表示。
- 过程指标函数:从第k阶段的某状态出发,采取子策略 p k n = { u k , u k + 1 , . . . , u n } p_{kn}=\{u_k,u_{k+1},...,u_n\} pkn={uk,uk+1,...,un}时所得到的阶段效益之和: V k n ( s k , p k n ) = ∑ j = k n v j ( s j , u j ) V_{kn}(s_k,p_{kn})=\sum_{j=k}^{n}v_j(s_j,u_j) Vkn(sk,pkn)=∑j=knvj(sj,uj)
-
最优指标函数:
表示从第k阶段状态为 s k s_k sk 时采用最佳策略 p k n ∗ p_{k n}^* pkn∗ 到过程终止时的最佳效益。记为
f k ( s k ) = V k n ( s k , p k n ∗ ) = opt p k n ∈ D k n ( s k ) V k n ( s k , p k n ) f_k\left(s_k\right)=V_{k n}\left(s_k, p_{k n}^*\right)=\underset{p_{k n}∈D_{k n}\left(s_k\right)}{\operatorname{opt}} V_{k n}\left(s_k, p_{k n}\right) fk(sk)=Vkn(sk,pkn∗)=pkn∈Dkn(sk)optVkn(sk,pkn)
其中opt可根据具体情况取max 或min -
动态规划基本方程
为逐段递推求和的依据,一般为:
逆序递推方程?是的 -
最优性原理
最优策略的子策略必为最优
5.2 动态规划的最短路径问题
贝尔曼最优化原理
一个过程的最优策略具有这样的性质,即无论其初始状态和初始决策如何,今后的诸决策,对以第一个决策所形成的状态作为初始状态的过程而言,必须构成最优策略
建立动态规划模型的步骤
-
划分阶段
划分阶段是运用动态规划求解多阶段决策问题的第一步,在确定多阶段特性后,按时间或空间先后顺序,将过程划分为若干相互联系的阶段。对于静态问题要人为地赋予“时间”概念,以便划分阶段。 -
正确选择状态变量
选择变量既要能确切描述过程演变又要满足无后效性,而且各阶段状态变量的取值能够确定。一般地,状态变量的选择是从过程演变的特点中寻找。 -
确定决策变量及允许决策集合
通常选择所求解问题的关键变量作为决策变量,同时要给出决策变量的取值范围,即确定允许决策集合。 -
确定状态转移方程
根据k 阶段状态变量和决策变量,写出k+1阶段状态变量,状态转移方程应当具有递推关系 -
确定阶段指标函数和最优指标函数,建立动态规划基本方程
阶段指标函数是指第k 阶段的收益,最优指标函数是指从第k 阶段状态出发到第n 阶段末所获得收益的最优值,最后写出动态规划基本方程。
5.3 动态规划的投资分配问题
投资分配问题定义
现有数量为a(万元)的资金,计划分配给n个工厂,用于扩大再生产。问题是如何确定各工厂的资金数,使得总的利润为最大。
这不就是资源分配吗?
投资分配问题的数学模型
具体过程见PPT 5.3动态规划的投资分配问题
5.4 动态规划的背包问题
背包问题定义
有一个徒步旅行者,其可携带物品重量的限度为a公斤,设有n种物品可供他选择装入包中。已知每种物品的重量及使用价值(作用),问此人应如何选择携带的物品(各几件),使使用价值最大?
背包问题数学模型
这个模型是整数规划问题。可以利用分支定界法,割平面法,但这里可以用动态规划对其求解:
具体过程见PPT 5.4动态规划的背包问题