mobile wallpaper 1
1642 字
4 分钟
第 7 章(续) 动态规划应用举例
2026-06-29

1. 资源分配问题#

1.1 问题描述与通用模型#

资源分配是将有限的一种或多种资源(资金、设备、原材料等)合理分配给多个使用者(工厂、产品等),以使总收益(或利润)最大。 设资源总量为 aa,分配给第 ii 种产品 xix_i 的资源,其收益为 gi(xi)g_i(x_i)

  • 数学模型maxi=1ngi(xi)\max \sum_{i=1}^n g_i(x_i) s.t. {i=1nxi=axi0, 且为整数/连续\text{s.t. } \begin{cases} \sum_{i=1}^n x_i = a \\ x_i \ge 0, \text{ 且为整数/连续} \end{cases}
  • 动态规划建模要素
    • 阶段:以资源的分配对象(第 kk 种产品)作为阶段。
    • 状态变量 sks_k:表示可分配给第 kk 种产品至第 nn 种产品的剩余资源量。
    • 决策变量 xkx_k:表示分配给第 kk 种产品的资源量。
    • 状态转移方程sk+1=skxks_{k+1} = s_k - x_k
    • 允许决策集0xksk0 \le x_k \le s_k
    • 递推方程fk(sk)=max0xksk{gk(xk)+fk+1(skxk)}f_k(s_k) = \max_{0 \le x_k \le s_k} \{ g_k(x_k) + f_{k+1}(s_k - x_k) \} 边界条件:fn+1(sn+1)=0f_{n+1}(s_{n+1}) = 0

1.2 离散设备分配案例(表上作业求解)#

  • 问题描述:将 5 台高效率设备分配给甲、乙、丙三个工厂。各工厂分得设备后的年盈利如表所示:

    分配台数工厂甲利润工厂乙利润工厂丙利润
    0000
    1354
    27106
    391111
    4121112
    5131112
  • 求解结果:通过逆序查表计算,最大总盈利为 21 万元。最优分配方案有两个:

    1. 甲分配 0 台,乙分配 2 台,丙分配 3 台。(总盈利:0+10+11=210 + 10 + 11 = 21
    2. 甲分配 2 台,乙分配 2 台,丙分配 1 台。(总盈利:7+10+4=217 + 10 + 4 = 21

2. 设备负荷分配问题(连续变量)#

  • 问题描述:某种机器可在高、低两种不同的负荷下生产。
    • 高负荷:年产量 g(u)=8ug(u) = 8uuu 为机器台数),年完好率(回收率) a=0.7a = 0.7
    • 低负荷:年产量 h(y)=5yh(y) = 5yyy 为机器台数),年完好率(回收率) b=0.9b = 0.9。 设第一年年初完好机器数 s1=1000s_1 = 1000 台。求 5 年内如何安排负荷,使总产量最高。
  • 模型构建: 设 sks_k 为第 kk 年初完好的机器数,uku_k 为当年分配到高负荷生产的机器数,则有: sk+1=0.7uk+0.9(skuk)=0.9sk0.2uks_{k+1} = 0.7 u_k + 0.9(s_k - u_k) = 0.9 s_k - 0.2 u_k 递推方程: fk(sk)=max0uksk{8uk+5(skuk)+fk+1(0.9sk0.2uk)}\text{递推方程: } f_k(s_k) = \max_{0 \le u_k \le s_k} \{ 8 u_k + 5(s_k - u_k) + f_{k+1}(0.9 s_k - 0.2 u_k) \}
  • 逆推求解过程
    • k=5k=5f5(s5)=max{8u5+5(s5u5)}=8s5f_5(s_5) = \max \{ 8u_5 + 5(s_5 - u_5) \} = 8s_5 (最优决策 u5=s5u_5^* = s_5)。
    • k=4k=4f4(s4)=max0u4s4{3u4+5s4+8(0.9s40.2u4)}=max{12.2s4+1.4u4}=13.6s4(最优决策 u4=s4)f_4(s_4) = \max_{0 \le u_4 \le s_4} \{ 3u_4 + 5s_4 + 8(0.9s_4 - 0.2u_4) \} = \max \{ 12.2s_4 + 1.4u_4 \} = 13.6s_4 \quad (\text{最优决策 } u_4^* = s_4)
    • k=3k=3:同理求得 u3=s3u_3^* = s_3f3(s3)=19.32s3f_3(s_3) = 19.32s_3
    • k=2k=2f2(s2)=max{3u2+5s2+19.32(0.9s20.2u2)}=max{22.388s20.864u2}=22.388s2(此时最优决策为低负荷:u2=0)f_2(s_2) = \max \{ 3u_2 + 5s_2 + 19.32(0.9s_2 - 0.2u_2) \} = \max \{ 22.388s_2 - 0.864u_2 \} = 22.388s_2 \quad (\text{此时最优决策为低负荷:} u_2^* = 0)
    • k=1k=1:同理求得 u1=0u_1^* = 0f1(s1)=23.7s1f_1(s_1) = 23.7s_1
  • 结论:最优策略为前两年完好机器全部用于低负荷生产,后三年全部用于高负荷生产。在初始 s1=1000s_1 = 1000 台机器时,5 年内最大总产量为 23,700 台。

3. 多期生产与存储问题#

  • 问题描述:企业面临 4 个月的交货合同。

    • 参数限制:生产能力上限为 4 千件/月,仓库最大容纳 3 千件。
    • 成本结构:产品生产成本为 C(x)=F+CxC(x) = F + C \cdot xFF 为每次开工的生产准备固定费 4000 元,CC 为变动成本 5000 元/千件);每千件产品每月的保管费 H=300H = 300 元。
    • 库存与交货:期初已有存货 3 千件,要求 4 月底完成交货后的剩余库存为 2 千件。各月交货合同需求量为:2, 3, 2, 2 千件。求总运营费用最低的生产计划。
    月份 (kk)1234
    需求量 dkd_k(千件)2322
  • 动态规划模型

    • 状态变量 SkS_k:第 kk 月期初的产品库存量。
    • 决策变量 xkx_k:第 kk 月的产量。
    • 状态转移方程Sk+1=Sk+xkdkS_{k+1} = S_k + x_k - d_k
    • 费用递推公式fk(Sk)=minxk{Ck(xk)+HSk+1+fk+1(Sk+1)}f_k(S_k) = \min_{x_k} \{ C_k(x_k) + H \cdot S_{k+1} + f_{k+1}(S_{k+1}) \}
  • 求解结论:经过逆序查表递推,最优生产计划为:

    • 第 1 月生产 0 千件,第 2 月生产 4 千件,第 3 月生产 0 千件,第 4 月生产 4 千件。
    • 该方案完全满足各期交货限制,且使全期总生产和保管费用达到最低:49,800 元

4. 随机性决策:不确定采购问题#

  • 问题描述:某厂在未来 5 周内必须采购到一批原料。价格每周发生波动,估计价格和出现的概率分布如下表。要求制定采购策略,使采购单价的数学期望值最小。

    原料单价 (yky_k)出现概率
    5000.3
    6000.3
    7000.4
  • 模型构建

    • 状态变量 yky_k:表示第 kk 周的市场实际报价。
    • 决策变量 xkx_kxk=1x_k=1 表示采购;xk=0x_k=0 表示继续等待。
    • 期望值递推方程: 设 ykEy_k^E 为第 kk 周若选择等待,则在后续周采取最优决策下的采购价格期望值。 fk(yk)=min(yk,ykE)f_k(y_k) = \min(y_k, y_k^E) ykE=E[fk+1(yk+1)]=0.3fk+1(500)+0.3fk+1(600)+0.4fk+1(700)y_k^E = E[f_{k+1}(y_{k+1})] = 0.3 f_{k+1}(500) + 0.3 f_{k+1}(600) + 0.4 f_{k+1}(700) 边界条件:第 5 周必须购买,因此 y5E=    f5(y5)=y5y_5^E = \infty \implies f_5(y_5) = y_5
  • 计算推导

    • k=5k=5E[f5]=0.3(500)+0.3(600)+0.4(700)=610E[f_5] = 0.3(500) + 0.3(600) + 0.4(700) = 610 元。
    • k=4k=4:等待期望 y4E=E[f5]=610y_4^E = E[f_5] = 610f4(y4)=min(y4,610)    f4(500)=500,f4(600)=600,f4(700)=610f_4(y_4) = \min(y_4, 610) \implies f_4(500)=500, f_4(600)=600, f_4(700)=610 E[f4]=0.3(500)+0.3(600)+0.4(610)=574E[f_4] = 0.3(500) + 0.3(600) + 0.4(610) = 574
    • k=3k=3:等待期望 y3E=E[f4]=574y_3^E = E[f_4] = 574f3(y3)=min(y3,574)    f3(500)=500,f3(600)=574,f3(700)=574f_3(y_3) = \min(y_3, 574) \implies f_3(500)=500, f_3(600)=574, f_3(700)=574 E[f3]=0.3(500)+0.7(574)=551.8E[f_3] = 0.3(500) + 0.7(574) = 551.8
    • k=2k=2y2E=E[f3]=551.8    E[f2]=0.3(500)+0.7(551.8)=536.26y_2^E = E[f_3] = 551.8 \implies E[f_2] = 0.3(500) + 0.7(551.8) = 536.26
    • k=1k=1y1E=E[f2]=536.26y_1^E = E[f_2] = 536.26
  • 最优决策策略结论

    • 第 1、2、3 周:若市场价格为 500 则买入;若为 600 或 700 则选择等待。
    • 第 4 周:若市场价格为 500 或 600 则买入;若为 700 则等待。
    • 第 5 周:无论价格是多少都必须买入。
    • 按此策略执行,采购单价的最低期望值为 536.26 元

5. 背包问题(Knapsack Problem)#

  • 多阶段决策划分:以装入背包的物品种类作为阶段,按 k=1,,nk = 1, \dots, n 顺序递推。
  • 状态变量 ww:表示可供分配给第 1 种到第 kk 种物品的最大承重限额。
  • 决策变量 xkx_k:第 kk 种物品的装入数量。
  • 允许决策集0xkw/wk0 \le x_k \le \lfloor w / w_k \rfloor
  • 递推关系式fk(w)=max0xkw/wk{ck(xk)+fk1(wxkwk)}f_k(w) = \max_{0 \le x_k \le \lfloor w / w_k \rfloor} \{ c_k(x_k) + f_{k-1}(w - x_k w_k) \} (若为二维背包,状态变量需增加体积维度 vv,递推方程为 fk(w,v)f_k(w, v))。

复习思考题#

  1. 对于多期生产与存储决策问题,在什么情况下适合使用动态规划算法,而在什么情况下适合采用线性规划(LP)建模? 请对比分析两者的建模复杂度和对成本函数的适用范围(如包含固定开工成本)。
  2. 不确定采购问题的决策具有怎样的风险与收益折衷? 如果第 1 周的原料报价为 600 元,为什么最优决策是选择“等待”而不是立即买入?
  3. 请解释二维背包问题的动态规划状态转移方程的构建思路。与一维背包问题相比,增加体积维度会导致计算复杂度发生怎样的变化?(介绍维度灾难概念)。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

第 7 章(续) 动态规划应用举例
https://blog.sopak.space/posts/study/economics-management/mo/11/
作者
Xxxhite
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录