DI-engine强化学习入门(一)使用强化学习模型控制月球着陆器

控制程序观前提醒:本章内容为训练一个强化学习模型,并使用强化学习模型控制月球着陆器。安装和运行DI-engine示例。

什么是DI-engine?
DI-engine 是一个由 OpenDILab 提供的开源强化学习(Reinforcement Learning,简称RL)库,它旨在提供一个易于使用、灵活且高效的RL算法研究和应用平台。DI-engine 不仅支持多种RL算法,还提供了易于扩展的接口,可以帮助研究人员和开发者快速开发和测试自己的RL算法。
它将为我们的强化学习算法研究和开发工作提供最专业最便捷的帮助,主要包括:

  • 完整的算法支持,例如 DQN,PPO,SAC 以及许多研究子领域的相关算法——多智能体强化学习中的 QMIX,逆强化学习中的 GAIL,探索问题中的 RND 等等。
  • 友好的用户接口,我们抽象了强化学习任务中的大部分常见对象,例如环境,策略,并将复杂的强化学习流程封装成丰富的中间件,让您随心所欲的构建自己的学习流程。
  • 弹性的拓展能力,利用框架内集成的消息组件和事件编程接口,您可以灵活的将基础研究工作拓展到工业级大规模训练集群中,例如星际争霸智能体 DI-star。

DI-engine 的特点

  • 丰富的算法支持:DI-engine 实现了众多经典和现代的强化学习算法。
  • 模块化设计:组件化的设计使得算法、环境、网络结构等模块可以自由组合。
  • 易于扩展:提供了简单的接口来添加新的算法、环境或其他组件。
  • 分布式训练:支持多进程或多机训练,提升了训练效率。
  • 多环境适应性:可以与OpenAI Gym、DM Control等多种环境接口兼容。

安装DI-engine
在安装DI-engine之前,请确保你的计算环境满足以下条件:

  • Python 3.6+
  • PyTorch 1.4+
  • 其它依赖库

你可以通过Python的包管理工具pip来安装DI-engine:

pip install DI-engine

踩坑提醒:gym在安装时会报错。gym是一个强化学习的Python库,它依赖box2d,box2d是一个游戏领域的2D图形引擎,它在运行时又会依赖到swig,swig是一个将c/c++代码封装为Python库的工具(是Python调用c/c++库的一种常见手段)。不过现在swig可以通过pip安装,所以我们只需提前运行:

pip install swig

控制程序 

import gym # 载入 gym 库,用于标准化强化学习环境import torch # 载入 PyTorch 库,用于加载 Tensor 模型,定义计算网络from easydict import EasyDict # 载入 EasyDict,用于实例化配置文件from ding.config import compile_config # 载入DI-engine config 中配置相关组件from ding.envs import DingEnvWrapper # 载入DI-engine env 中环境相关组件from ding.policy import DQNPolicy, single_env_forward_wrapper # 载入DI-engine policy 中策略相关组件from ding.model import DQN # 载入DI-engine model 中模型相关组件from dizoo.box2d.lunarlander.config.lunarlander_dqn_config import main_config, create_config # 载入DI-zoo lunarlander 环境与 DQN 算法相关配置def main(main_config: EasyDict, create_config: EasyDict, ckpt_path: str):    main_config.exp_name = 'lunarlander_dqn_deploy' # 设置本次部署运行的实验名,即为将要创建的工程文件夹名    cfg = compile_config(main_config, create_cfg=create_config, auto=True) # 编译生成所有的配置    env = DingEnvWrapper(gym.make(cfg.env.env_id), EasyDict(env_wrapper='default')) # 在gym的环境实例的基础上添加DI-engine的环境装饰器    env.enable_save_replay(replay_path='./lunarlander_dqn_deploy/video') # 开启环境的视频录制,设置视频存放位置    model = DQN(**cfg.policy.model) # 导入模型配置,实例化DQN模型    state_dict = torch.load(ckpt_path, map_location='cpu') # 从模型文件加载模型参数    model.load_state_dict(state_dict['model']) # 将模型参数载入模型    policy = DQNPolicy(cfg.policy, model=model).eval_mode # 导入策略配置,导入模型,实例化DQN策略,并选择评价模式    forward_fn = single_env_forward_wrapper(policy.forward) # 使用简单环境的策略装饰器,装饰DQN策略的决策方法    obs = env.reset() # 重置初始化环境,获得初始观测    returns = 0. # 初始化总奖励    while True: # 让智能体的策略与环境,循环交互直到结束        action = forward_fn(obs) # 根据观测状态,决定决策动作        obs, rew, done, info = env.step(action) # 执行决策动作,与环境交互,获得下一步的观测状态,此次交互的奖励,是否结束的信号,以及其它环境信息        returns += rew # 累计奖励回报        if done:            break    print(f'Deploy is finished, final epsiode return is: {returns}')if __name__ == "__main__":    main(main_config=main_config, create_config=create_config, ckpt_path='./final.pth.tar')

点击DI-engine强化学习入门(一)使用强化学习模型控制月球着陆器 - 古月居 可查看全文

 

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

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

相关文章

一次职业院校漏洞挖掘

这个是之前挖掘到的漏洞,目前网站进行重构做了全新的改版,但是这个漏洞特别经典,拿出来进行分享。看到src上面的很多敏感信息泄露,所以自己也想找一个敏感信息泄露,官网如图: 发现在下面有一个数字校园入口…

电源滤波器怎么选用

电源滤波器怎么选用 滤波器应用场景及作用第一步:第二步:第三步:第四步: 滤波器应用场景及作用 可以有效解决EMC测试无法通过、端口防护、滤除干扰、设备保护等问题 主要功能有: 1、降低主电源谐波; 2、保护驱动装置电力电子元件…

硬币检测电路设计

一、来源:凡亿教育 第一场:硬币检测装置原理分析、电路设计以及器件选型_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Zh4y1V7Px/?p1&vd_source43eb1cb50ad3175d7f3b9385905cd88f 二、开发软件:KEIL MDK 三、主控芯片&#…

大型制造业集团IT信息化总体规划方案(65页PPT)

方案介绍: 本大型制造业集团IT信息化总体规划方案旨在通过构建先进、高效、稳定的IT信息化系统,支撑集团各业务领域的运营和管理需求,促进集团整体运营效率和竞争力的提升。通过实施本项目,集团将能够更好地应对市场变化和客户需…

嫁接打印:经济与实用的完美结合

在制造领域,寻求经济且好用的技术方案至关重要。而在模具制造中,3D 打印随形水路在提升冷却效率和产品良率方面的卓越表现已得到广泛认同。如何更经济的应用3D打印技术,就不得不说嫁接打印了。 在嫁接打印的制造过程中,产品的一部…

Uniapp写一个简单的商品瀑布流界面+商品详情

最终效果: 整体内容比较简单,参考了一篇瀑布流文章和一篇商品详情文章随便修改整了下,主要是给想做这方便面的新人一个简单逻辑的展示(其实我也是第一次写这个emmm) 一.组件下载: uni-icon uni-goods-nav…

InsightFace | 基于 AI 增强的人脸检测

点击下方卡片,关注“小白玩转Python”公众号 概述 我将使用InsightFace,这是一个以其在复杂面部分析任务中的卓越表现而闻名的开源AI工具包。该工具包可以帮助完成诸如人脸检测、关键点识别、情感识别、年龄和性别估算以及属性分析等任务。 示例 !pip in…

yolov10/v8 loss详解

v10出了就想看看它的loss设计有什么不同,看下来由于v8和v10的loss部分基本一致就放一起了。 v10的论文笔记,还没看的可以看看,初步尝试耗时确实有提升 好记性不如烂笔头,还是得记录一下,以免忘了,废话结束…

tcp链接中的三次挥手是什么原因

一、tcp链接中的正常四次挥手过程? 刚开始双方都处于 ESTABLISHED 状态,假如是客户端先发起关闭请求。四次挥手的过程如下: 1、客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 FIN 报文…

Pycharm的基础设置+Pycharm与AutoDL服务器连接

一.pycharm的基础设置 1.下载pycharm profession版,配置之前博客里面的解释器mask2 2.run detect.py 3.终端的设置 (1)先直接在终端里面pip install 我们再创建一个测试python文件:terninal_test.py 虽然上面安装成功了包&#x…

Nested KVM Hypervisor Support

Description Nested KVM是指基于虚拟化技术的虚拟机管理系统。 Nested KVM在Intel处理器上,KVM使用Intel的vmx(virtualmachine eXtensions)来提高虚拟机性能,即硬件辅助虚拟化技术。如果一台虚拟机能够和物理机一样支持vmx&…

秘塔AI搜索,看看如今的AI搜索能有多懂你

你们正在用的浏览器是哪一款? 平时搜索时是否也有过这样的经历,在搜索引擎里输入关键词,然后在一堆广告中大海捞针,一不小心就入了一刀999的坑,又或是陈年资料令人发懵,压根儿就别想找到宝藏资源&#xff…

【Qt秘籍】[007]-LineEdit Pushbutton控件

Qt的中有着各种各样的控件,相较于传统C/C的输出默认只能在控制台实现,Qt中可以有不同的接口实现各种不同的功能,下面我们将实现不同功能的输出 hello world! 标签Label 【Qt秘籍】[006]-Label实现Hello World程序-编程第一步-CSD…

Prime1 - 提权的另一种解法,彻底搞懂OpenSSL解密渗透提权,超强思路版。

提权枚举 现在我们直接从低权限用户开始;我们先按照提权步骤,简单的系统枚举 虽然我们知道可以利用系统版本低进行内核提权,内核提权虽然比较快比较方便,但也比较暴力,缺点非常明显;很容易导致系统服务中…

GIS结合物联网:塑造智慧地球的新篇章

在信息技术飞速发展的今天,地理信息系统(GIS)与物联网(IoT)的深度融合,正以前所未有的方式重塑着我们对世界的认知。本文将深入探讨GIS与物联网结合的原理、应用实践以及面临的挑战与未来展望,共…

刷代码随想录有感(88):贪心算法——加油站

题干&#xff1a; 代码&#xff1a; class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int totalcost 0;for(int i 0; i < gas.size(); i){totalcost gas[i] - cost[i];}if(totalcost < 0)return -1;int …

数据库、数据表的基本操作

1.数据库的基本操作 &#xff08;1&#xff09;创建数据库 &#xff08;2&#xff09;删除数据库 &#xff08;3&#xff09;将数据库的字符集修改为gbk gbk是汉字内码扩展规范&#xff0c;是GB2312和GB13000的扩展&#xff0c;主要用于简体中文。 &#xff08;4&#xff09;…

vmware 正版免费下载

Broadcom 已经收购了 vmware 并且对普通用户提供免费服务. 那么我们怎么去获取这个玩意呢, 注册完之后打开就是这么个狗屎 , 根本不知道在哪里下载&#xff0c;注册的时候还不能用国内邮箱更是超级狗屎 转到 dashboard 搜索 workstation Pro你会搜索到这么一个奇怪的网址然后…

LeetCode 算法:盛最多水的容器c++

原题链接&#x1f517;&#xff1a;盛最多水的容器 难度&#xff1a;中等⭐️⭐️ 题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以…

JavaSE——集合框架二(6/6)-(案例)补充知识:集合的嵌套(需求与分析、问题解决、运行测试)

目录 案例引入 需求与分析 问题解决 运行测试 集合的嵌套 顾名思义&#xff0c;指的是集合中的元素又是一个集合。 本篇通过一个案例对这一知识进行了解&#xff1a; 案例引入 需求与分析 要求在程序中记住如下省份和其对应的城市信息&#xff0c;记录成功后&#xff0…