运筹说 第65期 | 动态规划的基本概念和基本原理

news2024/9/24 12:17:48

20世纪50年代初,美国数学家R. Bellman 等人在解决多阶段决策优化问题时提出了一种高效的求解方法——动态规划Dynamic Programming),该方法基于多阶段决策优化问题的特点,把多阶段问题转换为一系列互相联系的单阶段问题,然后逐一解决

相比于线性规划方法,动态规划由于其独特的解题思路,在路径优化、资源分配、生产调度、库存管理和投资组合等优化问题上更加高效,并成功解决了交通运输、生产管理、工程技术、军事决策等领域的许多实际问题。

动态规划模型可以分为离散确定型、离散随机型、连续确定型和连续随机型四种,其中,离散确定型是最基本的一种类型。

因此,本期开始,小编将主要针对离散确定型问题,从基本概念、基本原理、模型建立和求解方法以及具体应用等方面对动态规划问题进行介绍。

通过对动态规划问题基础知识进行梳理和总结,小编绘制了《动态规划思维导图》,如下图所示。动态规划问题章节一共有6个知识点

1个知识点是多阶段决策问题,对多阶段决策问题的概念进行了介绍。

2个知识点是动态规划的基本概念,对将实际问题写成动态规划模型所用到的5个基本概念进行介绍。

3个知识点是动态规划的基本原理,包括动态规划的基本思想和最优化原理

4个知识点和第5个知识点分别是动态规划模型的建立与求解,该部分阐述了动态规划模型的建立步骤,并重点介绍了顺序法逆序法其他求解常用算法

6个知识点是动态规划在经济管理中的应用,包括背包问题生产经营问题设备更新问题

今天,小编先带大家学习多阶段决策问题及动态规划问题的基本概念和基本原理

一、多阶段决策问题

多阶段决策是指这样一类特殊的决策过程,它可以按时间顺序分解成若干相互联系的时段或阶段,决策者需要在每一个时段做出相应的决策,最终所有时段的决策形成一个全过程的决策序列,以便达到整个决策过程的全局最优。由于各时段的决策间存在着有机的联系,某一时段的决策执行将影响到下一时段的决策制定,以至于最终影响全局的优化效果,所以在做每个时段的决策时,决策者不仅需要考虑本时段内的效果最优,还应该考虑该决策对最终优化目标的影响,从而做出能够达到全局最优的决策序列。

动态规划就是符合上述要求的一种多阶段决策优化方法。

二、动态规划的基本概念

使用动态规划方法解决多阶段决策问题,首先要将实际问题改写成动态规划模型,此时,要用到以下概念:

1、动态规划的基本概念

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

(2)状态:各阶段开始时客观条件,常用sk表示第k阶段的状态变量。

(3)决策和策略:当各段的状态取定以后,就可以做出不同的决策,从而确定下一阶段的状态,这种决定称为决策,常用uk(sk)表示第k阶段当状态为sk的决策变量;在实际问题中决策变量的取值往往在某一范围之内,此范围称为允许决策集合,常用Dk(sk)表示第k阶段从状态sk出发的允许决策集合。

各段决策确定后,整个问题的决策序列就构成一个策略,用 。对于每个实际问题,可供选择的策略有一定范围,称为允许策略集合,记作P1,n,使整个问题达到最有效果的策略就是最优策略。

(4)状态转移方程:状态转移方程是确定过程由一个状态到另一个状态的演变过程,记为sk+1=Tk(sk, uk)。

(5)指标函数和最优值函数:指标函数是用于衡量所选定策略优劣的数量指标,是定义在全过程和后部子过程上的函数,常用Vk,n表示,即Vk,n=Vk,n(sk, uk, sk+1,…, sn+1),k=1,2,…,n,动态规划中的指标函数应具有可分离性,并满足递推关系。

常用的指标函数包括:

①全过程或后部子过程指标是它所包含的各阶段指标的求和,即

②全过程或后部子过程指标是它所包含的各阶段指标的乘积,即

指标函数的最优值称为最优值函数,记为fk (sk),它表示从第k阶段的状态sk开始到第n 阶段的终止状态的决策过程,在采取了最优策略后得到的指标函数值,即

其中“opt”是最优化(optimization)的缩写,可根据题意更换为 min 或 max。

2、例题

下面,小编将通过一个例题来对上述问题的基本概念进行详细的阐述。给定一个线路网络图,要从A地向F地铺设一条输油管道,各点间连线上的数字表示距离,问应选择什么路线,可使总距离最短?

(1)阶段

AF可以分成从AB,从BC,从CD,从DE,再从EF。五个阶段。k=1,2,3,4,5

(2)状态

第一阶段状态为A,第二阶段有两个状态:B1和B2,以此类推。

状态变量s1的集合S1={A};

状态变量s2的集合S2={B1, B2};

状态变量s3的集合S3={C1, C2, C3, C4};

状态变量s4的集合S4={D1, D2, D3};

状态变量s5的集合S5={E1, E2}。

(3)决策和策略

例如从第二阶段的状态B1出发,可选择下一阶段的C1, C2, C3,即其允许决策集合为D2(B1)={C1, C2, C3, C4};若我们决定选择C3,则可表示决策为u2(B1)=C3。

(4)状态转移方程

该问题的状态转移方程为sk+1= uk(sk)

(5)指标函数

该问题的指标函数为两点间的距离

三、动态规划的基本原理

1、最优化原理

动态规划方法基于贝尔曼(R.Bellman)等人提出的最优化原理,可以表述为:

一个过程的最优策略具有这样的性质:即无论初始状态及初始决策如何,对于先前决策所形成的状态而言,其以后所有的决策应构成最优策略。换句话说,一个最优策略的子策略也是最优的

2、基本思想

(1)例题引入

下面以最短路问题为例来介绍动态规划方法的基本思想。

例题:从A地到D地要铺设一条煤气管道,其中需经过两级中间站,两点之间的连线上的数字表示距离,如图所示。问应该选择什么路线,使总距离最短?

不难发现,根据最优化原理,如果A→M→N→E是起点A到终点D的一条最短路径,那么M→N→D必然也是从点M到终点D的最短路径。如果不是这样,则从点M到D必然存在另一条距离更短的路径M→N'→D,把它和A→M连接起来,就可以得到一条由A到D的新路径A→M→N'→D,它比原路径的行驶距离更短,这与假设矛盾。根据最短路问题的这一特点,可以从最后一段开始,采用由后向前逐步递推的方式,求出各点到E点的最短路径,直至最后求得由A到E的最短路径为止。

【求解过程】

将整个路径优化过程分为三个阶段A→B,B→C,C→D。从最后一个阶段开始计算,然后从后向前逐步推移至A点。

第三阶段(C→D:k=3时,C有三条路线到终点D。

显然有f3(C1)=1;f3(C2)=3 ;f3(C3)=4

第二阶段(B→C:k=2时,B有六条路线到C。

从状态B1出发,可得

对应的最短路径为B1→C1→D。同理,从状态B2出发,可得

对应的最短路径为B2→C1→D

第一阶段(A→B:k=1时,A到B有两条路线。

对应的最短路径为AB1→C1→D,路长为6。

最短路线求解过程可以用一张图直观地表示出来。

(2)最优方程

从例题的计算过程中可以看出,在求解的各阶段,都利用了第k段和第k+1段的如下关系:

其中,边界条件

这种递推关系称为动态规划的基本方程,是根据最优性定理写出的。动态规划的基本方程是递推逐段求解的根据,一般来说,当指标函数为求和形式时,逆序求解的动态规划基本方程可以表示为上式。

(3)基本思想总结

①将多阶段决策过程划分阶段,恰当地选取状态变量、决策变量及定义最优指标函数,从而把问题化成一族同类型的子问题,然后逐个求解。

求解时从边界条件开始,逆(或顺)过程行进方向,逐段递推寻优。在每一个子问题求解时,都要使用它前面已求出的子问题的最优结果,最后一个子问题的最优解,就是整个问题的最优解。

③动态规划方法是既把当前一段与未来各段分开,又把当前效益和未来效益结合起来考虑的一种最优化方法,因此每段的最优决策选取是从全局考虑的,与该段的最优选择一般是不同的。

3、小结

(1)利用最优化原理,可以把多阶段决策问题求解过程表示成一个连续的地推过程,由后向前逐步计算。在求解时,前面的各状态与决策,对后面的子过程来说,只相当于初始条件,并不影响后面子过程的最优决策。

(2)为了求出最短路线,一种简单的方法(穷举法)是求出所有从A到D的可能铺设的长度并加以比较。但当问题的阶段数很多、每段的状态也很多时,穷举法的计算量会大大增加,甚至使求优成为不可能。

相比之下,动态规划方法计算量小,而且计算结果不仅得到了全局最优的结果,也得到了中间任意一段的最优结果。

以上就是本期动态规划的全部内容啦,通过对这一期的学习,我们对动态规划有了初步的了解,大家也可以在日常生活中寻找多阶段决策问题的案例,并尝试用动态规划的思想去求解吧!

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

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

相关文章

【经典算法】有趣的算法之---遗传算法梳理

every blog every motto: You can do more than you think. 0. 前言 遗传算法是一种基于自然选择和遗传机制的优化算法,因此它通常被用于求解各种最优化问题,例如函数优化、特征选择、图像处理等。 一言以蔽之: 将数学中的优化问题&#xf…

人机协同中存在一个独特的时空体系

一、在人机协同中存在一个独特的时空体系 在人机这个独特的时空体系中,人和机器之间的时间和空间的交织和共同作用。 在时间维度上,人机协同体系中的人和机器具有不同的时间节奏和速度。人类有限的生命周期和有时候需要休息的需求使得他们的工作时间和生…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (3) | 正则化与最优化

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

Android 12+ MQTT适配

最终的解决方案是下载源码去改。我用的是已经修改好了的库,如果包名要自己的, 要注意: 1. compileSdk 34 和 targetSdk 34 改成33(Android12)或者34(Android13)。 2. 下载的 module 导入。 …

【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?

文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…

QT属性动画

时间记录:2024/1/15 一、介绍 属性动画类为QPropertyAnimation,类似于CSS的keyframes关键帧 二、分类及使用步骤 1.几何动画 (1)创建QPropertyAnimation对象 (2)setPropertyName方法设置属性名称&#…

谷歌验证码|某爬虫问答社区登录参数分析

关注它,不迷路。 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1.目标地址 aHR0cHM6Ly9iYnMubmlnaHR0ZWFtLmNuL21lbWJlci5waHA/bW9kPW…

高通平台开发系列讲解(PCIE篇)MHI (Modem Host Interface)驱动详解

文章目录 一、MHI驱动代码二、MHI读数据流程三、MHI写数据流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢MHI (Modem Host Interface)我们通过名字顾名思义知道,它是Modem与Host的桥梁。 MHI 可以很容易地适应任何外围总线,但它主要用于基于 PCIe 的设备。 MHI(…

ElasticSearch降本增效常见的方法 | 京东云技术团队

Elasticsearch在db_ranking 的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。 随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法&#x…

Odrive 学习系列三:在odrive工程中添加SEGGER RTT 日志输出功能

一、背景: 对于嵌入式来讲,有个日志输出真真真真的太重要啦! SEGGER JLink自带的RTT日志输出对于老嵌入式而言更是开发利器。 Odrive本身的工程是不带这个功能的,尽管使用stlink可以查阅寄存器等,但感觉还是差了点意思。因此在本系列第二节的基础上,希望能给Odrive工程添…

Notepad++编译运行C/C++程序

首先需要先下载一个C语言编译器-MinGW(免费的) 官网:http://www.mingw.org/(加载太慢) 我选择MinGW - Minimalist GNU for Windows download | SourceForge.net这个网址下载的 注意安装地址,后续配置环境…

unique()函数

这篇博客是本人在学习算法中遇到的一个常用的函数&#xff0c;记录分享给大家 注意 &#xff1a;unique&#xff08;&#xff09;函数是删除相邻的重复元素&#xff0c;并且返回的是去重范围后的第一个元素的地址&#xff0c;左闭右开 #include <bits/stdc.h> using na…

CAN-位填充

位填充定义&#xff08;Bit Stuffing&#xff09; 当CAN节点发送 逻辑电平&#xff08;显性dominant或隐性recessive&#xff09;为持续相同的5位时&#xff0c;它必须添加一位反向电平。 CAN接收 节点会自动删除这个新增的额外电平位。 位填充作用 1---位填充是为了防止突发…

Codeforces Round 114 (Div. 1) C. Wizards and Numbers(思维题 辗转相除+博弈 巴什博弈)

题目 t(t<1e4)组询问&#xff0c;每次询问(a,b)&#xff08;0<a,b<1e18&#xff09;&#xff0c; 不妨a<b&#xff08;a>b时需要交换两个数考虑&#xff09; ①令b减去a的k次方&#xff08;k>1&#xff09;&#xff0c;要求减完之后b非负 ②令bb%a 当a和…

华媒舍:溯源媒体发稿,助推品牌快速突破

在当今残酷竞争的市场环境中&#xff0c;品牌的快速突破变成了公司发展的关键之一。溯源新闻媒体发稿作为一项强有力营销推广方式&#xff0c;为品牌快速建立名气、提升口碑品牌形象提供了重要适用。下面我们就详细介绍如何给品牌订制溯源新闻媒体发稿对策&#xff0c;并探讨其…

目标检测-One Stage-YOLOv8

文章目录 前言一、YOLOv8的网络结构和流程二、YOLOv8的创新点三、创新点详解CSP、C3和C2fTaskAlignedAssigner 正样本分配策略Distribution Focal Loss关闭 Mosiac 总结 前言 终于到了YOLO系列最新最火爆的网络–YOLOv8&#xff0c;前面YOLOv5中已经提到ultralytics团队集成了…

开源iMES工厂管家 - 安装部署指南

环境&#xff1a; 总览&#xff1a; 下载 node-v16.17.1-win-x64&#xff1a;Index of /download/release/v16.17.1/ 官网&#xff1a;https://nodejs.org/en/download 历史版本下载&#xff1a;Index of /download/release/ 绿色解压安装 node-v16.17.1-win-x64&#xff1a;…

LeetCode 每日一题 Day 44 || 哑节点去重

82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 示例 2&#x…

CSS 水浪按钮

<template><view class="content"><button class="button"><view class="liquid"></view><view class="btn-txt">水浪按钮</view></button></view></template><scrip…

20240115在ubuntu20.04.6下给GTX1080M显卡安装驱动程序和CUDA

20240115在ubuntu20.04.6下给GTX1080M显卡安装驱动程序和CUDA 2024/1/15 18:05 百度搜索&#xff1a;ubuntu gtx1080m cuda https://blog.csdn.net/wb4916/article/details/129462103 20230311给Ubuntu18.04下的GTX1080M安装驱动 https://www.cnblogs.com/djiankuo/p/5886605.h…