【数学建模】数学建模学习4---动态规划(例题+matlab代码实现)

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 距离最短(或费用最省)的路线。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7m9EdXVo-1626869035090)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721194847557.png)]

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

2.1.2 状态

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

  描述状态的变量称状态变量(state variable)。变量允许取值的范围称允许状态集合(set of admissible states)。用 xk 表示第k 阶段的状态变量,它可以是一个数或一个向量。用 Xk 表示第 k 阶段的允许状态集合。在例 1 中 x2 可取 B1,B2 ,或将 Bi 定义为i(i = 1,2) ,则 x2 = 1或2 ,而 X2 = {1,2}。 n 个阶段的决策过程有n +1个状态变量,xn+1表示 xn 演变的结果。在例 1 中 x7 取 G ,或定义为1,即 x7 = 1。

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

2.1.3 决策

  当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策(decision),在最优控制问题中也称为控制(control)。描述决策的变量称决策变量(decision variable),变量允许取值的范围称允许决策集合(set of admissible decisions)。用uk (xk )表示第k 阶段处于状态 xk 时的决策变量,它是 xk 的函数,用Uk (xk ) 表示 xk 的允许决策集合。在例 1 中u2 (B1 ) 可取C1,C2 或C3 ,可记作u2 (1) = 1,2,3,而U2 (1) = {1,2,3}。决策变量简称决策。

2.1.4 策略

  决策组成的序列称为策略(policy)。由初始状态 x1 开始的全过程的策略记作p1n (x1 ) ,即

  p1n (x1 ) = {u1 (x1 ),u2 (x2 ),L,un (xn )}. 由第k 阶段的状态 xk 开始到终止状态的后部子过程的策略记作 pkn (xk ) ,即pkn (xk ) = {uk (xk ),L,un (xn )},k = 1,2,L, n −1.

  类似地,由第k 到第 j 阶段的子过程的策略记作pkj(xk ) = {uk (xk ),L,u j(x j)}. 可供选择的策略有一定的范围,称为允许策略集合(set of admissible policies),用P1n (x1 ),Pkn (xk ),Pkj(xk ) 表示。

2.1.5. 状态转移方程

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

xk +1 = Tk (xk ,uk ),k = 1,2,L,n. (1)

在例 1 中状态转移方程为 xk +1 = uk (xk ) 。

例 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)正确选择状态变量 xk ,使它既能描述过程的状态,又满足无后效性,同时确

定允许状态集合 Xk 。

(iii)选择决策变量uk ,确定允许决策集合Uk (xk ) 。

(iv)写出状态转移方程。

(v)确定阶段指标vk (xk ,uk ) 及指标函数Vkn 的形式(阶段指标之和,阶段指标之

积,阶段指标之极大或极小等)。

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

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

3.1 最短路线问题

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZc5ExMV-1626869035096)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195319686.png)]

  利用这个模型可以算出例 l 的最短路线为 AB1C2D1E2F2G ,相应的最短距离为 18。

3.2 生产计划问题

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

xk +1 = xk + uk − dk , xk ≥ 0,k = 1,2,L,n. (5)

设每阶段开工的固定成本费为a ,生产单位数量产品的成本费为b ,每阶段单位数量产品的储存费为c ,阶段指标为阶段的生产成本和储存费之和,即

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zi8RKeTE-1626869035101)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195347919.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqCbxbpa-1626869035109)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195402263.png)]

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

f n+1 (xn0+1 ) = 0. (7)

(5)~(7)构成该问题的动态规划模型。

3.3 资源分配问题

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

例 5 机器可以在高、低两种负荷下生产。u 台机器在高负荷下的年产量是 g(u) ,在低负荷下的年产量是 h(u) ,高、低负荷下机器的年损耗率分别是 a1 和 b1 (0 < b1 < a1 < 1)。现有 m 台机器,要安排一个 n 年的负荷分配计划,即每年初决定多少台机器投入高、低负荷运行,使n 年的总产量最大。如果进一步假设 g(u) = αu , h(u) = βu (α > β > 0),即高、低负荷下每台机器的年产量分别为αβ ,结果将有什么特点。

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

机器在高、低负荷下的年完好率分别记为 a 和 b ,则 a = 1− a1 , b = 1− b1 ,有a < b 。因为第k 年投入低负荷运行的机器台数为 xk − uk ,所以状态转移方程是

xk+1 = auk + b(xk − uk ) (8)

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

vk (xk ,uk ) = g(uk ) + h(xk − uk ) (9)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JAD949QA-1626869035112)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195446880.png)]

及自由终端条件

f n+1 (xn+1 ) = 0, 0 ≤ xn+1 ≤ m. (11)

当vk 中的 g, h 用较简单的函数表达式给出时,对于每个 k 可以用解析方法求解极值问题。特别,若 g(u) = αu ,h(u) = βu ,(10)中的[vk (xk ,uk ) + f k+1 (xk )] 将是uk的线性函数,最大值点必在区间 0 ≤ uk ≤ xk 的左端点uk = 0 或右端点uk = xk 取得,即每年初将完好的机器全部投入低负荷或高负荷运行。

4 具体的应用实例

例 6 设某工厂有 1000 台机器,生产两种产品 A、B ,若投入 x 台机器生产 A 产品,则纯收入为5x ,若投入 y 台机器生产 B 种产品,则纯收入为4y ,又知:生产 A 种产品机器的年折损率为 20%,生产 B 产品机器的年折损率为 10%,问在 5 年内如何安排各年度的生产计划,才能使总收入最高?

年度为阶段变量 k = 1,2,3,4,5。

令 xk 表示第 k 年初完好机器数,uk 表示第 k 年安排生产 A 种产品的机器数,则xk − uk 为第k 年安排生产 B 种产品的机器数,且0 ≤ uk ≤ xk 。

则第 k +1年初完好的机器数

xk+1 = (1− 0.2)uk + (1− 0.1)(xk − uk ) = 0.9xk − 0.1uk (12)

令vk (xk ,uk ) 表示第 k 年的纯收入, f k (xk ) 表示第 k 年初往后各年的最大利润之和。

显然f 6 (x6 ) = 0 (13)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHtomosM-1626869035116)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195722236.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5wW9Yed-1626869035117)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195913145.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSIJwzbF-1626869035125)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721195937311.png)]

注: x5 = 518.4台中的 0.4 台应理解为有一台机器只能使用 0.4 年将报废。

例 7 求解下面问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJZ0IwJH-1626869035129)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210721200000753.png)]

: 按问题的变量个数划分阶段,把它看作为一个三阶段决策问题。设状态变量为 x1 , x2 , x3 , x4 ,并记 x1 = c ;取问题中的变量u1 ,u2 ,u3 为决策变量;各阶段指标函数按乘积方式结合。令最优值函数fk(xk)表示第k 阶段的初始状态为 xk ,从k 阶段到 3阶段所得到的最大值。
在这里插入图片描述

由于 x1已知,因而按计算的顺序反推算,可得各阶段的最优决策和最优值。即
在这里插入图片描述
在这里插入图片描述

  • 68
    点赞
  • 410
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小天才才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值