当前位置: 首页 > 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
http://www.lryc.cn/news/304657.html

相关文章:

  • C++如何避免float误差?
  • 深信服技术认证“SCCA-C”划重点:深信服超融合HCI
  • Vue3路由元信息
  • 实用区块链应用:去中心化投票系统的部署与实施
  • Flink中的双流Join
  • 协程源码 launch 流程跟踪学习
  • 苍穹外卖Day02——总结2
  • 探索Nginx:一款高效、稳定的Web服务器和反向代理工具
  • 文案改写软件,高效改文案的方法
  • 黑马头条-day10
  • C++的stack容器->基本概念、常见接口
  • VUE中引入外部jquery.min.js文件
  • MongoDB聚合运算符:$avg
  • Web 前端 UI 框架Bootstrap简介与基本使用
  • 【Python笔记-设计模式】惰性评价模式
  • 每日学习总结20240221
  • 学生成绩管理系统(C语言课设 )
  • ChatGPT提示词(最新)
  • 算法——模拟
  • 如何进行高性能架构的设计
  • vivado FSM Components
  • 从零开始手写mmo游戏从框架到爆炸(十五)— 命令行客户端改造
  • Elasticsearch:什么是 kNN?
  • 掌握网络未来:深入解析RSVP协议及其在确保服务质量中的关键作用
  • 【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
  • Howler.js:音频处理的轻量级解决方案
  • 【讨论】Web端测试和App端测试的不同,如何说得更有新意?
  • 运维SRE-18 自动化批量管理-ansible4
  • 编程笔记 Golang基础 008 基本语法规则
  • android input命令支持多指触摸成果展示-千里马framework实战开发