强化学习中策略的迭代

news2024/11/27 8:42:15

一、策略迭代

        一旦使用vπ改善了策略π,产生了更好的策略π0,我们就可以计算vπ0并再次对其进行改进,产生更好的π00。因此,我们可以获得一系列单调改善的策略和值函数:

        其中E−→表示策略评估,I−→表示策略改进。每个策略都保证比前一个策略有严格改进(除非它已经是最佳的)。因为有限MDP只有有限数量的策略,所以这个过程必须在有限次迭代中收敛到最优策略和最优值函数。

        这种方法称为策略迭代。完整的算法如图1所示。请注意,每次策略评估本身都是迭代计算,都是从上一个策略的值函数开始的。这通常会导致策略评估的收敛速度大大提高(可能是因为值函数从一个策略到下一个策略变化不大)。

        这种寻找最优策略的方法称为策略迭代。完整的算法如图1所示。请注意,每次策略评估本身都是迭代计算,都是从上一个策略的值函数开始的。这通常会导致策略评估的收敛速度大大提高(可能是因为值函数从一个策略到下一个策略变化不大)。

        策略迭代通常在出人意料的少量迭代后就能收敛。网格世界的示例说明了这一点。底部左边的图显示了等概率随机策略的值函数,底部右边的图显示了针对该值函数的贪婪策略。策略改进理论保证了我们这些策略优于原始的随机策略。然而,在这种情况下,这些策略不仅是更好的,而且是最佳的,以最少的步骤到达终止状态。在这个例子中,策略迭代只需一次迭代就能找到最优策略。

图1

图1中,针对v∗的政策迭代(使用迭代策略评估)算法存在一个不易察觉的错误,即如果策略在两个或更多个同样好的策略之间持续切换,该算法可能永远无法终止。可以通过添加额外的标志来修复此错误,但这会使伪代码变得非常难看。

二、典型示例

        Jack经营着一家全国范围的汽车租赁公司的两个门店。每天,每个门店都会有一定数量的顾客前来租车。如果Jack手头有可用的汽车,他会将车出租出去,并获得该全国性公司提供的10美元信用。如果他在该门店没有汽车可用,那么这笔生意就泡汤了。汽车在归还后的第二天就可以出租。为了确保汽车在需要的地方可用,Jack可以在一晚之间将汽车从这两个地点之间进行调换,每次移动的费用为2美元。我们假设每个地点请求和归还的汽车数量是泊松随机变量,这意味着其概率是 ,其中λ是期望值。假设第一个和第二个门店的请求期望值λ分别为3和4,归还期望值分别为3和2。为了简化问题,我们假设每个地点最多只能停放20辆汽车(超出数量的汽车将被退还给全国性公司,从而从问题中消失),并且每晚最多可以从一个地点移动5辆汽车到另一个地点。我们将贴现率γ设置为0.9,并将此问题表述为一个持续的有限MDP,其中时间步长为天,状态为每天结束时每个地点的汽车数量,行动是在一夜之间两个地点之间移动的汽车数量的净差额。图2显示了从永不移动任何汽车的策略开始的政策迭代找到的策略序列。

图2

        图2显示了政策迭代在Jack的汽车租赁问题上找到的政策序列,以及最终的状态值函数。前五幅图展示了每天结束时每个地点的汽车数量,从第一个地点到第二个地点的汽车数量(负数表示从第二个地点转移到第一个地点的汽车数量)。每个连续的政策都是对前一个政策的严格改进,最后一个政策是最佳的。

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

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

相关文章

[云原生1. ] Docker 的安全及日志管理

文章目录 1. Docker自身存在的安全问题1.1 Docker 自身漏洞1.2 Docker 源码问题 2. Docker 架构缺陷与安全机制2.1 容器之间的局域网攻击2.2 DDoS 攻击耗尽资源2.3 有漏洞的系统调用2.4 共享root用户权限 3. Docker 安全基线标准3.1 docker容器使用安全注意点:3.1.1…

【Spring Boot 源码学习】JedisConnectionConfiguration 详解

Spring Boot 源码学习系列 JedisConnectionConfiguration 详解 引言往期内容主要内容1. RedisConnectionFactory1.1 单机连接1.2 集群连接1.3 哨兵连接 2. JedisConnectionConfiguration2.1 RedisConnectionConfiguration2.2 导入自动配置2.3 相关注解介绍2.4 redisConnectionF…

3.26每日一题(线性非齐次的特解如何设)

1、非齐次方程有e的2x次幂:特解也有e的2x次幂 2、e的2x次幂前面有特殊的一元方程:特解要设为一般的特征方程(axb) 3、求线性齐次特征方程的特征根; 4、判断e的 rx 次幂中的 r 和特征根有没有重合的个数:…

vue3的自定义指令

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (CustomDirectives)。 1.自定义指令的目的和简单介绍 自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 一个自定义指令由一个包含类似组件生命周期钩子的对象…

创建日期时间类型对象 pendulum.datetime()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建日期时间类型对象 pendulum.datetime() 选择题 请问pdl.datetime(2023,10,1,12,0,0)的结果是: import pendulum as pdl print("【执行】pdl.datetime(2023,10,1)") …

【数智化案例展】领克汽车——火山引擎助力领克汽车数字化营销实践

‍ 火山引擎案例 本项目案例由火山引擎投递并参与数据猿与上海大数据联盟联合推出的《2023中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 领克汽车是由吉利汽车、沃尔沃汽车和吉利控股集团合资成立的全球新高端品牌。据吉…

inno setup 运行时进行文件复制和替换

问题描述: 当我们采用 inno setup进行打包时,需要实现将安装包中的某个文件进行替换,而且我们知道在Winodws系统可以有xcopy和copy两个命令可以提供该功能;而xcopy命令进行文件复制时会有如下提示: 此时需要手动输入字…

【算法】单调栈 每日温度 接雨水

文章目录 例题739. 每日温度42. 接雨水 相关练习1475. 商品折扣后的最终价格901. 股票价格跨度1019. 链表中的下一个更大节点84. 柱状图中最大的矩形 单调栈【基础算法精讲 26】 例题 739. 每日温度 https://leetcode.cn/problems/daily-temperatures/description/ 提示&a…

麒麟V4搭建本地源

1.创建本地源目录 mkdir -p /package/pack 2.修改目录权限为_apt属组 chown _apt /package/pack 3.将软件包复制到/package/pack cp -av 软件包 /package/pack 4.修改目录权限为755 chmod -R 755 /package/ 5.创建本地源的index文件 dpkg-scanpackages . | gzip -9c &…

算法通关村第六村-白银挑战树的层序遍历

大家好我是苏麟 , 今天说说数的层序遍历 . 层次遍历简介 广度优先在面试里出现的频率非常高,整体属于简单题,但是很多人面试遇到时就直接放弃了,实在可惜。我们本章就集中研究一下到底难在哪里。 广度优先又叫层次遍历,基本过程…

Oracle-Ogg经典模式升级为集成模式步骤

​前言: Oracle Ogg集成模式比起经典模式功能更加的强大,支持更多的数据类型,压缩表同步,XA事务,多线程模式,PDB模式同步,RAC环境下抽取配置简单等新功能,所以可以选择将经典模式升级转化为集成…

The service already exists! 安装mysql数据库错误!

当你输入mysql install命令时报The service already exists! 报错的原因是服务已经存在! 说明你之前可能已经装过了。 解决方法: 输入sc delete mysql 提示DeleteService 成功,则表示删除成功,你就可以重新输入mysqld install了。 最后显…

IntelliJ IDEA 2022创建Maven项目

IntelliJ IDEA 2022创建Maven项目 点击New Project 配置一下下 (1). 选择Maven Archetype (2). 输入Name就是你的项目名称 (3). 输入Location是你的项目保存目录 (4). 选择JDK (5). 选择Catalog一般默认选择Internal即可 在Archetype这里我们选择一个模板来创建Maven项目 …

Mybatis学习(黑马程序员)

Mybatis操作数据库的步骤: 准备工作(创建springboot工程、数据库表user、实体类User)引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)编写SQL语句(注解/XML 1.创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包 2.在springb…

C++ 信息学奥赛 2046:【例5.15】替换字母

#include<cstdio> #include<iostream> using namespace std; int main() { char st[200];char A,B; int n0;while((st[n]getchar())!\n); //将原文存放在字符数组st中,并且要注意上述的最后分号 Agetchar();getchar();Bgetchar(); //读取A和B&#xff0c;中间get…

10 行代码即可检测脸部情绪

引言 面部表情展示人类内心的情感。它们帮助我们识别一个人是愤怒、悲伤、快乐还是正常。医学研究人员也使用面部情绪来检测和了解一个人的心理健康。 人工智能在识别一个人的情绪方面可以发挥很大的作用。在卷积神经网络的帮助下&#xff0c;我们可以根据一个人的图像或实时视…

mipi DPHY学习记录

DPHY的内容很多,而且细节很多,我会一点一点的进行补充记录,今天要记录的是cdphy的LP-MODE数据传输的过程。 1:HS 和LP mode lane status 和 lane上的电压 HS mode时,差分线上的电压摆幅为200mv,LP mode时,差分线上的电压为1.2v 2:HS mode data Transmission start 在…

SHAP(一):使用 XGBoost 预测英雄联盟获胜

SHAP&#xff08;一&#xff09;&#xff1a;使用 XGBoost 预测英雄联盟获胜 本笔记本使用 Kaggle 数据集 英雄联盟排名比赛&#xff0c;其中包含从 2014 年开始的 180,000 场英雄联盟排名比赛。 根据这些数据&#xff0c;我们构建了一个 XGBoost 模型&#xff0c;根据有关该球…

48基于matlab的经验傅里叶分解,适用于非线性及非平稳时间序列分析,将信号进行精确分解。程序已调通,可直接运行。

基于matlab的经验傅里叶分解&#xff0c;适用于非线性及非平稳时间序列分析&#xff0c;将信号进行精确分解。程序已调通&#xff0c;可直接运行。

3D高斯泼溅(Splatting)简明教程

在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 3D 高斯泼溅&#xff08;Splatting&#xff09;是用于实时辐射场渲染的 3D 高斯分布描述的一种光栅化技术&#xff0c;它允许实时渲染从小图像样…