搜档网
当前位置:搜档网 › (整理)matlab 动态规划讲义.

(整理)matlab 动态规划讲义.

(整理)matlab 动态规划讲义.
(整理)matlab 动态规划讲义.

第四章动态规划

§1 引言

1.1 动态规划的发展及研究内容

动态规划(dynamic programming)是运筹学的一个分支,是求解多阶段决策问题的最优化方法。20世纪50年代初R. E. Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。

动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。

虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。

应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的

一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。

例1 最短路线问题

下面是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A到G距离最短(或费用最省)的路线。

例2 生产计划问题

工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。

1.2 决策过程的分类

根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time decision process )和连续时间决策过程(continuous-time decision process );根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process )和随机性决策过程(stochastic decision process ),其中应用最广的是确定性多阶段决策过程。

§2 基本概念、基本方程和计算方法

2.1 动态规划的基本概念和基本方程

一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。

2.1.1 阶段

阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间顺序特征来划分阶段,以便按阶段的次序解优化问题。阶段变量一般用n k ,,2,1 =表示。在例1中由A 出发为1=k ,由)2,1(=i B i 出发为2=k ,依此下去从)2,1(=i F i 出发为6=k ,共6=n 个阶段。在例2中按照第一、二、三、四季度分为4,3,2,1=k ,共四个阶段。

2.1.2 状态

状态(state )表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各阶段的状态无关。通常还要求状态是直接或间接可以观测的。

描述状态的变量称状态变量(state variable )。变量允许取值的范围称允许状态集合(set of admissible states)。用k x 表示第k 阶段的状态变量,它可以是一个数或一个向量。用k X 表示第k 阶段的允许状态集合。在例1中2x 可取21,B B ,或将i B 定义为)2,1(=i i ,则

12=x 或2,而}2,1{2=X 。

n 个阶段的决策过程有1+n 个状态变量,1+n x 表示n x 演变的结

果。在例1中7x 取G ,或定义为1,即17=x 。

根据过程演变的具体情况,状态变量可以是离散的或连续的。为了计算的方便有时将连续变量离散化;为了分析的方便有时又将离散变量视为连续的。

状态变量简称为状态。 2.1.3 决策

当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策(decision ),在最优控制问题中也称为控制(control )。

描述决策的变量称决策变量(decision variable ),变量允许取值的范围称允许决策集合(set of admissible decisions )。用)(k k x u 表示第k 阶段处于状态k x 时的决策变量,它是k x 的函数,用)(k k x U 表示k x 的允许决策集合。在例1中)(12B u 可取21,C C 或3C ,可记作

3,2,1)1(2=u ,而}3,2,1{)1(2=U 。

决策变量简称决策。

2.1.4 策略

决策组成的序列称为策略(policy )。由初始状态1x 开始的全过程的策略记作)(11x p n ,即

)}(,),(),({)(221111n n n x u x u x u x p =.

由第k 阶段的状态k x 开始到终止状态的后部子过程的策略记作

)(k kn x p ,即

)}(,),({)(n n k k k kn x u x u x p =,1,,2,1-=n k .

类似地,由第k 到第j 阶段的子过程的策略记作

)}(,),({)(j j k k k kj x u x u x p =.

可供选择的策略有一定的范围,称为允许策略集合(set of admissible policies),用)(),(),(11k kj k kn n x P x P x P 表示。

2.1.5. 状态转移方程

在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用状态转移方程(equation of state transition )表示这种演变规律,写作

.,,2,1),,(1n k u x T x k k k k ==+ (1)

在例1中状态转移方程为)(1k k k x u x =+。

2.1.6. 指标函数和最优值函数

指标函数(objective function)是衡量过程优劣的数量指标,它是定义在全过程和所有后部子过程上的数量函数,用

),,,,(11++n k k k kn x x u x V 表示,n k ,,2,1 =。指标函数应具有可分离性,

即kn V 可表为n k k k V u x 1,,+的函数,记为

)),,,(,,(),,,,(1211111+++++++=n k k k n k k k k n k k k kn x x u x V u x x x u x V ?并且函数k

?对于变量n k V 1+是严格单调的。

过程在第j 阶段的阶段指标取决于状态j x 和决策j u ,用

),(j j j u x v 表示。指标函数由),,2,1(n j v j =组成,常见的形式有:

阶段指标之和,即

∑=++=n

k j j j j n k k k kn u x v x x u x V ),(),,,,(11 ,

阶段指标之积,即

∏=++=n

k j j j j n k k k kn u x v x x u x V ),(),,,,(11 ,

阶段指标之极大(或极小),即

),((min)max ),,,,(11j j j n

j k n k k k kn u x v x x u x V ≤≤++= .

这些形式下第k 到第j 阶段子过程的指标函数为

),,,(11++j k k k kj x x u x V 。

根据状态转移方程指标函数kn V 还可以表示为状态k x 和策略

kn p 的函数,即),(kn k kn p x V 。在k x 给定时指标函数kn V 对kn p 的最优值

称为最优值函数(optimal value function ),记为)(k k x f ,即

),(opt )()

(kn k kn x P p k k p x V x f k kn kn ∈=

其中opt 可根据具体情况取max 或min 。

2.1.7 最优策略和最优轨线

使指标函数kn V 达到最优值的策略是从k 开始的后部子过程的

最优策略,记作},,{***n k kn u u p =。*

1n p 是全过程的最优策略,简称最

优策略(optimal policy )。从初始状态)(*11x x =出发,过程按照*1n p 和

状态转移方程演变所经历的状态序列},,,{*

1*2*1+n x x x 称最优轨线

(optimal trajectory )。

2.1.8 递归方程 如下方程称为递归方程

??

???=?==++∈++1,,)},(),({opt )(10)(11)(1

1 n k x f u x v x f x f k k k k k x U u k k n n k k k 或

(2)

在上述方程中,当?为加法时取0)(11=++k n x f ;当?为乘法时,取

1)(11=++k n x f 。动态规划递归方程是动态规划的最优性原理的基础,

即:最优策略的子策略,构成最优子策略。用状态转移方程(1)和递归方程(2)求解动态规划的过程,是由1+=n k 逆推至1=k ,故这种解法称为逆序解法。当然,对某些动态规划问题,也可采用顺序解法。这时,状态转移方程和递归方程分别为:

n

k u x T x k k k k ,,1),,(111 ==+++,

??

???=?==+++∈+++++n k x f u x v x f x f k

k k k k x U u k k k k k ,,1)},(),({opt )(10(111)(1111111 或)

纵上所述,如果一个问题能用动态规划方法求解,那么,我

们可以按下列步骤,首先建立起动态规划的数学模型:

(i )将过程划分成恰当的阶段。

(ii )正确选择状态变量k x ,使它既能描述过程的状态,又满足无后效性,同时确定允许状态集合k X 。

(iii )选择决策变量k u ,确定允许决策集合)(k k x U 。 (iv )写出状态转移方程。

(v )确定阶段指标),(k k k u x v 及指标函数kn V 的形式(阶段指标之和,阶段指标之积,阶段指标之极大或极小等)。

(vi )写出基本方程即最优值函数满足的递归方程,以及端点条件。

§3 逆序解法的计算框图

以自由终端、固定始端、指标函数取和的形式的逆序解法为例给出计算框图,其它情况容易在这个基础上修改得到。

一般化的自由终端条件为

1111,,2,1),()(++++==n i n i n n n i x x f ?

(3)

其中?为已知。固定始端条件可表示为}{}{*111x x X ==。

如果状态k x 和决策k u 是连续变量,用数值方法求解时需按照精度要求进行离散化。设状态k x 的允许集合为

n k n i x X k ki k ,,2,1},,,2,1|{ ===.

决策)(ki ki x u 的允许集合为

n k n i n j u U k ki j ki ki ,,2,1,,,2,1},,,2,1|{)

( ====.

状态转移方程和阶段指标应对k x 的每个取值ki x 和ki u 的每个取

值)

(j ki u 计算,即),()(j ki ki k k u x T T =,),()(j ki ki k u x v v =。最优值函数应对k x 的

每个取值ki x 计算。基本方程可以表为

.

1,2,,,,,2,1,,,2,1),

(opt )()),

,((),()()()

(1)()( n k n i n j x f x f u x T f u x v x f k ki ki j k j

ki k j ki ki k k j ki ki k ki j k ====+=+

(4)

按照(3),(4)逆向计算出)(*11x f ,为全过程的最优值。记状

态ki x 的最优决策为)(*ki ki x u ,由*1x 和)(*

ki ki

x u 按照状态转移方程计算出最优状态,记作*k x 。并得到相应的最优决策,记作)(**k k x u 。于是最

优策略为)}(,),(),({***2*2

*1*1n n x u x u x u 。 算法程序的框图如下。

图的左边部分是函数序列的递推计算,可输出全过程最优值

)(*11x f ,如果需要还可以输出后部子过程最优值函数序列)(ki k x f 和

最优决策序列)(*ki k x u 。计算过程中存)(ki k x f 是备计算1-k f 之用,在

1-k f 算完后可用1-k f 将k f 替换掉;存)(*ki k x u 是备右边部分读)(**k k x u 之

用。

图的右边部分是最优状态和最优决策序列的正向计算,可输

出最优策略)}(,),(),({***2*2

*1*1n n x u x u x u 和最优轨线},,,{*

*2*1n x x x 。

§4 动态规划与静态规划的关系

动态规划与静态规划(线性和非线性规划等)研究的对象本

质上都是在若干约束条件下的函数极值问题。两种规划在很多情况下原则上可以相互转换。

动态规划可以看作求决策n u u u ,,,21 使指标函数

),,,(2111n n u u u x V ,达到最优(最大或最小)的极值问题,状态转移

方程、端点条件以及允许状态集、允许决策集等是约束条件,原则上可以用非线性规划方法求解。

一些静态规划只要适当引入阶段变量、状态、决策等就可以用动态规划方法求解。下面用例子说明。

例3 用动态规划解下列非线性规划 ∑=n

k k k

u g

1)(m a x ; s.t.

∑=≥=n

k k k

u a u

1

0,.

其中)(k k u g 为任意的已知函数。

解 按变量k u 的序号划分阶段,看作n 段决策过程。设状态为n x x x ,,,21 ,取问题中的变量n u u u ,,,21 为决策。状态转移方程为

.,,2,1,,11n k u x x a x k k k =-==+

取)(k k u g 为阶段指标,最优值函数的基本方程为(注意到01=+n x )

)]()([max )(110++≤≤+=k k k k x u k k x f x g x f k

k ;

1,2,,1,,0 -=≤≤n n k a x k ; 0)0(1=+n f .

按照逆序解法求出对应于k x 每个取值的最优决策)(*

k k x u ,计算

至)(1a f 后即可利用状态转移方程得到最优状态序列}{*k x 和最优决策序列)}({**k k x u 。

与静态规划相比,动态规划的优越性在于:

(i )能够得到全局最优解。由于约束条件确定的约束集合往往很复杂,即使指标函数较简单,用非线性规划方法也很难求出全局最优解。而动态规划方法把全过程化为一系列结构相似的子问题,每个子问题的变量个数大大减少,约束集合也简单得多,易于得到全局最优解。特别是对于约束集合、状态转移和指标函数不能用分析形式给出的优化问题,可以对每个子过程用枚举法求解,而约束条件越多,决策的搜索范围越小,求解也越容易。对于这类问题,动态规划通常是求全局最优解的唯一方法。 (ii )可以得到一族最优解。与非线性规划只能得到全过程的一个最优解不同,动态规划得到的是全过程及所有后部子过程的各个状态的一族最优解。有些实际问题需要这样的解族,即使不需要,它们在分析最优策略和最优值对于状态的稳定性时也是很有用的。当最优策略由于某些原因不能实现时,这样的解族可以用来寻找次优策略。

(iii )能够利用经验提高求解效率。如果实际问题本身就是动态的,由于动态规划方法反映了过程逐段演变的前后联系和动态特征,在计算中可以利用实际知识和经验提高求解效率。如在策略迭代法中,实际经验能够帮助选择较好的初始策略,提高收敛速度速度。

动态规划的主要缺点是:

(i )没有统一的标准模型,也没有构造模型的通用方法,甚至还没有判断一个问题能否构造动态规划模型的准则。这样就只能对每类问题进行具体分析,构造具体的模型。对于较复杂的问题在选择状态、决策、确定状态转移规律等方面需要丰富的想象力和灵活的技巧性,这就带来了应用上的局限性。

(ii )用数值方法求解时存在维数灾(curse of dimensionality )。若一维状态变量有m 个取值,那么对于n 维问题,状态k x 就有n m 个值,对于每个状态值都要计算、存储函数)(k k x f ,对于n 稍大(即使3=n )的实际问题的计算往往是不现实的。目前还没有克服维数灾的有效的一般方法。

§5 若干典型问题的动态规划模型

5.1 最短路线问题

对于例1一类最短路线问题(shortest Path Problem ),阶段按过程的演变划分,状态由各段的初始位置确定,决策为从各个状态出发的走向,即有)(1k k k x u x =+,阶段指标为相邻两段状态间的距离))(,(k k k k x u x d ,指标函数为阶段指标之和,最优值函数)(k k x f 是由k x 出发到终点的最短距离(或最小费用),基本方程为

;1,,)],())(,([min )(11)

( n k x f x u x d x f k k k k k k x u k k k k =+=++

.0)(11=++n n x f

利用这个模型可以算出例l 的最短路线为G F E D C AB 22121, 相应的最短距离为18。

5.2 生产计划问题

对于例 2一类生产计划问题(Production planning problem ),阶段按计划时间自然划分,状态定义为每阶段开始时的储存量k x ,决策为每个阶段的产量k u ,记每个阶段的需求量(已知量)为k d ,则状态转移方程为

.

,,2,1,0,1n k x d u x x k k k k k =≥-+=+

(5)

设每阶段开工的固定成本费为a ,生产单位数量产品的成本费为

b ,每阶段单位数量产品的储存费为

c ,阶段指标为阶段的生产成

本和储存费之和,即

??

?>++=0

,),(k k k k k k u bu a cx u x v

(6)

指标函数kn V 为k v 之和。最优值函数)(k k x f 为从第k 段的状态k x 出发到过程终结的最小费用,满足

.1,,)],(),([min )(11 n k x f u x v x f k k k k k U u k k k

k =+=++∈

其中允许决策集合k U 由每阶段的最大生产能力决定。若设过程终结时允许存储量为01+n x ,则终端条件是

.

0)(0

11=++n n x f

(7)

(5)~(7)构成该问题的动态规划模型。 5.3 资源分配问题

一种或几种资源(包括资金)分配给若干用户,或投资于几家企业,以获得最大的效益。资源分配问题(resource allocating Problem )可以是多阶段决策过程,也可以是静态规划问题,都能构造动态规划模型求解。下面举例说明。

例4 机器可以在高、低两种负荷下生产。u 台机器在高负荷下的年产量是)(u g ,在低负荷下的年产量是)(u h ,高、低负荷下机器的年损耗率分别是1a 和1b (1011<<>βα),即高、低负荷下每台机器的年产量分别为α和β,结果将有什么特点。

解 年度为阶段变量n k ,,2,1 =。状态k x 为第k 年初完好的机器数,决策k u 为第k 年投入高负荷运行的台数。当k x 或k u 不是整数时,将小数部分理解为一年中正常工作时间或投入高负荷运行时间的比例。

机器在高、低负荷下的年完好率分别记为a 和b ,则11a a -=,

11b b -=,有b a <。因为第k 年投入低负荷运行的机器台数为k k u x -,所以状态转移方程是

)(1k k k k u x b au x -+=+

(8)

阶段指标k v 是第k 年的产量,有

)()(),(k k k k k k u x h u g u x v -+= (9)

指标函数是阶段指标之和,最优值函数)(k k x f 满足 .

1,2,,,0 )],

(),([max )(110 n k m x x f u x v x f k k k k k k x u k k k

k =≤≤+=++≤≤

(10)

及自由终端条件

.

0,0)(111m x x f n n n ≤≤=+++

(11)

当k v 中的h g ,用较简单的函数表达式给出时,对于每个k 可以用解析方法求解极值问题。特别,若u u g α=)(,u u h β=)(,(10)中的)](),([1k k k k k x f u x v ++ 将是k u 的线性函数,最大值点必在区间

k k x u ≤≤0的左端点0=k u 或右端点k k x u =取得,即每年初将完好的

机器全部投入低负荷或高负荷运行。

习 题 四

1. 设某工厂有1000台机器,生产两种产品B A 、,若投入y 台机器生产A 产品,则纯收入为y 5,若投入y 台机器生产B 种产品,则纯收入为y 4,又知:生产A 种产品机器的年折损率为20%,生产B 产品机器的年折损率为10%,问在5年内如何安排各年度的

生产计划,才能使总收入最高?(最好给出Matlab 的求解程序)。

2. 有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:

问指派哪个人去完成哪项工作,可使总的消耗时间为最小?试对此问题用动态规划方法求解。

3. 为保证某一设备的正常运转,需备有三种不同的零件

321,,E E E 。若增加备用零件的数量,可提高设备正常运转的可靠性,

但增加了费用,而投资额仅为8000元。已知备用零件数与它的可靠性和费用的关系如下表所示。

可靠性的条件下,问各种零件的备件数量应是多少为好?

相关主题