数学建模社区-数学中国

标题: 动态规划 [打印本页]

作者: 浅夏110    时间: 2020-5-28 15:00
标题: 动态规划
1.1 动态规划的发展及研究内容
( A1 z& y' \, v8 c8 E2 O+ O* B动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20 世纪 50 年代初 R. E. Bellman 等人在研究多阶段决策过 程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程 优化问题的新方法—动态规划。1957 年出版了他的名著《Dynamic Programming》,这 是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广 泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习 时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的 技巧去求解。
7 d* i0 Z' F% L, l4 n: P/ z6 i
1 P9 }* J" ~  _8 ]; h例 1 最短路线问题
0 m6 u3 a8 P. h2 j图 1 是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由 A 到G 距离最短(或费用最省)的路线。8 L9 h! m; f$ ]6 D0 \$ A

" |8 E- r8 n9 k5 B1 u- P: K+ |! V$ @( J/ R3 m4 B5 x
# d: x/ J# N9 k# B7 T
例 2 生产计划问题
' A1 [3 i6 P6 @工厂生产某种产品,每单位(千件)的成本为 1(千元),每次开工的固定成本为 3 (千元),工厂每季度的最大生产能力为 6(千件)。经调查,市场对该产品的需求量第 一、二、三、四季度分别为 2,3,2,4(千件)。如果工厂在第一、二季度将全年的需 求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上 市的产品需付存储费,每季每千件的存储费为 0.5(千元)。还规定年初和年末这种产品 均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本 和存储费)最少。
! q: ]! Y4 {( [
/ ?: v( G) N4 M5 C- H. f1.2 决策过程的分类+ }6 X8 d8 Z# t" t
4 R( j/ t; k0 a& {3 b7 C6 J# B
根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-timedecision process)和连续时间决策过程(continuous-time decision process);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随机性决策过程(stochastic decision process),其中应用最广的是确定性多阶段决策过程。
2 [6 B$ W8 Q' g# @4 W# f7 t  o8 G/ M. v+ E2 e; ~6 p6 Y0 H2 w
2 基本概念、基本方程和计算方法
  |; t: ?; h* e* P5 a' }2.1 动态规划的基本概念和基本方程2 m  A" e8 Z: D8 k8 {$ W
一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。/ s; M( L; g2 _) p0 I1 y
' T7 ~; a* s0 B; i6 _
2.1.1 阶段$ I. f) A: z1 S# D3 J
阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间顺序特征来划分阶段,以便按阶段的次序解优化问题。阶段变量一般用k = 1,2,...,n 表示。) n5 n2 q: N% C5 l3 y% I  ~3 ^

6 E; G* v, z, S" B& G' s' Y9 w在例 1 中由 A 出发为 k = 1,由   (i = 1,2)  出发为 k = 2 ,依此下去从   (i = 1,2) 出发为 k = 6 ,共 n = 6个阶段。在例 2 中按照第一、二、三、四季度分为k = 1,2,3,4,共四个阶段。
  Y, g' Z( @; q. c7 U
  _7 ]0 {8 Q$ \7 J: k8 ^+ i$ h2.1.2 状态
! E( s/ n% \% L# h6 |: b状态(state)表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并 且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各 阶段的状态无关。通常还要求状态是直接或间接可以观测的。# m2 |5 o7 _) w" h2 s4 G0 y& j
1 Q" `" y% R0 Q$ q* S5 L% D; S

9 v- N/ l$ l1 Z, b6 }2 }# B6 N, ^, Q2 _: t
根据过程演变的具体情况,状态变量可以是离散的或连续的。为了计算的方便有时 将连续变量离散化;为了分析的方便有时又将离散变量视为连续的。 状态变量简称为状态。
* x6 v# x+ B  t; v3 X4 [+ V6 h7 C! ^
2.1.3 决策
4 m6 v5 _% }5 d. J6 E6 i) q当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这 种选择手段称为决策(decision),在最优控制问题中也称为控制(control)。" F0 Y( S; N9 q% c( o! W
/ v; n  ]6 a- U$ R+ O

! M7 A6 |, H- ~
- I2 |' Q, k* p8 P' Q决策变量简称决策。
, V- g% a$ `6 x, p$ W7 k
2 P) Y9 K3 f& F- z2.1.4 策略
2 K' u2 P( N- b3 h' ~* @
! j6 k8 ]7 ~& y- l4 ^# ^& D4 G; _
  u, W9 v* a) p3 s+ o* P9 `) J/ C# G
% R: n0 o( }9 q& ?+ B

) a9 C$ `, @- D0 \5 M8 M1 ]/ U# r! E+ ?) c
2.1.5. 状态转移方程# B+ y! u1 Y4 ?+ m. g  q4 H; c$ Q* g
在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用 状态转移方程(equation of state transition)表示这种演变规律,写作
9 }5 A! i. w, k$ B
5 d5 e! Y/ T, y( Z/ Q
% e% t. Z0 ?6 i1 O, S  C+ q
# h7 @2 N9 l7 h6 J) f2.1.6. 指标函数和最优值函数
4 z7 p) R4 Z. L/ m+ E
' ^- }! h, n. B- e9 z! y2 J7 ]3 i4 r
# Z' r/ J4 z+ x$ D- ?' J* J" W5 p4 t
2.1.7 最优策略和最优轨线9 @0 I# \  h; ^9 s5 @7 c% _
. v( D5 m3 I, h( N/ R. N* u2 W& t* S# k
+ s! Q& B+ j" A  g9 Q" v# X

! y. `4 g- g: E9 v2.1.8 递归方程
) _# c+ P' b! j, h* g% H& ^0 Y
! V2 [; p7 b  w' r% v# H% D! c/ t# Y2 {2 C# S

: M! z8 G* A2 H) t5 p) X* u例 3  用 lingo 求解例 1 最短路线问题。
' ~. W% g0 z( R0 O) L4 e* p, P8 c5 i% @* d0 X8 ?/ |  f/ H6 E
model:
, i8 {; `0 l# E0 Y6 VTitle Dynamic Programming;4 F, e. d0 L7 g2 h8 A$ o; i
sets:2 P% E4 ^6 L7 X5 {5 \
vertex/A,B1,B2,C1,C2,C3,C4,D1,D2,D3,E1,E2,E3,F1,F2,G/;
6 ^" O6 {  Q* ~+ D* K- Nroad(vertex,vertex)/A B1,A B2,B1 C1,B1 C2,B1 c3,B2 C2,B2 C3,B2 C4,
9 n1 ^* \+ c# \- QC1 D1,C1 D2,C2 D1,C2 D2,C3 D2,C3 D3,C4 D2,C4 D3,9 h4 K( Z8 e, N# ^* h/ q/ O1 J
D1 E1,D1 E2,D2 E2,D2 E3,D3 E2,D3 E3,
0 W0 J1 s) i$ e, j6 ]E1 F1,E1 F2,E2 F1,E2 F2,E3 F1,E3 F2,F1 G,F2 G/;1 y$ d* U0 v$ `8 w1 j
endsets% y" w, K# c2 v/ E/ n
data:4 v" P# _) K, @2 k2 W8 [
D=5 3 1 3 6 8 7 6
; O' Q0 b/ G, S2 d7 z6 8 3 5 3 3 8 4
5 K2 z9 N( r. E; X9 A* a2 2 1 2 3 3
; l3 \; v0 T% M! Y3 5 5 2 6 6 4 3;9 s4 x& A6 ]6 y; t, _: w# [' p8 v
L=0,,,,,,,,,,,,,,,;
8 p' b$ y9 ^! Y4 lenddata. U9 Q! h% A. p
@for(vertex(i)|i#GT#1(i)=@min(road(j,i)(j)+D(j,i)));! T* E3 g3 i: c3 L% f& q
end
/ `/ B3 F( c% ^$ X/ l7 C: ^+ Y
: |, Y: J; d6 y/ G' u! M动态规划模型的建模步骤
; x6 ~( [( q! }7 u纵上所述,如果一个问题能用动态规划方法求解,那么,我们可以按下列步骤,首先建立起动态规划的数学模型:: J: z9 M6 `& \3 c' y

. M! A/ {0 @7 A(i)将过程划分成恰当的阶段。: Y. }" M- i+ S) h
8 p/ P: G3 D4 X6 E; a
(ii)正确选择状态变量  ,使它既能描述过程的状态,又满足无后效性,同时确 定允许状态集合  。
; l! C1 \! K9 x9 v0 F9 s) q) A1 T$ D) [# e
(iii)选择决策变量  ,确定允许决策集合  。& c0 Y" {. w/ S1 k1 k6 }' ?8 Q

% q3 m. d9 X0 _+ ^* A" [: N/ j(iv)写出状态转移方程。
, A5 m3 ?8 j$ t& {$ J
0 w& {1 t3 W' i$ B(v)确定阶段指标  及指标函数  的形式(阶段指标之和,阶段指标之 积,阶段指标之极大或极小等)。
& }+ \* s$ t5 m: U" J+ ?7 c5 {
7 S; q" @& F9 z) y& ]' I(vi)写出基本方程即最优值函数满足的递归方程,以及端点条件。8 R% S( |( K9 |) c
% [) N6 {- p& x  u% z9 K
& V( L! `% p8 v3 [" X: a
) E- G% ~( _9 C# x8 o" M  s
3 逆序解法的计算框图
" J4 d7 L" F$ c以自由终端、固定始端、指标函数取和的形式的逆序解法为例给出计算框图,其它 情况容易在这个基础上修改得到。
9 O  |! X9 q" ~! x" i7 l  ]6 `
) S+ s+ n  j8 z5 E( M3 H# R一般化的自由终端条件为. U, d" J$ l9 e. i" A( C) T
# J* B6 z0 A8 M

% ~3 z. J+ `8 T7 Z' E
. o( V& H/ Z9 f, ?8 d  F- ^/ u0 l, h/ ~5 u" X
& o. L8 w( k# k% x+ d4 v
% Z) ?% }" s+ j2 |( M9 B
1 U2 w2 K9 u% \6 Z
§4 动态规划与静态规划的关系
8 W) \9 P  w* I7 t; T  V& |动态规划与静态规划(线性和非线性规划等)研究的对象本质上都是在若干约束条 件下的函数极值问题。两种规划在很多情况下原则上可以相互转换。
3 N1 u& r9 Z4 t1 m( Q6 a% y3 k, [% w- K/ y
          动态规划可以看作求决策 使指标函数  达到最优 (最大或最小)的极值问题,状态转移方程、端点条件以及允许状态集、允许决策集等 是约束条件,原则上可以用非线性规划方法求解。 一些静态规划只要适当引入阶段变量、状态、决策等就可以用动态规划方法求解。 下面用例子说明。& X0 g$ a5 F' h# y0 n$ h3 x3 z
8 h0 [! j8 A1 d! T. o3 `
例 4 用动态规划解下列非线性规划4 o$ f  V" `' d* t; E$ C6 b
0 R/ m+ l; C4 W+ L

1 @# B! W1 w6 Z& W) Z, e6 j( O7 i3 o. }3 l' m  y
与静态规划相比,动态规划的优越性在于:$ G1 ~3 Q: V. }/ J% ^' p) S

9 R6 |4 W7 z! y; B/ [8 h" Y(i)能够得到全局最优解。由于约束条件确定的约束集合往往很复杂,即使指标 函数较简单,用非线性规划方法也很难求出全局最优解。而动态规划方法把全过程化为一系列结构相似的子问题,每个子问题的变量个数大大减少,约束集合也简单得多,易 于得到全局最优解。特别是对于约束集合、状态转移和指标函数不能用分析形式给出的 优化问题,可以对每个子过程用枚举法求解,而约束条件越多,决策的搜索范围越小, 求解也越容易。对于这类问题,动态规划通常是求全局最优解的唯一方法。% U  @+ A; F: Q) r

/ I5 R$ `. M2 D5 ^. a" F+ f. O; H(ii)可以得到一族最优解。与非线性规划只能得到全过程的一个最优解不同,动 态规划得到的是全过程及所有后部子过程的各个状态的一族最优解。有些实际问题需要 这样的解族,即使不需要,它们在分析最优策略和最优值对于状态的稳定性时也是很有 用的。当最优策略由于某些原因不能实现时,这样的解族可以用来寻找次优策略。
5 d# W* I6 i6 D0 _8 I) ?: D+ ~4 _& f. ~
(iii)能够利用经验提高求解效率。如果实际问题本身就是动态的,由于动态规划 方法反映了过程逐段演变的前后联系和动态特征,在计算中可以利用实际知识和经验提 高求解效率。如在策略迭代法中,实际经验能够帮助选择较好的初始策略,提高收敛速 度。- B3 U- ^3 U/ W& S% ]
' u9 C7 V4 x: x' Q
动态规划的主要缺点是:
. {% L2 B1 t$ x# ?2 g9 N
( P' b$ G( e; v3 A(i)没有统一的标准模型,也没有构造模型的通用方法,甚至还没有判断一个问 题能否构造动态规划模型的准则。这样就只能对每类问题进行具体分析,构造具体的模 型。对于较复杂的问题在选择状态、决策、确定状态转移规律等方面需要丰富的想象力 和灵活的技巧性,这就带来了应用上的局限性。4 h' {0 f1 w" x6 Y. {

; [) G, L6 r3 O- {(ii)用数值方法求解时存在维数灾(curse of dimensionality)。若一维状态变量有m 个取值,那么对于n 维问题,状态 就有  个值,对于每个状态值都要计算、存储函 数  ,对于n 稍大的实际问题的计算往往是不现实的。目前还没有克服维数灾的 有效的一般方法。' j4 U/ M  w  f, L* f% n
+ `8 u7 A! l, g( [2 g* E  p( V
§5 若干典型问题的动态规划模型
" c, x2 [2 \* o9 {' c5.1 最短路线问题
9 p' B- k9 Q% X' B$ v9 z4 v' z8 s; Z7 ^& g$ \

) b0 T7 J/ B% ~1 J: o/ K; b
) z: `) F7 r- Q2 x5.2 生产计划问题! l' {% X0 L" h. V3 j  h2 G

) I+ k7 j+ s9 t  Z2 @! C% w% ?3 X( P4 O' j) W
9 N* I6 B( F9 |  ~- O8 u( _  p
: v9 G6 P. N2 h
2 \2 G; Q8 \/ q& C% `3 T8 N' [

/ @& G" R" ~, @3 w8 Y- \6 E5.3 资源分配问题
& \, V4 X, N$ x+ Z+ ^一种或几种资源(包括资金)分配给若干用户,或投资于几家企业,以获得最大的 效益。资源分配问题(resource allocating Problem)可以是多阶段决策过程,也可以是 静态规划问题,都能构造动态规划模型求解。下面举例说明。4 \* m  c- s5 L2 W: _
4 k! ?/ H! X% z% K( a: B
. k4 ^; R0 o* p) S. T

' ?3 w1 B1 F/ k* A5 L: J! x7 u) x$ `) I9 D% a

' f9 t3 B3 G) q; Z/ O0 ?% @3 @% }7 Q% l7 P
7 B' M1 l* O! D8 n+ o# h  e
————————————————
8 [# s9 I! L0 P版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 |) L# N$ m% d. P/ L
原文链接:https://blog.csdn.net/qq_29831163/article/details/89676570
9 V: V7 t* x$ D6 K
, ^, Y. K$ L: P% N
7 ?" P/ @& X2 d) k! j% e




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5