第四章动态规划 §1引言 11 动态规划的发展及研究内容 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初RE.Bellman等人在研究多阶段决策过 程(multistep decision 于,提出了著名的最优性 录理(principle o 逐 求解,创立了解决这 是该领城的第万 《Dynamic Programming》, 动态规刻问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广 泛的应用。例如最短路线、床存管理、资源分配、设备更新、排序、 装等问,用动 态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时 间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为 多阶段决策过程,也可以用动态规划方法方便地求解。 ,一中 线性规划 就划 样有 标准 对基 和方法正确理解外 应 用创造 去求 例1层短路线问 图1是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A 到G距离最短(或费用最省)的路线。 s⑧ @&⑧: @ 6©六 04 6 Q406100 图1最短路线问避 例2 十划问 千元).等度分为 单位件)的成本为1千元每次开工的 成本为 34(千 里 年的 求都生产出来,自然可以降低成本(少付 定成本费),但是对于第三、四季度才能上 市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产显 均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本 和存储费)最少。 1.2决策过程的分类 根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time -56
-56- 第四章 动态规划 §1 引言 1.1 动态规划的发展及研究内容 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20 世纪 50 年代初 R. E. Bellman 等人在研究多阶段决策过 程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程 优化问题的新方法—动态规划。1957 年出版了他的名著《Dynamic Programming》,这 是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广 泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动 态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时 间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为 多阶段决策过程,也可以用动态规划方法方便地求解。 应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是 一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数 学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习 时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的 技巧去求解。 例 1 最短路线问题 图 1 是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由 A 到G 距离最短(或费用最省)的路线。 图 1 最短路线问题 例 2 生产计划问题 工厂生产某种产品,每单位(千件)的成本为 1(千元),每次开工的固定成本为 3 (千元),工厂每季度的最大生产能力为 6(千件)。经调查,市场对该产品的需求量第 一、二、三、四季度分别为 2,3,2,4(千件)。如果工厂在第一、二季度将全年的需 求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上 市的产品需付存储费,每季每千件的存储费为 0.5(千元)。还规定年初和年末这种产品 均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本 和存储费)最少。 1.2 决策过程的分类 根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time
decision process)和连续时间决策过程(continuous-time decision process):根据过程的 还是随机的,分为确定性决策 机性决策过程 $2基本概念、基本方程和计算方法 21动态规别的基本概今和基木方积 一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。 2.1.1阶段 阶段(s©p)是对整个过程的自然划分。通常根据时间顺序或空间硕序特征来划分阶 段,以使按阶段的次序解优化问题。阶段变量一般用k=1,2,.,n表示。在例1中由A 出发为k=1,由B(i=1,2)出发为k=2,依此下去从F0=1,2)出发为k=6,共 n=6个阶段.。 在例2中按照第一、二、三、四季度分为k=12,34,共四个阶段。 且无后效性, 阶段的状态无关。通常还要求状态是直接或间接可以观测的。 描述状态的变量称状态变量(state variable),变量允许取值的范围称允许状态集合 (set of admissible states)。用x.表示第k阶段的状态变量,它可以是一个数或一个向量 用X表示第k阶段的允许状态集合。在例1中x,可取B,B,或将B定义为 i(1=1,2),则x2=1或2,而X2={1,2}。 n个阶段的决策过程有n+1个状态变量,x,表示x,演变的结果。在例1中x,取 G,或定义为1,即x,=1。 状态变量简称为状态。 当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这 种选择手段称为决策(decision),在最优控制问题中也称为控制(control). 描述决策的变量称决策变量(decision variable),变量允许取值的范用称允许决策 集合(set of admissible decisions)。用u,(x,)表示第k阶段处于状态x,时的决策变量, 它是x的函数,用U(x)表示x的允许决策集合在例1中4,(B,)可取C,C2或C, 可记作421)=1,2,3,而U2()={1,2,3}. 决策变量简称决策。 214第略 决策组成的序列称为策略(policy)。由初始状态x,开始的全过程的策略记作 Pn(x),即 由第k阶段的状态x开始到终止状态的后部子过程的策略记作P(x),即 -57
-57- decision process)和连续时间决策过程(continuous-time decision process);根据过程的 演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随 机性决策过程(stochastic decision process),其中应用最广的是确定性多阶段决策过程。 §2 基本概念、基本方程和计算方法 2.1 动态规划的基本概念和基本方程 一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。 2.1.1 阶段 阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间顺序特征来划分阶 段,以便按阶段的次序解优化问题。阶段变量一般用k = 1,2,L,n 表示。在例 1 中由 A 出发为 k = 1,由 B (i = 1,2) i 出发为 k = 2 ,依此下去从 F (i = 1,2) i 出发为 k = 6 ,共 n = 6个阶段。在例 2 中按照第一、二、三、四季度分为k = 1,2,3,4,共四个阶段。 2.1.2 状态 状态(state)表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并 且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各 阶段的状态无关。通常还要求状态是直接或间接可以观测的。 描述状态的变量称状态变量(state variable)。变量允许取值的范围称允许状态集合 (set of admissible states)。用 k x 表示第k 阶段的状态变量,它可以是一个数或一个向量。 用 Xk 表示第 k 阶段的允许状态集合。在例 1 中 2 x 可取 1 2 B ,B ,或将 Bi 定义为 i(i = 1,2) ,则 1 x2 = 或2 ,而 {1,2} X2 = 。 n 个阶段的决策过程有n +1个状态变量, n+1 x 表示 n x 演变的结果。在例 1 中 7 x 取 G ,或定义为1,即 x7 = 1。 根据过程演变的具体情况,状态变量可以是离散的或连续的。为了计算的方便有时 将连续变量离散化;为了分析的方便有时又将离散变量视为连续的。 状态变量简称为状态。 2.1.3 决策 当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这 种选择手段称为决策(decision),在最优控制问题中也称为控制(control)。 描述决策的变量称决策变量(decision variable),变量允许取值的范围称允许决策 集合(set of admissible decisions)。用 ( ) k k u x 表示第k 阶段处于状态 k x 时的决策变量, 它是 k x 的函数,用 ( ) k k U x 表示 k x 的允许决策集合。在例 1 中 ( ) 2 B1 u 可取 1 2 C ,C 或C3 , 可记作 (1) 1,2,3 u2 = ,而 (1) {1,2,3} U2 = 。 决策变量简称决策。 2.1.4 策略 决策组成的序列称为策略(policy)。由初始状态 1 x 开始的全过程的策略记作 ( ) 1 1 p x n ,即 ( ) { ( ), ( ), , ( )} 1n 1 1 1 2 2 n n p x = u x u x L u x . 由第k 阶段的状态 k x 开始到终止状态的后部子过程的策略记作 ( ) kn k p x ,即 ( ) { ( ), , ( )} kn k k k n n p x = u x L u x ,k = 1,2,L, n −1. 类似地,由第k 到第 j 阶段的子过程的策略记作
D(x)={u.(xe,.,l.(x.)}. 可供选择的策略有 定的范围,称为允许策略集合((set policies)),用 Pn(x),P(x),P(x)表示. 2.1.5.状态转移方程 在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用 状态转移方程(equation of state transition)表示这种演变规律,写作 x41=T(x,4,k=l,2,.,n (1) 在例1中状态转移方程为x41=山(x) 2.1.6.指标函数和最优值函数 指标函数(objective function)是衡量过程优劣的数量指标,它是定义在全过程和所有 后部子过程上的数量函数,用'(xk,山,x1,.,x1)表示,k=1,2,n。指标函 数应具有可分离性,即V可表为x,山,Vn的函数,记为 并且函数p,对于变量V。是严格单调的。 过程在第j阶段的阶段指标取决于状态x,和决策4,用v,(x,4,)表示。指标医 数由v(=12,n)组成,常见的形式有: 阶段指标之和,即 Vn(x,4,x1.,xi)=∑y,(,4,力 阶段指标之积,即 V(x,4,x.,xi)=Πy,(x,4,) 阶段指标之极大(或极小),即 'n(xe,4eX4+1.,x+)=max(minp,(g,4) 这些形式下第k到第j阶段子过程的指标函数为'(x,山,x)· 根据状态转移方程指标函数V。还可以表示为状态x和策略P的函数,即 'a(xk,Pn).在x给定时指标函数Vn对Pn的最优值称为最优值函数(optimal value function),记为f(x:),即 其中opt可根据具体情祝取max或min。 21.7最优策略和最优轨线 使指标函数V,达到最优值的策略是从k开始的后部子过程的最优策略,记作 po={(,}。pin是全过程的最优策略,简称最优策略(optimal policy)。从初始 状态x(仁x)出发,过程按照P。和状态转移方程演变所经历的状态序列 {x,x,.,x}称最优轨线(optimal trajectory)
-58- ( ) { ( ), , ( )} kj k k k j j p x = u x L u x . 可供选择的策略有一定的范围,称为允许策略集合(set of admissible policies),用 ( ), ( ), ( ) 1n 1 kn k kj k P x P x P x 表示。 2.1.5. 状态转移方程 在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用 状态转移方程(equation of state transition)表示这种演变规律,写作 ( , ), 1,2, , . xk +1 = Tk xk uk k = L n (1) 在例 1 中状态转移方程为 ( ) k 1 k k x = u x + 。 2.1.6. 指标函数和最优值函数 指标函数(objective function)是衡量过程优劣的数量指标,它是定义在全过程和所有 后部子过程上的数量函数,用 ( , , , , ) k ,n k k k +1 n+1 V x u x L x 表示, k = 1,2,L,n 。指标函 数应具有可分离性,即Vk ,n 可表为 k uk Vk n x 1, , , + 的函数,记为 ( , , , , ) ( , , ( , , , )) k ,n k k k+1 n+1 = k k k k+1,n k +1 k+1 n+1 V x u x L x ϕ x u V x u L x 并且函数ϕk 对于变量Vk+1, n 是严格单调的。 过程在第 j 阶段的阶段指标取决于状态 j x 和决策u j ,用 ( , ) j j u j v x 表示。指标函 数由v ( j 1,2, ,n) j = L 组成,常见的形式有: 阶段指标之和,即 ∑= + + = n j k k n k k k n j j j V (x ,u , x , , x ) v (x ,u ) , 1 L 1 , 阶段指标之积,即 ∏= + + = n j k k n k k k n j j u j V (x ,u , x , , x ) v (x , ) , 1 L 1 , 阶段指标之极大(或极小),即 ( , , , , ) max(min) ( , ) , 1 1 j j j k j n k n k k k n V x u x x v x u ≤ ≤ + L + = . 这些形式下第k 到第 j 阶段子过程的指标函数为 ( , , , ) k , j k k j+1 V x u L x 。 根据状态转移方程指标函数Vk ,n 还可以表示为状态 k x 和策略 pkn 的函数,即 ( , ) k ,n k pkn V x 。在 k x 给定时指标函数Vk ,n 对 pkn 的最优值称为最优值函数(optimal value function),记为 ( ) k k f x ,即 ( ) opt ( , ) , ( ) k n k kn p P x k k f x V x p kn∈ kn k = , 其中opt 可根据具体情况取 max 或 min 。 2.1.7 最优策略和最优轨线 使指标函数Vk ,n 达到最优值的策略是从 k 开始的后部子过程的最优策略,记作 { , , } * * * pkn = uk L un 。 * p1n 是全过程的最优策略,简称最优策略(optimal policy)。从初始 状 态 ( ) * 1 1 x = x 出发,过程按照 * p1n 和状态转移方程演变所经历的状态序列 { , , , } * 1 * 2 * 1 n+ x x L x 称最优轨线(optimal trajectory)
[f(xn)=0或1 (2) 在上述方程中,当⑧为加法时取f(x)=0:当⑧为乘法时,取f(x)=1。动 用状态转移方密规 尤性原理的基础,即: 构成最优 和递归方程 2)求解 是由 划问 也可采用顺 法。这时,状态转移方程和递归方程分别为 xg=T(xk1,4),k=l,.,n 0(x)=0或1 /(xsi)= 0pt{,(x,4)⑧f(x)月,k=l,.,n 例3用lingo求解例1最短路线问题 model: 8te/,1,2cSa2326i,2,828,2c4 2,c3D3,c4D2,c43, E1,E32,F1G,F2G/:D: 92 5526643 eeetex(i)iG1:L (i)-@min (road()(( nd 纵上所述,如果 个问题能用动态规划方法求解,那么,我们可以按下列步骤,首 先建立起动 (i)将过 分成指 的阶段 ()正确选择状态变量x,使它既能描述过程的状态,又满足无后效性,同时确 定允许状态集合X:· ()选择决策变量4,确定允许决策集合U,(x:)。 (v)写出状态转移方程。 (v)确定阶段指标v,(x,4:)及指标函数V的形式(阶段指标之和,阶段指标之 53逆序解法的计算框图
-59- 2.1.8 递归方程 如下方程称为递归方程 ⎪⎩ ⎪ ⎨ ⎧ = ⊗ = = + + ∈ + + ( ) opt { ( , ) ( )}, , ,1 ( ) 0 1 1 1 ( ) 1 1 f x v x u f x k n L f x k k k k k u U x k k n n k k k 或 (2) 在上述方程中,当⊗ 为加法时取 fn+1(xn+1) = 0 ;当⊗ 为乘法时,取 fn+1(xn+1) =1。动 态规划递归方程是动态规划的最优性原理的基础,即:最优策略的子策略,构成最优子 策略。用状态转移方程(1)和递归方程(2)求解动态规划的过程,是由 k = n +1逆 推至 k = 1,故这种解法称为逆序解法。当然,对某些动态规划问题,也可采用顺序解 法。这时,状态转移方程和递归方程分别为: x T xk uk k n r k k ( , ), 1, , = +1 = L , ⎪⎩ ⎪ ⎨ ⎧ = ⊗ = = + − ∈ + + + f x v x u f x k n f x k k k k k u U x k k k r k k ( ) opt { ( , ) ( )}, 1, , ( 0 1 1 1 ( ) 1 0 1 1 1 L ) 或 例 3 用 lingo 求解例 1 最短路线问题。 model: Title Dynamic Programming; sets: vertex/A,B1,B2,C1,C2,C3,C4,D1,D2,D3,E1,E2,E3,F1,F2,G/:L; road(vertex,vertex)/A B1,A B2,B1 C1,B1 C2,B1 c3,B2 C2,B2 C3,B2 C4, C1 D1,C1 D2,C2 D1,C2 D2,C3 D2,C3 D3,C4 D2,C4 D3, D1 E1,D1 E2,D2 E2,D2 E3,D3 E2,D3 E3, E1 F1,E1 F2,E2 F1,E2 F2,E3 F1,E3 F2,F1 G,F2 G/:D; endsets data: D=5 3 1 3 6 8 7 6 6 8 3 5 3 3 8 4 2 2 1 2 3 3 3 5 5 2 6 6 4 3; L=0,; enddata @for(vertex(i)|i#GT#1:L(i)=@min(road(j,i):L(j)+D(j,i))); end 纵上所述,如果一个问题能用动态规划方法求解,那么,我们可以按下列步骤,首 先建立起动态规划的数学模型: (i)将过程划分成恰当的阶段。 (ii)正确选择状态变量 k x ,使它既能描述过程的状态,又满足无后效性,同时确 定允许状态集合 Xk 。 (iii)选择决策变量uk ,确定允许决策集合 ( ) k k U x 。 (iv)写出状态转移方程。 (v)确定阶段指标 ( , ) k k uk v x 及指标函数Vkn 的形式(阶段指标之和,阶段指标之 积,阶段指标之极大或极小等)。 (vi)写出基本方程即最优值函数满足的递归方程,以及端点条件。 §3 逆序解法的计算框图
特我学店整来图空线数取的形式的莲序州法为险由计短国,英它 般化的自由终端条件为 f(xl)=p(x2i=l,2,.,n 3 其中P为已知。固定始端条件可表示为X,={x}={x)。 如果状态x,和决策山,是连续变量,用数值方法求解时需按照精度要求进行离散 化。设状态x的允许集合为 X。={xli=1,2,.,n,i=1,2.,n,k=12,.,n. 决策山,(x)的允许集合为 U6={g01j=1,2,.,na,i=1,2,.,n,k=1,2,.,n 状态转移方程和阶段指标应对x的每个取值x和山的每个取值计算,即 工=工(,),=(,)。最优值函数应对x的每个取值x计算。基本方 程可以表为 f(xu)=y(xu,W)+f(T(xu,”), (x)=optf(x). (4) j广=12,.,n6,i=1,2,.,n,k=m,.2l 41 读(x)日 是 图Cai. 是 出】 图2解法框图 -60
-60- 以自由终端、固定始端、指标函数取和的形式的逆序解法为例给出计算框图,其它 情况容易在这个基础上修改得到。 一般化的自由终端条件为 1 1, 1, 1 ( ) ( ), 1,2, , n+ n+ i = n+ i = nn+ f x ϕ x i L (3) 其中ϕ 为已知。固定始端条件可表示为 { } { } * 1 1 1 X = x = x 。 如果状态 k x 和决策 uk 是连续变量,用数值方法求解时需按照精度要求进行离散 化。设状态 k x 的允许集合为 Xk = {xki | i = 1,2,L,nk }, i = 1,2,L,nk ,k = 1,2,L,n . 决策 ( ) ki ki u x 的允许集合为 U u j nki i nk k n j ki ki { | 1,2, , }, 1,2, , , 1,2, , = ( ) = L = L = L . 状态转移方程和阶段指标应对 k x 的每个取值 ki x 和 uki 的每个取值 ( j) uki 计算,即 ( , ) ( j) k k ki uki T = T x , ( , ) ( j) k ki uki v = v x 。最优值函数应对 k x 的每个取值 ki x 计算。基本方 程可以表为 1,2, , , 1,2, , , , ,2,1. ( ) opt ( ), ( ) ( , ) ( ( , )), ( ) ( ) 1 ( ) ( ) j L n i L n k n L f x f x f x v x u f T x u ki k ki j k j k ki j k k ki ki j ki k ki ki j k = = = = = + + (4) 图 2 解法框图