gym强化学习环境配置

选用的强化学习的仿真环境为OpenAI的gym:

GitHub - openai/gym: A toolkit for developing and comparing reinforcement learning algorithms.

1 选用gym的原因

1.gym是openai开发的通用强化学习算法测试平台

2.学会了gym,便可开始学习使用openai的其他开源强化学习软件

3.gym 本身集成许多仿真环境,如经典控制中的车摆环境,小车爬山环境、雅达利游戏、棋盘环境等,利用这些写好的环境,可以学习强化学习算法的基本原理。另外,gym是用python写的,可以和深度学习的开源软件如tensorflow等无缝衔接.

2 gym安装

(1)为了方便管理,先安装Anaconda,下载和安装步骤如下

下载Anaconda安装包(推荐使用清华镜像来下载),下载地址:

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

笔者安装的是anaconda3-4.3.0版本

安装anaconda,下载完成后,安装包在Downloads文件夹下(在终端用Ctrl+Alt+T组合键打开终端),键入cd downloads,然后键入bash anaconda3_4.3.0-linux-x86_64.sh(小技巧,键入bash an 然后按下Tab键,Linux会自动补全后面的名字)

③安装过程会询问是否将路径安装到环境变量中,键入yes,至此anaconda安装完成。你会在目录/home/你的用户名 文件夹下看见Anaconda3。关掉终端,再开一个,这样环境变量才起作用。

(2)利用anaconda创建一个虚拟环境。

Anaconda创建虚拟环境的格式为:
conda create -n gymlab python=3.5

操作完此步之后,会在anaconda3/envs/ 文件夹下多一个gymlab。python3.5就在gymlab下的lib下。

(3)安装gym

先开一个新的终端,然后用命令 source activate gymlab 激活环境,再装gym。

具体步骤如下:

①键入 git clone https://github.com/openai/gym.git,将gym克隆到你的计算机中。如果你的计算机没有安装git,那么可以键入:sudo apt install git ,先安装git。

②cd gym 进入gym文件夹。

③pip install -e ‘.[all]’进行完全安装。等待,这个过程会装一系列的库,装完后可以将gym安装文件的目录写到环境变量中;一种方法是打开 .bashrc 文件,在末尾加入语句:

export PYTHONPATH=你的gym目录:$PYTHONPATH

不出意外的话,就可以享用gym了。

3.一个简单的demo

①开一个终端(ctrl+alt+T),然后激活用anaconda建立的虚拟环境:source activate gymlab

②运行python:python

③导入gym模块:import gym

④创建一个小车倒立摆模型:env=gym.make('CartPole-v0')

⑤初始化环境:env.reset

⑥刷新当前的环境,并显示:env.render()

通过这六步,可以看到一个小车倒立摆系统。

4.深入剖析gym环境配置

将从demo中的三个重要函数开始讲解。

env=gym.make('CartPole-v0')

env.reset()

env.render()

第一个函数是创建环境,这里先不讲。后两个函数是环境文件都包含的文件。这里以CartPole为例,讲解这两个函数。

Cartpole的环境文件位置:你的gym目录: /gym/envs/classic_control/cartpole.py

该文件定义了一个CartPoleEnv的环境类,该类的成员函数有:seed()、step()、reset()和render().

1.1 resert()函数详解

reset()为重新初始化函数,它有甚什么作用?

      在强化学习算法中,智能体需要一次次的尝试并积累经验,然后从经验中学到好的动作。每一次尝试我们称之为一条轨迹或一个episode,每次尝试都要到达终止状态。一次尝试结束后,智能体需要从头开始,这就需要智能体具有重新初始化的功能。

reset的源代码如下

def _reset():
    self.state=self.np_random.uniform(low=-0.05,high=0.05,size=(4,)) #利用均匀随机分布初始化环境的状态
    self.steps_beyound_down=None #设置当前步骤为None
    return np.array(self.state) #返回环境的初始化状态

1.2 render()函数详解

render函数在这里扮演图像引擎的角色。物理引擎用来模拟环境中物体的运动规律,图像引擎用来显示环境中的物体图像。

下面具体介绍gym如何利用图像引擎来创建图像

直接看源代码

Def _render(self,mode='human',close=Flase):
    if close:
        ...省略,直接看关键代码部分
    if self.viewer is Node:
        from gym.envs.classic_control import rendering
        #这一句导入rendering模块,利用rendering模块中的画图函数进行图形的绘制
        #如绘制600*400的窗口函数为
        self.viewer=rendering.viewer(screen_width,screen_height)
        #其中screen_width=600,screen_height=400
        #创建小车的代码
        l,r,t,b=-cartwidth/2,cartwidth/2,cartwidth/2,-cartwidth/2
        axleoffset=cartwidth/4.0
        cart=rendering.FilledPolygon([(1,b),(1,t),(1,r,t),(r,b)])  #填充一个矩形

创建完cart的形状,接下来给cart添加平移属性和旋转属性。将车的位移设置到cart的平移属性中,cart就会根据系统的状态变化左右运动。

具体代码解释上传至github中

GitHub - gxnk/reinforcement-learning-code

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

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

相关文章

day03-主页模块-修改密码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.获取用户资料在Vuex中共享登录成功跳转到主页之后,可以获取用户资料,获取的资料在Vuex中共享,这样用户就可以很方便的获取该信…

Leetcode刷题笔记 | 二叉树基本性质 | 一天的题量 | 5道题目 | 深度优先搜索 | 广度优先搜索 | 递归 | 遍历

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 📌本期毛毛张分享的是LeetCode关于二叉树🌲的性质的一些基础题,做这些题目的本质还是遍历二叉树🏃‍➡️的过程&#…

计算机组成原理 | 储存子系统(1)概述

三级储存体系 物理与虚拟存储器 (抽象逻辑模型) 存储器类型 存储器的速度指标

中国民间网络外交组织(CCND)

中国民间网络外交组织Chinese Civil Network Diplomacy简称(CCDN) 是由中国网民建立起来的一个网络外交组织,深度贯彻党的主张和网民意志的统一,为保护中国中华优秀传统文化,民族自信,国家安全,民族利益,社…

昇思MindSpore学习笔记2-04 LLM原理和实践--文本解码原理--以MindNLP为例

摘要: 介绍了昇思MindSpore AI框架采用贪心搜索、集束搜索计算高概率词生成文本的方法、步骤,并为解决重复等问题所作的多种尝试。 这一节完全看不懂,猜测是如何用一定范围的词造句。 一、概念 自回归语言模型 文本序列概率分布 分解为每…

76. UE5 RPG 实现场景阻挡剔除功能

在俯视角游戏中,我们总会碰到一个问题就是,建筑会遮挡住角色的问题。遇到这种问题有多种解决方案,厂商经常使用的一种方案是,如果角色被遮挡,则使用一种纯色或者增加一些菲涅尔的效果来实现 这种效果我之前在unity内实…

SpringBoot 项目整合 MyBatis 框架,附带测试示例

文章目录 一、创建 SpringBoot 项目二、添加 MyBatis 依赖三、项目结构和数据库表结构四、项目代码1、application.yml2、TestController3、TbUser4、TbUserMapper5、TestServiceImpl6、TestService7、TestApplication8、TbUserMapper.xml9、MyBatisTest 五、浏览器测试结果六、…

一文了解什么是车载Tbox

目录 前言一、Tbox是什么呢?二、Tbox架构三、App——TSP——Tbox交互时序图四、汽车混合网关拓扑结构示例五、Tbox功能 前言 强烈建议提前阅读一下这篇文章:车机Tbox介绍 一、Tbox是什么呢? Tbox是汽车上的一个盒子,指的是Telematics BOX&#xff0c…

Michael.W基于Foundry精读Openzeppelin第61期——ERC1967Upgrade.sol

Michael.W基于Foundry精读Openzeppelin第61期——ERC1967Upgrade.sol 0. 版本0.1 ERC1967Upgrade.sol 1. 目标合约2. 代码精读2.1 _getImplementation() internal && _upgradeTo(address newImplementation) internal2.2 _upgradeToAndCall(address newImplementation,…

常见反爬及应对

一,特殊混淆的还原 1.1 还原 AAEncode 与 JJEncode AAEncode是一种JavaScript代码混淆算法,利用它,可以将代码转换成 颜文字 表示的JavaScript代码。 去掉代码最后的 (‘‘),这是函数的自调用,去除后就是函数的声明…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验13 静态路由配置错误导致的路由环路问题

一、实验目的 1.验证静态路由配置错误导致的路由环路问题; 二、实验要求 1.使用Cisco Packet Tracer仿真平台; 2.观看B站湖科大教书匠仿真实验视频,完成对应实验。 三、实验内容 1.构建网络拓扑; 2.验证路由环路。 四、实验…

探囊取物之多形式登录页面(基于BootStrap4)

基于BootStrap4的登录页面,支持手机验证码登录、账号密码登录、二维码登录、其它统一登录 低配置云服务器,首次加载速度较慢,请耐心等候;演练页面可点击查看源码 预览页面:http://www.daelui.com/#/tigerlair/saas/pr…

【AI提升】如何使用大模型:本机离线和FastAPI服务调用

大模型本身提供的功能,类似于windows中的一个exe小工具,我们可以本机离线调用然后完成具体的功能,但是别的机器需要访问这个exe是不可行的。常见的做法就是用web容器封装起来,提供一个http接口,然后接口在后端调用这个…

electron教程(二)控制应用程序的事件生命周期

1.will-finish-launching 当应用程序完成基础的启动的时候被触发,在 Windows 和 Linux 中, will-finish-launching 事件与 ready 事件是相同的; 在 macOS 中,这个事件相当于 NSApplication 中的 applicationWillFinishLaunching 提示。 app.on(will-fi…

Andrej Karpathy提出未来计算机2.0构想: 完全由神经网络驱动!网友炸锅了

昨天凌晨,知名人工智能专家、OpenAI的联合创始人Andrej Karpathy提出了一个革命性的未来计算机的构想:完全由神经网络驱动的计算机,不再依赖传统的软件代码。 嗯,这是什么意思?全部原生LLM硬件设备的意思吗&#xff1f…

机械设备制造企业MES系统解决方案介绍

机械设备制造行业涵盖了各类工业设备、工程机械、农业机械等多个领域,对生产精度、质量控制和效率提出了较高要求。为了提升生产效率、保证产品质量并满足客户需求,越来越多的机械设备制造企业引入了MES系统。本文将详细介绍MES系统在机械设备制造行业的…

魔镜魔镜,我要变得更漂亮!按需搭配一键叠穿,效果拿下新SOTA!中山大学字节智创数字人团队提出虚拟试穿新框架

魔镜魔镜,我要变得更漂亮!按需搭配一键叠穿,效果拿下新SOTA!中山大学&字节智创数字人团队提出虚拟试穿新框架。 多件衣服按指定穿法一键虚拟试穿! 中山大学&字节智创数字人团队提出了一个名为MMTryon的虚拟试穿框架,可以通过输入多个服装图像及指定穿法的文本指…

COB封装的LED显示屏是什么?

COB(Chip on Board)封装的LED显示屏,是一种采用先进倒装COB封装技术的显示屏,其中LED芯片是直接被安装并封装在PCB电路板上,而不是先对单个封装再焊接至电路板,与SMD(Surface Mount Device&…

怎么快速给他人分享图片?扫描二维码看图的简单做法

现在通过二维码来查看图片是一种很常见的方法,通过二维码来查看图片不仅能够减少对手机存储空间的占用,而且获取图片变得更加方便快捷,只需要扫码就能够查看图片,有利于图片的展现。很多的场景中都有图片二维码的应用,…

2024软件设计师经验贴(一考就过)

2024软件设计师经验贴(一考就过) 第一阶段、基础积累:把书读厚 这一阶段可以跟着视频、书籍或文章进行基础知识的学习。 推荐的视频系列: 「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 40–14.3设计模式 推荐的文…