【管理运筹学】背诵手册(五)| 动态规划

news2024/9/22 4:01:01

五、动态规划

基本概念

阶段(Stage):将所给问题的过程,按时间或空间特征分解成若干相互联系的阶段,以便按次序去求解每阶段的解,常用字母 k k k 表示。

状态(State):各阶段开始时的客观条件叫做状态。描述各阶段状态的变量称为状态变量,常用 s k s_k sk 表示第 k k k 阶段的状态变量,状态变量 s k s_k sk 的取值集合称为状态集合,用 S k S_k Sk 表示。状态变量应具有无后效性:某阶段状态给定后,这个阶段以后过程的发展不受这段以前各状态的影响。

决策和策略(Decision and Policy):各阶段状态确定后,就可以作不同的决定,从而确定下一阶段的状态,这种决定称为决策。表示决策的变量称为决策变量,常用 u k ( s k ) u_k(s_k) uk(sk) 表示,允许的决策集合常用 D k ( s k ) D_k(s_k) Dk(sk) 表示。各阶段决策确定后,整个问题的决策序列就构成一个策略。

状态转移方程:如果给定了第 k k k 阶段的状态 s k s_k sk ,本阶段决策为 u k ( s k ) u_k(s_k) uk(sk) ,则第 k + 1 k+1 k+1 阶段的状态 s k + 1 s_{k+1} sk+1 也就完全确定,它们的关系就称为状态转移方程。

指标函数:用于衡量所选定策略优劣的数量指标称为指标函数。直接指标函数表示某阶段的决策产生的效益,常用 d k ( u k ) d_k(u_k) dk(uk) 表示。最优指标函数表示从第 k k k 阶段状态为 s k s_k sk 采用最优策略时,后部过程的最优收益值,常用 f k ( s k ) f_k(s_k) fk(sk) 表示。

五要素

动态规划模型五要素:

  1. 将问题按时空特征恰当地划分为若干个阶段。
  2. 正确地规定状态变量 s k s_k sk ,使得它既能描述过程的演变,又具有无后效性。
  3. 正确地规定决策变量 u k u_k uk 以及每阶段的允许决策集合 D k ( s k ) D_k(s_k) Dk(sk) .
  4. 正确写出状态转移方程 s k + 1 = g k ( s k , u k ) s_{k+1}=g_k(s_k,u_k) sk+1=gk(sk,uk)
  5. 正确地定义各阶段的直接指标函数 d k ( s k , u k ) d_k(s_k,u_k) dk(sk,uk) 和后部子过程的最优指标函数 f k ( s k ) f_k(s_k) fk(sk) ,并写出基本方程(以 max ⁡ \max max 和相加求收益为例): { f k ( s k ) = max ⁡ { d k ( s k , u k ) + f k + 1 ( s k + 1 ) } , k = n , n − 1 , ⋯   , 1 f n + 1 ( s n + 1 ) = 0 , 边界条件 \begin{cases} f_k(s_k)=\max\{d_k(s_k,u_k)+f_{k+1}(s_{k+1})\} &,k=n,n-1,\cdots,1 \\ f_{n+1}(s_{n+1})=0&,边界条件\end{cases} {fk(sk)=max{dk(sk,uk)+fk+1(sk+1)}fn+1(sn+1)=0,k=n,n1,,1,边界条件

生产存储问题

做题时,我们可也按照动态规划模型五要素进行建模,以生产与储存问题为例。

在这里插入图片描述

解: 将问题划分为 4 4 4 个阶段( k = 1 , 2 , 3 , 4 k=1,2,3,4 k=1,2,3,4),每个阶段表示一个时期;状态变量 s k s_k sk 表示第 k k k 阶段开始时的库存量;决策变量 x k x_k xk 表示第 k k k 阶段的产品生产量, d k d_k dk 表示第 k k k 阶段的产品需求量,则状态转移方程为: s k + 1 = s k + x k − d k s_{k+1}=s_k+x_k-d_k sk+1=sk+xkdk 直接指标函数 g k ( x k ) g_k(x_k) gk(xk) 表示第 k k k 阶段决策为 x k x_k xk 时的成本,包括生产成本 c k ( x k ) c_k(x_k) ck(xk) 和存储成本 m k ( x k ) m_k(x_k) mk(xk) 。其中, c k ( x k ) = { 0 , x k = 0 3 + x k , x k = 1 , 2 , ⋯   , 6 ∞ , x k > 6 c_k(x_k)=\begin{cases} 0&,x_k=0\\ 3+x_k&,x_k=1,2,\cdots,6\\ \infty&,x_k>6 \end{cases} ck(xk)= 03+xk,xk=0,xk=1,2,,6,xk>6 m k ( x k ) = 0.5 ( s k + x k − d k ) m_k(x_k)=0.5(s_k+x_k-d_k) mk(xk)=0.5(sk+xkdk) 。最优指标函数 f k ( s k ) f_k(s_k) fk(sk) 表示第 k k k 阶段状态为 s k s_k sk 采用最优策略时,后部过程的最小成本,则递推基本方程为: f k ( s k ) = { min ⁡ { c k ( x k ) + m k ( x k ) + f k + 1 ( s k + 1 ) } , k = 4 , 3 , 2 , 1 f 5 ( s 5 ) = 0 f_k(s_k)=\begin{cases} \min\{c_k(x_k)+m_k(x_k)+f_{k+1}(s_{k+1})\},k=4,3,2,1\\ f_5(s_5)=0\end{cases} fk(sk)={min{ck(xk)+mk(xk)+fk+1(sk+1)},k=4,3,2,1f5(s5)=0 随后便是每个阶段的求解了,最关键的就是确定 s k s_k sk x k x_k xk 的取值范围,需要瞻前顾后,考虑每阶段的生产能力以及最后阶段的库存要求。

设备更新问题

对于设备更新问题,教材上用了别的符号,让人难以和之前的联系起来,但其实它也可以用我们常见的符号表达的。用一个实际题目来说明。

在这里插入图片描述
在这里插入图片描述
解: 将问题分为 5 个阶段( k = 1 , 2 , 3 , 4 , 5 k=1,2,3,4,5 k=1,2,3,4,5),每个阶段代表一年。状态变量 s k s_k sk 表示第 k k k 阶段初机器的役龄,决策变量 x k x_k xk 表示第 k k k 阶段时保留(K)还是更新(R)。则状态转移方程为: s k + 1 = { s k + 1 , x k = K 1 , x k = R s_{k+1}=\begin{cases} s_k+1&,x_k=K\\ 1&,x_k=R \end{cases} sk+1={sk+11,xk=K,xk=R 直接指标函数 g k ( x k ) g_k(x_k) gk(xk) 表示第 k k k 阶段做出决策 x k x_k xk 的收入, I k ( s k ) I_k(s_k) Ik(sk) 表示第 k k k 阶段役龄为 s k s_k sk 的机器带来的收入, O k ( s k ) O_k(s_k) Ok(sk) 表示第 k k k 阶段役龄为 s k s_k sk 的机器的运行费用, C k ( s k ) C_k(s_k) Ck(sk) 表示第 k k k 阶段役龄为 s k s_k sk 的机器更新费用,则有 g k ( x k ) = { I k ( s k ) − O k ( s k ) , x k = K I k ( 0 ) − O k ( 0 ) − C k ( s k ) , x k = R g_k(x_k)=\begin{cases} I_k(s_k)-O_k(s_k)&,x_k=K\\ I_k(0)-O_k(0)-C_k(s_k)&,x_k=R \end{cases} gk(xk)={Ik(sk)Ok(sk)Ik(0)Ok(0)Ck(sk),xk=K,xk=R 最优指标函数 f k ( s k ) f_k(s_k) fk(sk) 表示第 k k k 阶段役龄为 s k s_k sk 的机器采用最优策略时,后部过程的最大收入,可写出递推基本方程为: f k ( s k ) = { max ⁡ { g k ( x k ) + f k + 1 ( s k + 1 ) } , k = 5 , 4 , 3 , 2 , 1 f 6 ( s 6 ) = 0 f_k(s_k)=\begin{cases} \max\{g_k(x_k)+f_{k+1}(s_{k+1})\},k=5,4,3,2,1\\ f_6(s_6)=0\end{cases} fk(sk)={max{gk(xk)+fk+1(sk+1)},k=5,4,3,2,1f6(s6)=0 剩下就是根据表中的数据代入递推方程了。

静态规划问题

动态规划方法还可以用来求解一些静态规划问题,如整数规划和非线性规划问题等。一般将约束条件的右端资源量作为状态变量,决策变量为原规划问题的决策变量,直接指标函数为目标函数对应的部分。

有时候最后一个阶段的直接指标函数较为复杂,可以换一换次序,简化计算。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1245103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS APP包分析工具 | 京东云技术团队

介绍 分享一款用于分析iOSipa包的脚本工具,使用此工具可以自动扫描发现可修复的包体积问题,同时可以生成包体积数据用于查看。这块工具我们团队内部已经使用很长一段时间,希望可以帮助到更多的开发同学更加效率的优化包体积问题。 工具下载…

HTB Codify WriteUp

Codify 2023年11月7日 20:59:48user nmap ➜ Codify nmap -A 10.10.11.239 Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-07 21:00 CST Nmap scan report for bogon (10.10.11.239) Host is up (0.14s latency). Not shown: 997 closed ports PORT STATE SERVI…

An issue was found when checking AAR metadata

一、报错信息 An issue was found when checking AAR metadata:1. Dependency androidx.activity:activity:1.8.0 requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs.:app is currently compiled against …

spark的算子

spark的算子 1.spark的单Value算子 Spark中的单Value算子是指对一个RDD中的每个元素进行操作,并返回一个新的RDD。下面详细介绍一些常用的单Value算子及其功能: map:逐条映射,将RDD中的每个元素通过指定的函数转换成另一个值&am…

009 OpenCV 二值化 threshold

一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、二值化算法 2.1、概述 在机器视觉应用中,OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理,以此大幅降低图像的数…

app小程序定制的重点|软件定制开发|网站搭建

app小程序定制的重点|软件定制开发|网站搭建 App小程序定制开发是近年来快速发展的一项技术服务,随着移动互联网的普及和用户需求的不断升级,越来越多的企业和个人开始关注和需求定制化的小程序开发。那么,对于app小程序定制开发来说&#xf…

第十五届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组(详细分析解答)

目录 1.动态的Tab栏 1.1 题目要求 1.2 题目分析 1.3 源代码 2.地球环游 2.1 题目要求 2.2 题目分析 2.3 源代码 3.迷惑的this 3.1 题目要求 3.2 题目分析 3.3 源代码 4.魔法失灵了 4.1 题目要求 4.2 题目分析 4.3 源代码 5.燃烧你的卡路里 5.1 题目要求 5.2…

U-boot(四):start_armboot

本文主要探讨210的uboot启动的第二阶段,主要函数为start_armboot。 uboot 一阶段初始化SoC内部部件(看门狗、时钟等),初始化DDR,重定位 二阶段初始化其余硬件(iNand、网卡芯片)以及命令、环境变量等 启动打印硬件信息,进入bootdelay,读秒完后执行bootc…

(2023码蹄杯)省赛(初赛)第二场真题(原题)(题解+AC代码)

题目1&#xff1a;MC0214捡麦子 码题集OJ-捡麦子 (matiji.net) 思路: 1.第n米在前n-1米的基础上多加一个n个麦子&#xff0c;那么直接从1开始枚举&#xff0c;累加答案即可 AC_Code:C #include<bits/stdc.h> using namespace std;int main( ) {int n; cin>>n;…

ES6 — ES14 新特性

一、ES6 新特性&#xff08;2015&#xff09; 1. let和const 在ES6中&#xff0c;新增了let和const关键字&#xff0c;其中 let 主要用来声明变量&#xff0c;而 const 通常用来声明常量。let、const相对于var关键字有以下特点&#xff1a; 特性varletconst变量提升✔️全局…

NX二次开发UF_CAM_update_list_object_customization 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_update_list_object_customization Defined in: uf_cam.h int UF_CAM_update_list_object_customization(tag_t * object_tags ) overview 概述 This function provids the…

Elasticsearch:ES|QL 函数及操作符

如果你对 ES|QL 还不是很熟悉的话&#xff0c;请阅读之前的文章 “Elasticsearch&#xff1a;ES|QL 查询语言简介​​​​​​​”。ES|QL 提供了一整套用于处理数据的函数和运算符。 功能分为以下几类&#xff1a; 目录 ES|QL 聚合函数 AVG COUNT COUNT_DISTINCT 计数为近…

web:[WUSTCTF2020]朴实无华

题目 点开页面显示如下 页面显示了一行报错&#xff1a;Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:3) in /var/www/html/index.php on line 4 意思为不能修改报头信息-报头已经发送(输出开始于/var/www/html/i…

Ubuntu20.04 install pnpm

npm install -g pnpm referrence link: Installation | pnpmPrerequisiteshttps://pnpm.io/installation

嵌入式系统在工业自动化中的应用

嵌入式系统在工业自动化中的应用非常广泛&#xff0c;它们通过集成控制和实时响应能力&#xff0c;实现了生产线的自动化、智能化和高效化。以下将详细介绍嵌入式系统在工业自动化中的几个重要应用领域&#xff0c;并提供一些示例代码。 1. PLC&#xff08;可编程逻辑控制器&a…

Maven 简单配置阿里云镜像

配置步骤&#xff1a; 1、找到 maven 的安装目录&#xff0c;修改settings.xml 2、在文件中找到<mirrors>标签&#xff0c;然后再标签中添加阿里云配置即可 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共…

FFmpeg常用命令讲解及实战二

文章目录 前言一、ffmpeg 常用命令1、ffmpeg 的封装转换2、ffmpeg 的编转码3、ffmpeg 的基本编转码原理 二、ffprobe 常用参数1、show_format2、show_frames3、show_streams4、print_format5、select_streams 三、ffplay 的常用命令1、ffplay 常用参数2、ffplay 高级参数3、ffp…

ARCore:在Android上构建令人惊叹的增强现实体验

ARCore&#xff1a;在Android上构建令人惊叹的增强现实体验 一、 AR 介绍1.1 AR技术简介1.2 AR技术原理1.3 AR技术应用领域 二、Google的增强现实平台ARCore2.1 ARCore简介2.2 ARCore API介绍2.3 ARCore API使用示例 三、总结 一、 AR 介绍 增强现实 Augmented Reality&#x…

python中一个文件(A.py)怎么调用另一个文件(B.py)中定义的类AA详解和示例

本文主要讲解python文件中怎么调用另外一个py文件中定义的类&#xff0c;将通过代码和示例解读&#xff0c;帮助大家理解和使用。 目录 代码B.pyA.py 调用过程 代码 B.py 如在文件B.py,定义了类别Bottleneck&#xff0c;其包含卷积层、正则化和激活函数层&#xff0c;主要对…

【OpenCV实现图像:可视化目标检测框】

文章目录 概要画框函数代码实现标签美化角点美化透明效果小结 概要 目标检测框的可视化在计算机视觉和机器学习领域中是一项重要的任务&#xff0c;有助于直观地理解和评估目标检测算法的性能。通过使用Python和相关的图像处理库&#xff0c;可以轻松实现目标检测框的可视化。…