当前位置: 首页 > news >正文

强化学习入门(Matlab2021b)-创建环境【3】

目录

  • 1 前言
  • 2 根据类模板创建自定义环境
    • 2.1 创建类模板
    • 2.2 Environment properties(环境特性)
    • 2.3 Required Functions(需要的环境方法)
      • 2.3.1 Constructor function(构造函数)
      • 2.3.2 reset function
      • 2.3.3 step function
    • 2.4 Optional Functions(可选的环境方法)
    • 2.5 Environment Visualization(环境可视化)
  • 3 实例化定制环境
  • 参考链接

1 前言

本文介绍如何基于MATLAB创建和修改模板环境类,自定义强化学习环境。

Custom Template Environment:
1、实施更为复杂的环境动态;
2、添加自定义可视化;
3、创建以C + +、Java或Python等语言定义的第三方库的接口。

2 根据类模板创建自定义环境

2.1 创建类模板

首先创建类模板文件,指定类的名字:

rlCreateEnvTemplate("MyEnvironment")

函数rlCreateEnvTemplate创建并打开类模板文件。类模板是rl.env.MATLABEnvironment抽象类的一个子类。该抽象类与其他MATLAB强化学习环境对象使用的抽象类相同。

classdef MyEnvironment < rl.env.MATLABEnvironment

默认情况下,模板类实现了一个简单的车-杆平衡模型。

为了定义环境动态,将文件保存为MyEnvironment.m。然后对模板类的以下内容进行修改:

1、Environment properties
2、Required environment methods
3、Optional environment methods

2.2 Environment properties(环境特性)

在模板的属性部分,指定创建和模拟环境所需的任何参数。这些参数可以包括:

参数描述
物理常数如重力加速度
环境几何属性如物体质量、长度、体积等
环境约束如车-杆环境中杆角和车距的阈值约束,以用来检测episode结束条件
评估环境所需的变量如车-杆环境中定义的状态向量( State )和指示episode结束的标志( IsDone )
定义动作或观察空间的常量如车-杆环境中定义的动作空间最大力( MaxForce )
计算奖赏信号的常数如车-杆环境中定义的常数RewardForNotFalling和PenaltyForFalling
properties% 指定并初始化环境的必要属性 % Acceleration due to gravity in m/s^2Gravity = 9.8% Mass of the cartCartMass = 1.0% Mass of the polePoleMass = 0.1% Half the length of the poleHalfPoleLength = 0.5% Max force the input can applyMaxForce = 10     % Sample timeTs = 0.02% Angle at which to fail the episode (radians)AngleThreshold = 12 * pi/180% Distance at which to fail the episodeDisplacementThreshold = 2.4% Reward each time step the cart-pole is balancedRewardForNotFalling = 1% Penalty when the cart-pole fails to balancePenaltyForFalling = -10 
endproperties% 初始化系统状态 [x,dx,theta,dtheta]'State = zeros(4,1)
endproperties(Access = protected)% 初始化指示episode终止的内部标志,IsDone = false        
end

2.3 Required Functions(需要的环境方法)

强化学习环境需要定义以下函数:

函数描述
getObservationInfo返回有关环境观测的信息
getActionInfo返回有关环境行为的信息
sim使用智能体仿真环境
validateEnvironment通过调用reset函数对环境进行验证,并使用step对环境进行一个时间步的仿真
reset初始化环境状态并清理任何可视化
step施加一个动作,在环境仿真一步,输出观察结果和奖励;同时,标志位指示episode是否结束
Constructor function与创建类实例的类名相同的函数

其中getObservationInfo, getActionInfo, sim,和validateEnvironment函数已在基础抽象类中定义。必须要自定义的函数是constructor, reset, and step。

2.3.1 Constructor function(构造函数)

以车-杆环境为例,其构造函数是:

  1. 定义动作和观测规范。
  2. 调用基抽象类的构造函数。
% 自定义构造函数可以有输入参数
function this = MyEnvironment()% 初始化观测ObservationInfo = rlNumericSpec([4 1]);ObservationInfo.Name = 'Ca

相关文章:

强化学习入门(Matlab2021b)-创建环境【3】

目录 1 前言2 根据类模板创建自定义环境2.1 创建类模板2.2 Environment properties(环境特性)2.3 Required Functions(需要的环境方法)2.3.1 Constructor function(构造函数)2.3.2 reset function2.3.3 step function2.4 Optional Functions(可选的环境方法)2.5 Environment Vi…...

C++如何避免float误差?

C如何避免float误差&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; …...

深信服技术认证“SCCA-C”划重点:深信服超融合HCI

为帮助大家更加系统化地学习云计算知识&#xff0c;高效通过云计算工程师认证&#xff0c;深信服特推出“SCCA-C认证备考秘笈”&#xff0c;共十期内容。“考试重点”内容框架&#xff0c;帮助大家快速get重点知识 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08;S…...

Vue3路由元信息

路由元信息即定义路由时的meta信息 使用路由元信息定义页面在浏览器显示的标题 定义路由 const router createRouter({history:createWebHistory(import.meta.env.BASE_URL),routes:[{path:"/",component:()>import("/components/Login.vue"),meta:{…...

实用区块链应用:去中心化投票系统的部署与实施

一、需求分析背景 随着技术的发展&#xff0c;传统的投票系统面临着越来越多的挑战&#xff0c;如中心化控制、透明度不足和易受攻击等问题。为了解决这些问题&#xff0c;我们可以利用区块链技术去中心化、透明性和安全性来构建一个去中心化投票系统。这样的系统能够确保投票过…...

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种&#xff1a;Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…...

协程源码 launch 流程跟踪学习

为了更深入学习协程的底层实现原理&#xff0c;了解协程线程切换的根本本质。也为了以后在工作中可以根据不同的需求场景&#xff0c;更加随心所欲的使用不同的协程。 今天通过 launch 跟踪一下协程的执行流程。 fun getData() {Trace.beginSection("getData");Log.…...

苍穹外卖Day02——总结2

前期文章 文章标题地址苍穹外卖Day01——总结1https://blog.csdn.net/qq_43751200/article/details/135466359?spm1001.2014.3001.5501苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412 总结2 前期文章1. 新增员工模块1.1 …...

探索Nginx:一款高效、稳定的Web服务器和反向代理工具

在网站性能优化和架构设计中&#xff0c;Nginx以其高性能、低资源消耗和良好的扩展性成为了许多开发者和服务器管理员的首选。本文将为您详细介绍Nginx的概念、特点、安装、配置和使用&#xff0c;帮助您更好地了解并运用这款优秀的工具。 一、Nginx简介 Nginx&#xff08;发…...

文案改写软件,高效改文案的方法

在互联网飞速发展的今天&#xff0c;文案的重要性在营销和传播中变得越发突出。而高质量的文案内能够吸引人们的注意力&#xff0c;打动他们的心弦&#xff0c;这样更能促使他们产生需求。然而&#xff0c;想要写一篇引人入胜的文案并不容易&#xff0c;需要时间和经验来调整和…...

黑马头条-day10

文章目录 app端文章搜索1、文章搜索1.1 ElasticSearch环境搭建1.2 索引库创建①需求分析②ES导入数据场景分析③创建索引和映射 1.3 索引数据同步①app文章历史数据导入ES②文章实时数据导入ES 1.4 文章搜索多条件复合查询①关键词搜索②搜索接口定义 2、搜索历史记录2.1 需求说…...

C++的stack容器->基本概念、常见接口

#include<iostream> using namespace std; #include <stack> //栈stack容器常用接口 void test01() { //创建栈容器 栈容器必须符合先进后出 stack<int> s; //向栈中添加元素&#xff0c;叫做 压栈 入栈 s.push(10); s.push(20); s…...

VUE中引入外部jquery.min.js文件

jquery官网&#xff1a;https://jquery.com/ cdn链接&#xff1a;https://code.jquery.com/jquery-3.7.1.js <template><div class"">测试jq<div id"jq">这是一个盒子</div></div> </template><script> import…...

MongoDB聚合运算符:$avg

$avg运算符返回给定数值的平均值 $avg可用于以下阶段&#xff1a; $addFields阶段(从MongoDB 3.4开始可用)$bucket阶段$bucketAuto阶段$group阶段包含$expr表达式的$match阶段$project阶段$replaceRoot阶段(从MongoDB 3.4开始可用)$replaceWith阶段(从MongoDB 4.2开始可用)$s…...

Web 前端 UI 框架Bootstrap简介与基本使用

Bootstrap 是一个流行的前端 UI 框架&#xff0c;用于快速开发响应式和移动设备优先的网页。它由 Twitter 的设计师和工程师开发&#xff0c;现在由一群志愿者维护。Bootstrap 提供了一套丰富的 HTML、CSS 和 JavaScript 组件&#xff0c;可以帮助开发者轻松地构建和定制网页和…...

【Python笔记-设计模式】惰性评价模式

一、说明 将某些对象的创建或计算延迟到真正需要它们的时候&#xff0c;以减少不必要的资源消耗和提高性能。 惰性评价在Python中实现也成为生成器&#xff0c;一般通过yield关键字实现。 (一) 解决问题 在处理大量数据时&#xff0c;使用惰性加载可以避免一次性加载所有数…...

每日学习总结20240221

每日总结 20240221 花自飘零水自流。一种相思&#xff0c;两处闲愁。 —— 李清照「一剪梅红藕香残玉簟秋」 1. stat 在Linux中&#xff0c;stat 是一个用于显示文件或文件系统状态的命令行工具。它提供了关于文件的详细信息&#xff0c;包括文件类型、权限、大小、所有者、修…...

学生成绩管理系统(C语言课设 )

这个学生成绩管理系统使用C语言编写&#xff0c;具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中&#xff0c;并提供了多种功能&#xff08;增删改查等&#xff09;选项以满足不同的需求。 学生成绩管理系统功能: 显示学生信息增加学生信息删除学生信息…...

ChatGPT提示词(最新)

它能干什么? 包括但不限于&#xff1a; 类别描述学术论文它可以写各种类型的学术论文&#xff0c;包括科技论文、文学论文、社科论文等。它可以帮助你进行研究、分析、组织思路并编写出符合学术标准的论文。创意写作它可以写小说、故事、剧本、诗歌等创意性的文学作品&#…...

算法——模拟

1. 什么是模拟算法&#xff1f; 官方一点来说 模拟算法&#xff08;Simulation Algorithm&#xff09;是一种通过模拟现实或抽象系统的运行过程来研究、分析或解决问题的方法。它通常涉及创建一个模型&#xff0c;模拟系统中的各种事件和过程&#xff0c;以便观察系统的行为&a…...

Nanbeige 4.1-3B赋能微信小程序:打造智能客服对话机器人

Nanbeige 4.1-3B赋能微信小程序&#xff1a;打造智能客服对话机器人 最近在帮一个做电商的朋友琢磨怎么优化他们的客服系统。他们每天要处理大量重复的咨询&#xff0c;比如“什么时候发货”、“怎么退换货”&#xff0c;人工客服忙得团团转&#xff0c;用户还得排队等。这让我…...

Repomix构建流程解析:TypeScript编译与打包的完整指南

Repomix构建流程解析&#xff1a;TypeScript编译与打包的完整指南 【免费下载链接】repomix &#x1f4e6; Repomix (formerly Repopack) is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your cod…...

HunyuanVideo-Foley效果展示:火车进站音效+月台场景视频生成实录

HunyuanVideo-Foley效果展示&#xff1a;火车进站音效月台场景视频生成实录 1. 效果展示开场 想象一下这样的场景&#xff1a;一列蒸汽火车缓缓驶入月台&#xff0c;伴随着汽笛声、铁轨摩擦声和人群嘈杂声。现在&#xff0c;通过HunyuanVideo-Foley技术&#xff0c;我们可以一…...

静态图训练卡顿、NCCL超时、Graph Break频发?PyTorch 3.0分布式训练高频故障诊断与热修复清单,含12个可复用调试脚本

第一章&#xff1a;PyTorch 3.0静态图分布式训练故障全景认知PyTorch 3.0 引入的静态图编译&#xff08;TorchDynamo Inductor 后端&#xff09;与原生分布式训练&#xff08;如 FSDP、DDP&#xff09;深度耦合后&#xff0c;故障表现呈现多维交织特征&#xff1a;编译期图构建…...

探索AI原生应用领域向量数据库的无限潜力

探索AI原生应用领域向量数据库的无限潜力关键词&#xff1a;向量数据库、AI原生应用、Embedding、向量相似度、多模态检索、大模型协同、语义理解摘要&#xff1a;当AI从“辅助工具”进化为“原生生产力”&#xff0c;一种专为AI设计的数据库——向量数据库&#xff0c;正在重塑…...

2026年AI智能体大爆发:下一个十年风口,普通人的超级财富密码

比尔盖茨曾断言&#xff1a;“AI智能体&#xff08;AI Agent&#xff09;将彻底改变人们使用计算机的方式。”如果说2023年是大语言模型&#xff08;LLM&#xff09;的启蒙元年&#xff0c;那么到2026年&#xff0c;具备“感知-规划-行动”自主闭环能力的AI智能体将迎来真正的商…...

DFS经典例题(八皇后,数独)

1.1P1036 [NOIP 2002 普及组] 选数 解题思路 这里是组合思想与元素的排序无关&#xff0c;列举出所有符合的组合再判断是否符合素数 代码 #include<iostream> using namespace std; const int N 21; int a[N]; int path; int ret; int n, m;bool is(int path) {if (pa…...

DFPlayer Mini串口协议与嵌入式驱动开发实战

1. DFPlayer Mini 驱动库技术解析&#xff1a;面向嵌入式工程师的底层控制实践DFPlayer Mini 是 DFRobot 推出的一款高度集成、低成本、低功耗的串口控制 MP3 播放模块&#xff0c;广泛应用于智能语音播报、工业人机交互、教育机器人、IoT 音频终端等场景。其核心价值在于&…...

终极简单教程:如何使用bilibili-parse免费获取B站视频资源

终极简单教程&#xff1a;如何使用bilibili-parse免费获取B站视频资源 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 想要快速获取B站视频资源却不知道从何入手&#xff1f;bilibili-parse作为一款简…...

手把手教你用NOAA气象数据做可视化分析(含常见字段解析与避坑指南)

手把手教你用NOAA气象数据做可视化分析&#xff08;含常见字段解析与避坑指南&#xff09; 气象数据可视化是理解气候模式、分析极端天气事件的重要工具。美国国家海洋和大气管理局&#xff08;NOAA&#xff09;提供的全球历史气候网络日数据&#xff08;GHCN-Daily&#xff0…...