强化学习8——在冰壶环境中使用策略迭代和价值迭代算法

news2024/11/26 21:39:23

冰壶环境

环境介绍

OpenAI Gym库中包含了很多有名的环境,冰湖是 OpenAI Gym 库中的一个环境,和悬崖漫步环境相似,大小为4×4的网格,每个网格是一个状态,智能体起点状态S在左上角,目标状G态在右下角,中间还有若干冰洞H。在每一个状态都可以采取上、下、左、右 4 个动作。由于智能体在冰面行走,因此每次行走都有一定的概率滑行到附近的其它状态,并且到达冰洞或目标状态时行走会提前结束。每一步行走的奖励是 0,到达目标的奖励是 1。

image.png

代码实例

通过创建环境,可以找出冰洞和目标状态。

import gymnasium as gym
# 创建环境
env = gym.make('FrozenLake-v1',render_mode="ansi")
# 解封装才能访问状态转移矩阵P
env = env.unwrapped

holes=set()
ends =set()
for s in env.P:
    for a in env.P[s]:
        for s_ in env.P[s][a]:
            # 获得奖励为1,代表是目标
            if s_[2]== 1.0 :
                ends.add(s_[1])
            if s_[3]==True:
                holes.add(s_[1])
holes=holes-ends
print("冰洞的索引:", holes)
print("目标的索引:", ends)

for a in env.P[14]:  # 查看目标左边一格的状态转移信息
    print(env.P[14][a])
冰洞的索引: {11, 12, 5, 7}
目标的索引: {15}
[(0.3333333333333333, 10, 0.0, False), (0.3333333333333333, 13, 0.0, False), (0.3333333333333333, 14, 0.0, False)]
[(0.3333333333333333, 13, 0.0, False), (0.3333333333333333, 14, 0.0, False), (0.3333333333333333, 15, 1.0, True)]
[(0.3333333333333333, 14, 0.0, False), (0.3333333333333333, 15, 1.0, True), (0.3333333333333333, 10, 0.0, False)]
[(0.3333333333333333, 15, 1.0, True), (0.3333333333333333, 10, 0.0, False), (0.3333333333333333, 13, 0.0, False)]

我们可以看到每个动作都会等概率“滑行”到 3 种可能的结果,我们接下来先在冰湖环境中尝试一下策略迭代算法。

# 这个动作意义是Gym库针对冰湖环境事先规定好的
action_meaning = ['<', 'v', '>', '^']
theta = 1e-5
gamma = 0.9
agent = PolicyIteration(env, theta, gamma)
agent.policyIteration()
print_agent(agent, action_meaning, [5, 7, 11, 12], [15])
策略评估进行25轮后完成
policyImprovement
策略评估进行58轮后完成
policyImprovement
状态价值:
 0.069  0.061  0.074  0.056
 0.092  0.000  0.112  0.000
 0.145  0.247  0.300  0.000
 0.000  0.380  0.639  0.000
策略:
<ooo ooo^ <ooo ooo^
<ooo **** <o>o ****
ooo^ ovoo <ooo ****
**** oo>o ovoo EEEE

价值迭代算法:

action_meaning = ['<', 'v', '>', '^']
theta = 1e-5
gamma = 0.9
agent = ValueIteration(env, theta, gamma)
agent.valueIteration()
print_agent(agent, action_meaning, [5, 7, 11, 12], [15])
价值迭代一共进行60轮
状态价值:
 0.069  0.061  0.074  0.056
 0.092  0.000  0.112  0.000
 0.145  0.247  0.300  0.000
 0.000  0.380  0.639  0.000
策略:
<ooo ooo^ <ooo ooo^
<ooo **** <o>o ****
ooo^ ovoo <ooo ****
**** oo>o ovoo EEEE

可以发现价值迭代算法的结果和策略迭代算法的结果完全一致,这也互相验证了各自的结果。

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

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

相关文章

计算机毕业设计----SSM BBS论坛

项目介绍 本项目包含前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,删除或者编辑用户的帖子,后台管理,友情链接管理,用户管理,版块管理,网站设置,用户设置,版块主题管理等功能。 用户角色…

fpmarkets盘点成功交易者的十个习惯(一)

在交易中能够盈利一次&#xff0c;fpmarkets认为这种情况100%的交易者都会做到&#xff0c;但是要做到每次交易都能盈利&#xff0c;即使是巴菲特也做到&#xff0c;我们只需要做到整体盈利就可以了&#xff0c;那么如何做到呢&#xff1f;今天fpmarkets就总结一下成功交易者的…

斑马斑马跳

欢迎来到程序小院 斑马斑马跳 玩法&#xff1a;行走的斑马&#xff0c;点击鼠标左键斑马左右跳动&#xff0c;左右两侧有大树&#xff0c;和移动的小鸟&#xff0c; 撞到大树和小鸟游戏结束&#xff0c;统计分数&#xff0c;快去斑马跳吧^^。开始游戏https://www.ormcc.com/pl…

2024农历新年是什么时候?电脑如何设置农历新年提醒

元旦的钟声已经远去&#xff0c;2024年的阳历新年就这样悄无声息地开始了。但对于我们很多人来说&#xff0c;真正的“过年”氛围&#xff0c;还得等到农历新年的到来。那么&#xff0c;今年的农历新年究竟是什么时候呢&#xff1f;答案是2月10日。 每当想到农历新年&#xff…

浅析进程优先级(上)

什么是进程优先级&#xff1f; 进程优先级&#xff1a;将处理器资源分配给进程的先后顺序 Linux 中每个进程都有相应的优先级 (优先级可能动态改变) 进程优先级决定进程 何时执行 和 获得处理器的时间 进程优先级通常表现为一个整数值 (数值大小决定优先级高低) Linux 中的…

寻找两个相交链表的相交节点

分析&#xff1a; 如图所示&#xff0c; A 长度为mkB长度为nk张三&#xff0c;李四两人分别从A和B的起始点相同速度出发&#xff0c;无论谁到达终点时&#xff0c;都从另一条队列的起点再次出发。假定起始&#xff0c;张三沿着A走&#xff0c;李四沿着B走。当李四到达终点后&a…

计算机毕业设计选题分享-node.js旅游景点分享网站03796(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等

node.js旅游景点分享网站 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。旅游景点分享网站设计&#xff0c;主要的模块包括查看后台首页、轮播图&#xff08;轮播图管理&#xff09;、网站公告…

list-watch和节点亲和性和node亲和性

k8s的集群调度 scheduler:负责调度资源&#xff0c;把pod调度到node节点 预算策略 优先策略 1、list-watch k8s集群当中&#xff0c;通过list-watch的机制进行每个组件的协作&#xff0c;保持数据同步&#xff0c;每个组件之间解耦 kubectl配置文件&#xff0c;向APIserv…

城堡世界定制

城堡世界是一款移动应用程序&#xff0c;通常在手机上使用。 该游戏的主要功能丰富多样&#xff0c;用户可以通过购买不同的城堡卡来开启自己的城堡&#xff0c;这不仅可以满足玩家对个性化的追求&#xff0c;还可以让玩家在游戏中获得更多的乐趣。 作为一家专注于互联网领域的…

Linux进程通信——system V进程间通信

目录 system V共享内存 共享内存的原理 共享内存的建立与释放 共享内存的创建 shmget 共享内存的释放 shmctl 共享内存的关联 shmat 共享内存的去关联 shmdt 用共享内存实现serve和client的简单通信 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的…

分治法:分而治之

排序算法中的快速排序&#xff0c;归并排序都用了分治思想 题目描述&#xff1a; 题目地址&#xff1a;LeetCode 50 数组中的第K个最大元素 题目描述&#xff1a; 题目地址&#xff1a;LeetCode 215

基于ssm的高校智能培训管理系统分析与设计论文

摘 要 如今的年代&#xff0c;已经是步入信息社会了&#xff0c;不仅信息更新速度频繁&#xff0c;信息量也大&#xff0c;在信息时代必须有相应的处理信息的方法&#xff0c;如果还采用以前的结绳记事或者笔写纸记&#xff0c;不仅是信息录入效率上赶不上节奏&#xff0c;在信…

Superset二次开发之提高Charts下载图片分辨率

需求:图片变高清 现状:Charts下载图片功能,下载的图片分辨率太差,用户体验不友好 源码分析 路径1:superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx接口1:DOWNLOAD_AS_IMAGE路径2:superset-frontend/src/utils/downloadAsImage.ts接口2:d…

VmWare虚拟机的安装

VmWare官方最新版下载地址 vmware官方下载地址 安装流程 安装成功验证 安装完成之后&#xff0c;打开网络中心&#xff0c;一定要确认这里多出两个网络连接&#xff0c;才证明Vmware已经安装成功

静态网页设计——千姿百色旅游网(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1oe411m7kH/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.co…

编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成

UnitGen 是我们从 UnitEval 拆分出来的代码数据集生成项目&#xff0c;旨在为基于开源模型供的私有化部署提供更好的编码数据集。 在结合开源模型 AutoDev 插件之后&#xff0c;你可以使用 UnitGen 结合企业内部现有的代码生成微调数据集&#xff0c;以让模型生成的代码更适合…

【大数据进阶第三阶段之Hive学习笔记】Hive安装

目录 1、环境准备 2、下载安装 3、配置环境变量 4、配置文件 4.1、配置hive-env.sh ​编辑4.2、配置hive-site.xml 5、上传配置jar 6、启动 1、环境准备 安装hadoop 以及 zookeeper、mysql 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 《z…

AntDB内存管理之内存上下文之如何使用内存上下文

5.如何使用内存上下文 使用内存上下文之前&#xff0c;我们需要先对其进行创建。AntDB启动时已经创建并初始化好了部分内存上下文&#xff0c;例如&#xff1a;TopMemoryContext。这个TopMemoryContext是所有内存上下文的父节点或者祖先节点。一般我们创建的内存上下文都在Top…

【docker笔记】Docker容器数据卷

Docker容器数据卷 卷就是目录或者文件&#xff0c;存在于一个或多个容器中&#xff0c;由docker挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过Union File System提供一些用于持续存储或共享数据的特性 卷的设计目的就是数据的持久化&#xff0c;完全独…

西南地区直播产业市场规模分析,透视成都直播基地产业全景

直播电商已进入全民化发展&#xff0c;作为一种新型的电子商务形式&#xff0c;成都直播产业园利用互联网渠道进行营销&#xff0c;为用户提供更具高度互动性、专业性、丰富、直观、实时的全面购物体验。本年度&#xff0c;西南地区直播产业市场规模宏大&#xff0c;以成都为代…