动态规划之最优化原理与动态规划方程

动态规划

引言

  1951年,美国数学家贝尔曼(R.Bellman)等根据一类所谓多阶段决策问题的特性,提出了解决这类问题的“最优化原理”,并研究了许多实际问题,从而创立了最优化的一个新分支----动态规划
  动态规划没有统一的数学模型,对不同的问题要采用不同的方法去建立它们的模型。有了模型之后,要想得到数值解,仍然没有统一的处理方法。这是应当注意的。

1 动态规划原理

1.1 最短路问题及其解法

最短路问题及其解法

1.2 动态规划的基本概念和术语

动态规划的基本概念和术语

1.3 最优化原理与动态规划方程

1.3.1 最优化原理

  对于多阶段决策问题,作为整个过程的最优策略必然具有这样的性质:无论过去的状态和决策如何,就所形成的状态而言,余下的诸策略必然构成一个最优子策略。多阶段决策问题的这一规律称为最优化原理

1.3.2 逆序动态规划方程

  对后部指标函数 F k , n F_{k,n} Fk,n及最优函数 f k ( x k ) f_k(x_k) fk(xk)

  (1)当 F k , n = ∑ j = k n d ( x j , u j ) F_{k,n}=\sum\limits_{j=k}^nd(x_j,u_j) Fk,n=j=knd(xj,uj)时, f k ( x k ) 满 足 递 推 方 程 f_k(x_k)满足递推方程 fk(xk)
{ f k ( x k ) = o p t u k ∈ D k { d ( x k , u k ) + f k + 1 ( x k + 1 ) } , f n + 1 ( x n + 1 ) = 0 , k = n , n − 1 , ⋯   , 2 , 1 \left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_k \in D_k} \{ d(x_k,u_k) + f_{k+1}(x_{k+1})\} ,\\ f_{n+1}(x_{n+1})=0, k=n,n-1,\cdots,2,1 \end{array} \right. {fk(xk)=ukDkopt{d(xk,uk)+fk+1(xk+1)}fn+1(xn+1)=0,k=n,n1,,2,1

  (2)当 F k , n = ∏ j = k n d ( x j , u j ) F_{k,n}=\prod\limits_{j=k}^nd(x_j,u_j) Fk,n=j=knd(xj,uj)时, f k ( x k ) 满 足 递 推 方 程 f_k(x_k)满足递推方程 fk(xk)
{ f k ( x k ) = o p t u k ∈ D k { d ( x k , u k ) ⋅ f k + 1 ( x k + 1 ) } , f n + 1 ( x n + 1 ) = 1 , k = n , n − 1 , ⋯   , 2 , 1 \left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_k \in D_k} \{ d(x_k,u_k) \cdot f_{k+1}(x_{k+1})\} ,\\ f_{n+1}(x_{n+1})=1, k=n,n-1,\cdots,2,1 \end{array} \right. {fk(xk)=ukDkopt{d(xk,uk)fk+1(xk+1)}fn+1(xn+1)=1,k=n,n1,,2,1

  利用这两个递推公式原则上可求出最优函数 f 1 ( x 1 ) f_1(x_1) f1(x1),称这两种递推公式为逆序动态规划方程。这种求最优函数的方法叫逆序法

1.3.3 顺序动态规划方程

  对前部指标函数 F 1 , k F_{1,k} F1,k及最优函数 f k ( x k ) f_k(x_k) fk(xk)

  (1)当 F 1 , k = ∑ j = 2 k d ( u j − 1 , x j ) F_{1,k}=\sum\limits_{j=2}^kd(u_{j-1},x_j) F1,k=j=2kd(uj1,xj)时, f k ( x k ) f_k(x_k) fk(xk)满足递推方程
{ f k ( x k ) = o p t u k − 1 ∈ D k − 1 { d ( u k − 1 , x k ) + f k − 1 ( x k − 1 ) } , f 1 ( x 1 ) = 0 , k = 2 , 3 , ⋯   , n , n + 1 \left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_{k-1} \in D_{k-1}} \{ d(u_{k-1},x_k) + f_{k-1}(x_{k-1})\} ,\\ f_1(x_1)=0, k=2,3,\cdots,n,n+1 \end{array} \right. {fk(xk)=uk1Dk1opt{d(uk1,xk)+fk1(xk1)}f1(x1)=0,k=2,3,,n,n+1

  (2)当 F 1 , k = ∏ j = k n d ( u j − 1 , x j ) F_{1,k}=\prod\limits_{j=k}^nd(u_{j-1},x_j) F1,k=j=knd(uj1,xj)时, f k ( x k ) f_k(x_k) fk(xk)满足递推方程
{ f k ( x k ) = o p t u k − 1 ∈ D k − 1 { d ( u k − 1 , x k ) ⋅ f k − 1 ( x k − 1 ) } , f 1 ( x 1 ) = 1 , k = 2 , 3 , ⋯   , n , n + 1 \left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_{k-1} \in D_{k-1}} \{ d(u_{k-1},x_k) \cdot f_{k-1}(x_{k-1})\} ,\\ f_1(x_1)=1, k=2,3,\cdots,n,n+1 \end{array} \right. {fk(xk)=uk1Dk1opt{d(uk1,xk)fk1(xk1)}f1(x1)=1,k=2,3,,n,n+1

  利用这两个递推公式原则上可求出最优函数 f n + 1 ( x n + 1 ) f_{n+1}(x_{n+1}) fn+1(xn+1),称这两种递推公式为顺序动态规划方程。这种求最优函数的方法叫顺序法

1.4 动态规划基本定理

  基本定理  对于 n n n阶段决策问题,若 p 1 , n ∗ p^{\ast}_{1,n} p1,n是最优策略,则对任意满足 1 < k < n 1<k<n 1<k<n的自然数 k k k,其子策略 p k , n ∗ p^{\ast}_{k,n} pk,n(或 p 1 , k ∗ p^{\ast}_{1,k} p1,k)对于以
x k = T k − 1 ( x k − 1 , u k − 1 ∗ ) ( 或 x k − 1 = T k − 1 ( u k − 1 ∗ , x k ) ) x_k = T_{k-1}(x_{k-1},u^{\ast}_{k-1}) (或x_{k-1} = T_{k-1}(u^{\ast}_{k-1}, x_{k})) xk=Tk1(xk1,uk1)xk1=Tk1(uk1,xk)
为初始状态的 k k k n n n(或 1 1 1 k k k)段子过程来说,也必定是最优策略。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态规划算法最优化原理是通过将原问题分解为相对简单的子问题来求解复杂问题的最优解。动态规划算法的核心思想是将原问题分解为若干个子问题,通过求解子问题的最优解来得到原问题的最优解。动态规划算法的求解过程需要满足三个要素:最优子结构、无后效性和重叠子问题。其中,最优子结构指的是原问题的最优解可以通过子问题的最优解来求解;无后效性指的是子问题的解一旦确定,就不会受到后面阶段的决策影响;重叠子问题指的是子问题之间存在重复计算的情况。 动态规划算法的具体步骤如下: 1. 确定状态:将原问题分解为若干个子问题,确定每个子问题的状态。 2. 确定状态转移方程:根据子问题之间的递推关系,确定状态转移方程。 3. 初始化:确定初始状态的值。 4. 递推求解:按照状态转移方程,从初始状态开始递推求解子问题的最优解。 5. 求解原问题:根据子问题的最优解,求解原问题的最优解。 举个例子,假设有一个背包问题,要求在给定的物品中选择一些放入背包中,使得背包中物品的总价值最大,但是背包的容量是有限的。这个问题可以通过动态规划算法来求解。具体步骤如下: 1. 确定状态:将原问题分解为若干个子问题,每个子问题表示在前i个物品中选择一些放入容量为j的背包中的最大价值。因此,状态可以表示为f(i,j)。 2. 确定状态转移方程:根据子问题之间的递推关系,可以得到状态转移方程:f(i,j)=max{f(i-1,j), f(i-1,j-w[i])+v[i]},其中w[i]表示第i个物品的重量,v[i]表示第i个物品的价值。 3. 初始化:当背包容量为0时,背包中物品的总价值为0,因此f(i,0)=0;当没有物品可选时,背包中物品的总价值也为0,因此f(0,j)=0。 4. 递推求解:按照状态转移方程,从初始状态开始递推求解子问题的最优解。 5. 求解原问题:根据子问题的最优解,求解原问题的最优解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值