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

目录

  • 1 前言
  • 2 利用step和reset函数创建自定义环境
    • 2.1 对象描述
    • 2.2 reset函数
    • 2.3 step函数
    • 2.3 构建自定义环境
  • 3 使用匿名函数传递额外的参数
  • 4 可视化检查自定义函数的输出
  • 参考链接

1 前言

本文介绍如何基于MATLAB编写step、reset函数,创建自己的强化学习环境(Environment)。

使用 rlFunctionEnv 函数,可以根据观察(observation)规范、动作(action)规范和自己创建的step、reset函数创建 MATLAB 强化学习环境,并可以在此环境中训练强化学习智能体(agent)。

对于更复杂的环境,可以使用模板类创建环境对象。

2 利用step和reset函数创建自定义环境

2.1 对象描述

以平衡车摆系统为例。
在这里插入图片描述

强化学习环境:小车上装有可自由转动的杆,小车沿着一条无摩擦的轨道移动。

训练目标:控制小车,使杆保持向上直立而不摔倒。

环境描述:

  1. 杆向上平衡位置为0弧度,向下悬垂位置为pi弧度。
  2. 杆以-0.05至0.05弧度之间的初始角度开始直立。
  3. Agent对环境的力作用信号为-0~10 N。
  4. 环境观测量为小车的位置和速度、关节角和角速度。
  5. 如果杆与竖直方向的夹角大于12°,或者大车与原位置的距离大于2.4m,则episode终止,见上图绿色虚线。
  6. 对杆保持直立的每一个时间步给予+ 1的奖励。当杆摔倒时,施加- 5的惩罚。

环境的observation:小车位置、小车速度、杆摆角以及摆角速度。
环境的离散action:智能体可以对小车施加力值(-10或10 N)。

2.2 reset函数

reset函数设置了环境的初始状态:

[InitialObservation,Info] = myResetFunction()
% InitialObservation:初始观测值;
% Info:从当前步传递到下一步的环境信息,如环境状态,参数等。

在训练的episode开始时,train调用reset函数,并使用输出信息Info初始化自定义环境的Info属性。在一个训练步中,train提供当前Info的值作为StepFcn的第2个输入参数,然后使用StepFcn返回的第4个输出参数来更新Info的值。

Info存储车-杆环境的初始状态信息:小车位置、小车速度、杆摆角以及摆角速度。
reset函数在每次环境复位时将小车角度设置为随机值。

对于本算例,使用第二个参数存储车-杆环境的初始状态:小车的位置和速度、摆角以及摆角导数。复位函数在每次环境复位时将杆角度设置为随机值。

function [InitialObservation, InitialState] = myResetFunction()
% reset函数将定制的车杆环境放置到一个随机的初始状态

% Theta (随机化)
T0 = 2 * 0.05 * rand() - 0.05;
% Thetadot
Td0 = 0;
% X
X0 = 0;
% Xdot
Xd0 = 0;

% 返回初始环境状态变量作为记录信号
InitialState = [X0;Xd0;T0;Td0];
InitialObservation = InitialState;

end

2.3 step函数

step函数指定环境如何根据给定的动作推进到下一个状态:

[NextObservation,Reward,IsDone,UpdatedInfo] = myStepFunction(Action,Info)
% NextObservation:下一步的观测值
% Reward:奖励
% IsDone:是否结束
% UpdatedInfo:更新状态Info

在下一个训练步中,train将上一步得到的UpdatedInfo作为step函数的输入变量Info。

step函数中定义了物理常数。另一种方法是在reset函数中定义物理常数,将Info定义为一个包含状态和参数的结构体,即使用Info来存储物理常数和环境状态。

function [NextObs,Reward,IsDone,NextState] = myStepFunction(Action,State)
% 自定义step函数
% 该函数将给定的action应用到环境中,并评估一个仿真步的系统动态。

% 定义环境常数。
% 重力加速度 m/s^2
Gravity = 9.8;
% 车质量
CartMass = 1.0;
% 杆质量
PoleMass = 0.1;
% 杆长的一半
HalfPoleLength = 0.5;
% 最大施加力
MaxForce = 10;
% Sample time
Ts = 0.02;
% episode失败阈值:杆偏角极限值
AngleThreshold = 12 * pi

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手撕qsort函数

前言 本篇主要讲解的是qsort函数细节以及运用实例。 紧跟我的脚步一起手撕qsort函数吧~ 欢迎关注​​个人主页:逸狼 更多优质内容: 拿捏c语言指针(上) 拿捏c语言指针(中) 拿捏c语言指针(下&…

Https证书续签-acme.sh-腾讯云之DnsPod

ename 域名切换到 DnsPod 上面解析 可以先看下之前的 acme.sh 介绍文章然后再来次补充更多。 之前说过了 acme.sh 在阿里云下的使用。 这里做个后续补充 之前的域名是在 ename 上的 ,为了自动续签切换到 DnsPod 上面解析 注意事项 可以把原来 ename 上的解析先导出…

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson 15 At the Department Store 在百货商店

《美语从头学初级入门篇》 注意:被 删除线 划掉的不一定不正确,只是不是标准答案。 文章目录 Lesson 15 At the Department Store 在百货商店会话A会话B笔记 Lesson 15 At the Department Store 在百货商店 会话A A: Can you help me, please? B: Sur…

电脑任务栏一直转圈圈怎么办 电脑底部任务栏卡死桌面没事的解决办法

最近有一些用户反映,自己的电脑底部任务看卡死桌面没事,不知道是什么原因,也不清楚应该如何解决,是由于资讯和兴趣页面加载时卡死导致的,将其关闭后即可解决,以下是小编提供的电脑任务栏一直转圈圈的解决方…

java 使用documents4j将XML转为pdf文件的方式

1.背景: 通过spire.doc.free将word转换成PDF时存在缺陷:只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j,documents4j会保留原word文件中更多的样式,如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

一 安装paddlepaddle和paddledection(略) 笔者使用的是自己的数据集 二 在dataset目录下新建自己的数据集文件,如下: 其中 xml文件内容如下: 另外新建一个createList.py文件: # -- coding: UTF-8 -- imp…

K8s ingress-nginx根据请求目录不同将请求转发到不同应用

K8s ingress-nginx根据请求目录不同将请求转发到不同应用 1. 起因 有小伙伴做实验想要实现以下需求: 输入www.pana.com/app1访问app1的svc 输入www.pana.com/app2访问app2的svc 2. 实验 2.1 Dockerfile 先准备Dockerfile FROM nginx:1.20ADD index.html /usr/share/ngin…

长短期记忆神经网络

目录 LSTM 神经网络架构 分类 LSTM 网络 回归 LSTM 网络 视频分类网络 更深的 LSTM 网络 网络层 分类、预测和预报 序列填充、截断和拆分 按长度对序列排序 填充序列 截断序列 拆分序列 指定填充方向 归一化序列数据 无法放入内存的数据 可视化 LSTM 层架构 …

2024年的一些碎碎念(小目标)

新年开工好几天了,最近思绪非常混乱,因为入职软件测试又过去一年了,但是却没有达到像培训机构说的那样月薪过万,所以整个人很焦虑。最近也去投了简历,有个HR说跳槽太频繁拒绝了我,入行两年换了两家公司&…

【前端素材】推荐实用的后台管理系统ebazer电商平台模板(附带源码)

一、需求分析 后台管理系统网站是指用于管理和控制网站、应用程序或系统后台运行的管理工具。它通常是网站或应用程序的管理者、管理员或内容编辑人员使用的界面,具有一系列功能来管理用户、内容、数据和系统设置。以下是后台管理系统网站的功能和特点:…

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…

java基础之 注解与异常

注解 注解说明 用于对代码进行说明&#xff0c;可以对包、类、接口、字段、方法参数、局部变量等进行注解&#xff0c;它主要的作用有以下四个方面&#xff1a; 生成文档&#xff1a;通过代码里标识的元数据生成javadoc文档。编译检查&#xff1a;通过代码里标识的元数据让编…

Django后台管理(一)

一、admin介绍 Django 最强大的部分之一是自动管理界面。它从你的模型中读取元数据,提供一个快速的、以模型为中心的界面,受信任的用户可以管理你网站上的内容 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/contrib/admin/ 提示 后台管理系统是管理人员使用,不是…

tritonserver学习之七:cache管理器

tritonserver学习之一&#xff1a;triton使用流程 tritonserver学习之二&#xff1a;tritonserver编译 tritonserver学习之三&#xff1a;tritonserver运行流程 tritonserver学习之四&#xff1a;命令行解析 tritonserver学习之五&#xff1a;backend实现机制 tritonserv…

通过视触觉多模态学习实现机器人泛化操作

这篇文章的主题是探讨如何通过融合视觉和触觉信息来提高强化学习的效率和泛化能力。作者提出了一种名为Masked Multimodal Learning&#xff08;M3L&#xff09;的新型学习策略。M3L的核心思想是在策略梯度更新和基于掩蔽自编码的表示学习阶段之间交替进行。 在策略梯度更新和基…

电商API接口获取电商平台商品详情|JAVA API接口|一篇文章带你搞定Java的数据库访问

一、前言 在应用程序开发中&#xff0c;需要使用数据库管理和存储各种数据。在Java中&#xff0c;提供了一个JDBC技术(Java Database Connectivity&#xff0c;JDBC&#xff0c;Java数据库连接)&#xff0c;它的作用是连接数据库并访问。电商平台数据的采集就经常用到JAVA请求…

密码学基本概念

密码学基本概念 密码学的安全目标至少包含三个方面: (1)保密性(Confidentiality):信息仅被合法用户访问(浏览、阅读、打印等),不被泄露给非授权的用户、实体或过程。 提高保密性的手段有:防侦察、防辐射、数据加密、物理保密等。 (2)完整性(Integrity):资源只有…

第十三章[管理]:13.3:pycharm的常用设置

一,pycharm配置注释模板 1,打开配置界面: pycharm->preference 英文:Editor->File and Code Templates->Python Script 中文:编辑器->文件和代码模板->Python Script 如图: 我们输入的内容: # @Project : ${PROJECT_NAME} # @File : ${NAME}.py # @Author …

相机图像质量研究(38)常见问题总结:编解码对成像的影响--呼吸效应

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

计算机视觉基础【OpenCV轻松入门】:获取图像的ROI

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 ROI&#xff08;Region of Interest&#xff09;是…