04. 动态规划

定义

动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。

动态规划是求解某类问题的一种方法,而不是一种特殊算法,没有标准的数学表达式和明确定义的一组规则。

动态规划的基本概念有:

  • 阶段:对整个过程的自然划分,阶段变量一般用 k=1,2,…,nk=1,2,\dots,nk=1,2,…,n 表示;

  • 状态:每个阶段开始时过程所处的自然状况,用 xkx_kxk​ 表示第 kkk 阶段的状态变量,用 XkX_kXk​ 表示第 kkk 阶段的允许状态集合;

  • 决策:一个阶段的状态确定后,作出各种选择从而演变到下一阶段的某个状态,用 uk(xk)u_k(x_k)uk​(xk​)​ 表示第 kkk​ 阶段处于状态 xkx_kxk​​ 时的决策变量,用 Uk(xk)U_k(x_k)Uk​(xk​) 表示 xkx_kxk​ 的允许决策集合;

  • 策略:决策组成的序列。由第 kkk 到第 jjj​ 阶段的子过程策略记
    pkj(xk)={uk(xk),…,uj(xj)} p_{kj}(x_k)=\{u_k(x_k),\dots,u_j(x_j)\} pkj​(xk​)={uk​(xk​),…,uj​(xj​)}

  • 状态转移方程:表示状态和决策确定下一状态的演变规律,记
    xk+1=Tk(xk,uk),k=1,2,…,n x_{k+1}=T_k(x_k,u_k),k=1,2,\dots,n xk+1​=Tk​(xk​,uk​),k=1,2,…,n

  • 指标函数:衡量过程优劣的数量指标,记
    Vk,n(xk,uk,xk+1,…,xn+1) V_{k,n}(x_k,u_k,x_{k+1},\dots,x_{n+1}) Vk,n​(xk​,uk​,xk+1​,…,xn+1​)

  • 最优值函数:使指标函数达到最优,记
    fk(xk)=optVk,n(xk,pkn) f_k(x_k)=\text{opt}V_{k,n}(x_k,p_{kn}) fk​(xk​)=optVk,n​(xk​,pkn​)
    其中 opt\text{opt}opt 可取 max⁡\maxmax 或 min⁡\minmin。

如果一个问题能用动态规划方法求解,可以按下列步骤建立动态规划的数学模型:

  1. 将过程划分成恰当的阶段;
  2. 正确选择状态变量 xkx_kxk​,确定允许状态集合 XkX_kXk​;
  3. 选择决策变量 uku_kuk​,确定允许决策集合 Uk(xk)U_k(x_k)Uk​(xk​);
  4. 写出状态转移方程;
  5. 确定阶段指标;
  6. 写出基本方程。

典型问题

最短路线问题

状态:各段的初始位置 xkx_kxk​;

决策:各个状态出发的走向 xk+1=uk(xk)x_{k+1}=u_k(x_k)xk+1​=uk​(xk​);

阶段指标:相邻两段状态间的距离 dk(xk,uk(xk))d_k(x_k,u_k(x_k))dk​(xk​,uk​(xk​));

指标函数:阶段指标之和;

最优值函数:由 xkx_kxk​​ 出发到终点的最短距离。

于是有基本方程:
fk(xk)=min⁡uk(xk)[dk(xk,uk(xk))+fk+1(xk+1)], f_k(x_k)=\min_{u_k(x_k)}[d_k(x_k,u_k(x_k))+f_{k+1}(x_{k+1})], fk​(xk​)=uk​(xk​)min​[dk​(xk​,uk​(xk​))+fk+1​(xk+1​)],

fn+1(xn+1)=0,k=n,…,1 f_{n+1}(x_{n+1})=0,k=n,\dots,1 fn+1​(xn+1​)=0,k=n,…,1

利用该模型就可以算出最短路线。

例子

对于下图

2
4
3
7
4
3
2
6
2
3
4
A
B1
B2
B3
C1
C2
D

可将其阶段划分为 k=1,2,3,4k=1,2,3,4k=1,2,3,4。

  • k=1k=1k=1 时,有允许状态集合 X1={A}X_1=\{A\}X1​={A};
  • k=2k=2k=2 时,有允许状态集合 X2={B1,B2,B3}X_2=\{B_1,B_2,B_3\}X2​={B1​,B2​,B3​};
  • k=3k=3k=3 时,有允许状态集合 X3={C1,C2}X_3=\{C_1,C_2\}X3​={C1​,C2​};
  • k=4k=4k=4 时,有允许状态集合 X4={D}X_4=\{D\}X4​={D};

进行逆序求解,令

f4(D)=0 f_4(D)=0 f4​(D)=0

则有

fk(xk)=min⁡uk(xk)[d(xk,uk(xk))+fk+1(xk+1)] f_k(x_k)=\min_{u_k(x_k)}[d(x_k,u_k(x_k))+f_{k+1}(x_{k+1})] fk​(xk​)=uk​(xk​)min​[d(xk​,uk​(xk​))+fk+1​(xk+1​)]

于是有

  • k=4k=4k=4 时:
    f4(D)=0 f_4(D)=0 f4​(D)=0

  • k=3k=3k=3​ 时:
    f3(C1)=d(C1,D)+f4(D)=3, f_3(C_1)=d(C_1,D)+f_4(D)=3, f3​(C1​)=d(C1​,D)+f4​(D)=3,

    f3(C2)=d(C2,D)+f4(D)=4. f_3(C_2)=d(C_2,D)+f_4(D)=4. f3​(C2​)=d(C2​,D)+f4​(D)=4.

  • k=2k=2k=2 时:
    f2(B1)=min⁡i[d(B1,Ci)+f3(Ci)]=d(B1,C2)+f3(C2)=8, f_2(B_1)=\min_{i}[d(B_1,C_i)+f_3(C_i)]=d(B_1,C_2)+f_3(C_2)=8, f2​(B1​)=imin​[d(B1​,Ci​)+f3​(Ci​)]=d(B1​,C2​)+f3​(C2​)=8,

    f2(B2)=min⁡i[d(B2,Ci)+f3(Ci)]=d(B2,C1)+f3(C1)=6, f_2(B_2)=\min_{i}[d(B_2,C_i)+f_3(C_i)]=d(B_2,C_1)+f_3(C_1)=6, f2​(B2​)=imin​[d(B2​,Ci​)+f3​(Ci​)]=d(B2​,C1​)+f3​(C1​)=6,

    f2(B3)=min⁡i[d(B3,Ci)+f3(Ci)]=d(B3,C2)+f3(C2)=6. f_2(B_3)=\min_{i}[d(B_3,C_i)+f_3(C_i)]=d(B_3,C_2)+f_3(C_2)=6. f2​(B3​)=imin​[d(B3​,Ci​)+f3​(Ci​)]=d(B3​,C2​)+f3​(C2​)=6.

  • k=1k=1k=1 时:
    f1(A)=min⁡i[d(A,Bi)+f2(Bi)]=d(A,B3)+f2(B3)=9. f_1(A)=\min_{i}[d(A,B_i)+f_2(B_i)]=d(A,B_3)+f_2(B_3)=9. f1​(A)=imin​[d(A,Bi​)+f2​(Bi​)]=d(A,B3​)+f2​(B3​)=9.

因此可得最短距离为 9,最短路径为
A→B3→C2→D A\to B_3\to C_2\to D A→B3​→C2​→D

生产计划问题

阶段:自然时间;

状态:每阶段开始时的存储量 xkx_kxk​;

决策:每个阶段的产量 uku_kuk​;

状态转移方程:
xk+1=xk+uk−dk x_{k+1}=x_k+u_k-d_k xk+1​=xk​+uk​−dk​
其中 dkd_kdk​ 为每个阶段的需求量;

阶段指标:阶段的生产成本和储存费之和,设每阶段开工成本为 aaa,生产单位数量产品成本为 bbb,每阶段单位数量产品储存费为 ccc,即
vk(xk,uk)=cxk+{a+buk,uk>00 v_k(x_k,u_k)=cx_k+\left\{\begin{aligned} &a+bu_k,u_k>0\\ &0 \end{aligned}\right. vk​(xk​,uk​)=cxk​+{​a+buk​,uk​>00​
指标函数:阶段指标之和;

最优值函数:从状态 xkx_kxk​ 出发到过程终结的最小费用,即
fk(xk)=min⁡uk[vk(xk,uk)+ff+1(xk+1)], f_k(x_k)=\min_{u_k}[v_k(x_k,u_k)+f_{f+1}(x_{k+1})], fk​(xk​)=uk​min​[vk​(xk​,uk​)+ff+1​(xk+1​)],

fn+1(xn+10)=0,k=n,…,1. f_{n+1}(x_{n+1}^0)=0,k=n,\dots,1. fn+1​(xn+10​)=0,k=n,…,1.

其中 xn+10x_{n+1}^0xn+10​ 表示过程终结时允许的存储量。

根据上述模型可解。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐