【强化学习】实际部署

环境

Gymnasium 作为环境接口,
PyBullet作为物理仿真平台,
Stable Baselines3 用于训练算法。

测试框架搭建

以pybullet自带的Cart-pole-v1为例

  1. 安装依赖:确保安装了 Gymnasium 和 SB3 ( pip install gymnasium stable-baselines3 ).
  2. 初始化环境:使用 gymnasium.make(‘CartPole-v1’) 创建环境 。CartPole 是一个平衡小车杆环
    境,状态包括小车位置、速度、杆角度等,动作是向左或向右施加推力。
  3. Agent-环境交互循环:Gymnasium 遵循标准的 RL 循环:agent 观察环境状态,选择一个动作,环境
    执行动作并返回新的观察、奖励以及是否终止的标志 。CartPole 中,每个时间步小车不倒就奖励
    +1,杆倒下或达到步数上限则 episode 结束。
  4. 使用 SB3 算法训练:实例化一个 SB3 算法(例如 PPO),并调用 model.learn(total_timesteps) 开
    始训练。

完整实现:

import gymnasium as gym
from stable_baselines3 import PPO
from stable_baselines3.common.vec_env import DummyVecEnv
from stable_baselines3.common.callbacks import EvalCallback
import pybullet as penv_id = "CartPole-v1"
# 创建两个向量化环境(一个训练,一个验证)
env = DummyVecEnv([lambda: gym.make(env_id)])
eval_env = DummyVecEnv([lambda: gym.make(env_id)])# 注册保存回调:每 5000 步自动评估并保存最优模型
eval_callback = EvalCallback(eval_env,best_model_save_path="./logs/best_model",log_path="./logs/eval",eval_freq=5_000,deterministic=True,render=False,
)# 初始化PPO训练模型
model = PPO(policy="MlpPolicy",env=env,learning_rate=3e-4,n_steps=2048,        # 每轮采集步数batch_size=64,gamma=0.99,gae_lambda=0.95,clip_range=0.2,      # PPO 截断 εent_coef=0.01,       # 鼓励探索verbose=1,tensorboard_log="./tensorboard",
)
# 训练
model.learn(total_timesteps=100_000, callback=eval_callback)
# 保存权重
model.save("ppo_cartpole_final")

使用自定义的环境进行训练

为了使用gym的相关配套工具,我们需要按照gym的规范创建自己的环境,大致流程如下:

  1. 创建一个符合Gymnasium规范的env类,继承自gym.Env,
    • 在构造函数中实现:
      • p.connect()连接到pybullet,设置物理参数:重力方向、大小、仿真步长
      • 加载地面
      • 加载robot的URDF,并设置初始位置和方向
      • 定义 action_space和observation_space,设置随机种子
    • 至少实现方法observation / reward / reset / step
      • 在 reset() 中启动/重置仿真
      • 在 step() 中实现一步物理推进
      • 根据bullet返回的物理状态,主动计算reward
  2. 其他步骤同测试框架搭建,只是将创建环境部分替换为
    from stable_baselines3.common.env_checker import check_env
    env = MyRobotEnv()
    check_env(env) # 将输出环境接口的检查结果
    

reset()方法

主要干这几件事:

  1. 设定随机种子
  2. 将当前步设置为0
  3. 重置仿真
  4. 设置重力
  5. 导入地面和机器人URDF
  6. 初始化关节状态
  7. 热身
  8. 获取状态并返回出去

step()方法

主要干这几件事:

  1. 当前步+=1
  2. 逐关节应用action
  3. 仿真一步
  4. 获取状态信息
  5. 计算奖励
  6. 判断终止
  7. 返回obs, reward, terminated, truncated, info(这五个一个都不能少)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集训Demo4

创建数据库创建项目基本和视频中的一样我给User添加了vip这个属性,想实现两个令牌通过访问的案例,但遇到了问题一个令牌是密码加用户名的map数组这是它的获取、验证逻辑获取验证另一个令牌是Int vip这是自己写的另一套密钥和方法获取但在验证这里有问题头…

深度优化:Java 慢查询排查与性能调优实战

文章目录🚀 深度优化:Java 慢查询排查与性能调优实战🚨1. 事故全景:从告警到定位🕵️‍♂️1.1 事故时间线📊 1.2 关键指标异常🛠️ 1.3 排查工具链🔍 2. 深度剖析:MySQL…

TF-IDF(Term Frequency - Inverse Document Frequency)

TF-IDF(Term Frequency - Inverse Document Frequency)是一种在信息检索与文本挖掘中非常常用的关键词提取方法,用于衡量一个词在文档集合中的重要性。它的核心思想是:如果一个词在某个文档中出现得频繁,同时在其他文档…

Chrome紧急更新,谷歌修复正遭活跃利用的关键零日漏洞

谷歌已针对桌面版Chrome发布重要稳定渠道更新(版本138.0.7204.157/.158),修复了六个安全漏洞,其中包括一个已被实际利用的漏洞。该更新正在向Windows、Mac和Linux平台推送,预计未来数日或数周内将通过自动更新完成部署…

Typecho插件开发:实现文章字数统计与阅读时长计算功能

文章目录 Typecho文章字数统计与阅读时长计算功能实现指南 1. 功能背景与需求分析 2. 插件设计与实现 2.1 插件基础结构 2.2 插件主逻辑实现 2.3 代码解析与优化 3. 前端展示优化 3.1 CSS样式增强 3.2 多语言支持 4. 高级功能扩展 4.1 数据库表优化 4.2 定时批量处理历史文章 5…

开源短链接工具 Sink 无需服务器 轻松部署到 Workers / Pages

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 Sink 是一款开源免费的短链接生成工具,支持自定义短链接 Slug 以及设置到期时间,并且还可以借助 Cloudflare 的 Analytics Engine 功能分析短链接的统计数据。 最重要的是实现以上这些功能并不需要有自己的服务器,…

嵌入式数据结构之顺序表总结

以下是为嵌入式面试准备的顺序表全面优化指南,结合高频考点、代码规范与嵌入式专项优化技巧,助你系统掌握该知识点。 一、顺序表基础与嵌入式特点 ​本质​ 用连续内存空间存储线性表元素,通过下标实现O(1)随机访问 。 ​嵌入式优势​&#x…

Pytorch下载Mnist手写数据识别训练数据集的代码详解

datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransforms.ToTensor())1. datasets.MNIST这是torchvision.datasets模块中的一个类,专门用于加载MNIST数据集。MNIST是一个著名的手写数字识别数据集,包含60,000个训练样本和10,000个测试…

汽车免拆诊断案例 | 07款丰田Hilux启动故障

故障现象一辆 2007 年的丰田Hilux 2.5L柴油手动挡,行驶里程为23万公里。车主说车辆有很多故障,包括故障灯闪烁、发动机启动后又熄火、短时间运行时发动机还会剧烈抖动异响,从排气管冒出大量烟雾。故障诊断接车之后进行检查,发现发…

黄老师(Exeter University)学术交流

1. 文章结构与核心贡献聚焦 强调明确切入点和核心“亮点”贡献,避免分散,确保至少一项最主要、富有创新的方法。在该贡献点上进行全面充分的实验验证,包括不同模型尺寸、普适性测试,以应对审稿专家的质疑。建议从读者或审稿人角度…

ArcGIS Pro+PS 实现地形渲染效果图

先前关注了B站和小红书博主,设计暴风眼,大神讲的确实好,深感佩服,自己以前的制图仅仅实现了制图,实现了把图放在论文里能凑合,而不是设计。最近抽时间学习了一下大神的合集:ArcGIS Pro实用技法合…

ollma dify 搭建合同审查助手

目录 windows dify: ollma 配置 ollma下载地址: qwen3 模型下载 这个自动下载,下载后自动运行。 配置环境变量:修改监听后很慢 测试命令: 模型配置url: 搭建工作流 windows dify: 下载 dify代码&#xff1a…

解锁 iOS 按键精灵辅助工具自动化新可能:iOSElement.Click 让元素交互更简单

在移动自动化测试与脚本开发领域,精准操控应用元素是核心需求。无论是自动化测试流程、批量操作处理,还是场景化脚本开发,能否可靠地点击指定元素直接决定了自动化任务的成败。在 iOS 自动化操作中,开发者常常面临三大痛点&#x…

【机器学习】AdamW可调参数介绍及使用说明

在 AdamW 算法中调整参数对模型训练过程和最终效果有直接且重要的影响,以下是各关键参数对性能的具体影响总结:AdamW 主要可调参数及其影响说明 1. 学习率 lr 影响: 太大(如 0.01 ~ 0.1):训练过程不稳&…

第一篇htmlcss详细讲解

第一章 HTML标签介绍 第一节 HTML基本结构 <!DOCTYPE html> <html><head><title>标题</title></head><body>文档主体</body></html> HTML 标签是由<>包围的关键词,例:<html> HTML 标签通常成对出现,分…

安达发|从救火到未雨绸缪:APS生产计划排产软件重塑制造业“危机免疫力“

在全球化竞争和市场需求多变的今天&#xff0c;制造企业面临着前所未有的挑战。订单波动、供应链中断、设备故障等突发情况已成为常态&#xff0c;许多企业陷入了"救火式管理"的恶性循环。据统计&#xff0c;超过70%的制造企业管理者将超过50%的工作时间用于处理各种…

短视频矩阵系统:选择与开发的全方位指南

短视频矩阵系统&#xff1a;选择与开发的全方位指南在当今数字化时代&#xff0c;短视频已经成为企业营销和个人品牌建设的重要工具。为了更高效地管理和发布短视频&#xff0c;许多企业和个人开始寻求短视频矩阵系统的解决方案。本文将深入探讨短视频矩阵系统哪家好、短视频批…

【2024电赛E题】机械臂+cv2视觉方案

2024电赛E题_机械臂cv2视觉方案 三子棋_人机对弈1.整体设计方案 2.机械臂系统方案 使用常见的开源六轴自由度stm32机械手臂 直接使用商家官方给的代码&#xff0c; 我们只需要通过串口给它发送六个舵机的PWM占空比即可控制机械臂的运动 通过商家提供的源码&#xff0c;了解…

Mac上最佳SSH工具:Termius实用指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;SSH是一种安全网络协议&#xff0c;广泛用于Mac系统远程登录。Termius是Mac上一款功能强大的SSH客户端&#xff0c;提供直观的用户界面和全面的SSH功能&#xff0c;支持Intel和M1架构芯片的Mac设备。它包括多会…

面试高频题 力扣 695.岛屿的最大面积 洪水灌溉(FloodFill) 深度优先遍历 暴力搜索 C++解题思路 每日一题

目录零、题目描述一、为什么这道题值得一看&#xff1f;二、题目拆解&#xff1a;提取核心要素与约束三、算法实现&#xff1a;基于 DFS 的面积计算代码拆解时间复杂度空间复杂度四、与「岛屿数量」的代码对比&#xff08;一目了然看差异&#xff09;五、坑点总结六、举一反三七…