【数学建模】数学建模学习4---动态规划(例题+matlab代码实现)
文章目录
- @[toc]
- 1 动态规划
- 1.1 动态规划的发展及研究内容
- 1.2 决策过程的分类
- 2 基本概念、基本方程和计算方法
- 2.1 动态规划的基本概念和基本方程
- 2.1.1 阶段
- 2.1.2 状态
- 2.1.3 决策
- 2.1.4 策略
- 2.1.5. 状态转移方程
- 3 若干典型问题的动态规划模型
- 3.1 最短路线问题
- 3.2 生产计划问题
- 3.3 资源分配问题
- 4 具体的应用实例
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 距离最短(或费用最省)的路线。
例 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 出发到终点的最短距离(或最小费用),基本方程为
利用这个模型可以算出例 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 ,阶段指标为阶段的生产成本和储存费之和,即
指标函数Vkn 为vk 之和。最优值函数 f k (xk ) 为从第k 段的状态 xk 出发到过程终结的最小费用,满足
其中允许决策集合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 ) 满足
及自由终端条件
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)
则
注: x5 = 518.4台中的 0.4 台应理解为有一台机器只能使用 0.4 年将报废。
例 7 求解下面问题
解: 按问题的变量个数划分阶段,把它看作为一个三阶段决策问题。设状态变量为 x1 , x2 , x3 , x4 ,并记 x1 = c ;取问题中的变量u1 ,u2 ,u3 为决策变量;各阶段指标函数按乘积方式结合。令最优值函数fk(xk)表示第k 阶段的初始状态为 xk ,从k 阶段到 3阶段所得到的最大值。
由于 x1已知,因而按计算的顺序反推算,可得各阶段的最优决策和最优值。即
【数学建模】数学建模学习4---动态规划(例题+matlab代码实现)相关推荐
- 数学建模各类算法学习笔记(附matlab代码)
目录 插值和拟合 线性规划 综合评价1:层次分析法(Analytic Hierarchy Process)AHP 综合评价2:Topsis(优劣解距离法) 最优解问题1:遗传算法Genitic alg ...
- 无模型自适应迭代学习控制原理和matlab代码仿真学习记录
无模型自适应ILC原理及代码实现 这里学习的是很老的一篇论文<基于无模型自适应控制的反馈-前馈迭代学习控制系统收敛性研究>,作者是晏静文和侯忠生,大家有兴趣可以找来看看.这里主要介绍的无模 ...
- 【数学建模】数学建模学习3---非线性规划(例题+matlab代码实现)
文章目录 1 非线性规划 1.1 非线性规划的实例与定义 1.2 线性规划与非线性规划的区别 1.3 非线性规划的 Matlab 解法 1.4 凸函数.凸规划 2 无约束问题 2.1 一维搜索方法 2 ...
- 【数学建模】数学建模学习1---线性规划(例题+matlab代码实现)
1 线性规划 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题.此类问题构成了运筹学的一个重要分支-数学规划,而线性规划(Linear Programming 简 ...
- CG共轭梯度下降法【学习笔记、例题与代码】
资料 参考视频: [详细推导][本视频还证明了收敛性]https://www.bilibili.com/video/BV16a4y1t76z?from=search&seid=35153938 ...
- 数学建模图论算法学习总结
数学建模图论算法学习总结 图论基本知识 B站视频: https://www.bilibili.com/video/av18374161/?p=35 https://www.bilibili.com/v ...
- 浅谈数学、数学建模与人工智能(机器学习,深度学习)之间的关系?
前言: 说来也巧合,我在大学里加入的第一个社团就是数学建模,各种各样的社团对我没有完全没有吸引力,什么舞蹈.爱心.创业.英语等,加入数学建模的原因有二:一是可以参加比赛,二是可以认识更 ...
- 数学建模、运筹学之整数规划(原理、例题、代码)
数学建模.运筹学之整数规划(原理.例题.代码) 一.何为整数规划? 二.整数规划与线性规划 三.分枝定界法 四.0-1整数规划 一.何为整数规划? 整数规划具有深远的实际应用价值,因为现实生活中的规划 ...
- 数学建模常用方法 | matlab代码 | 二十三种数学建模方法 |2022赛前突击 |模型代码 |比赛比用、简单高效| 分享
为是赛前突击,所以就不过多的介绍理论知识了,直接上案例,matlab代码 更加详细例题解析: 公众h:露露IT 目录 1.类比法 2.二分法 3.量纲分析法 4.图论法 5.差分法 6.变分法 7.数 ...
- 数学建模之线性规划(含MATLAB代码)
文章目录 数学建模之线性规划 1. 线性规划 1.1 matlab中的标准形式 1.2 可转换为线性规划问题 2. 整数规划 2.1 分支定界算法 2.1.1 分支定界举例 2.1.2 matlab代 ...
最新文章
- 表达对别人的感激之情
- git服务器(gitea)安装说明
- 02、体验Spark shell下RDD编程
- Redis禁用危险命令
- 避免畸形儿受孕时间有10忌
- (StreamReader.ReadLine()==null)还是(-1 != StreamReader.Peek())?
- 学生用计算机怎么乘跟跟号号,3根号键的啊函数计算器价格多少,它与普通计 – 手机爱问...
- 这15个网站,为设计师提供用不完的免费素材
- 使用 vue 开发一个简单的滑块拖动验证码
- php 怎么把数组按拼音,php数组如何按拼音顺序排序
- 阿里云学生服务器购买教程(附用途案例)
- ID BOX 121电子护照阅读器(带RFID双天线)参数与应用说明
- 国内知名插画培训机构有哪些
- 192.168.8.1手机登陆_192.168.1.101登陆页面手机进入 即可登陆
- 用Python做一个简陋的文本编辑器
- 2012北京航空航天大学考研机试真题
- PAID Network攻击事件分析 | 零时科技
- stm32L151A超低功耗单片机实现电子秤代码
- 一百种消灭无聊的方法
- Mac 上无法使用brew安装软件问题处理记录