【強化學習】實際部署

環境

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
英文地址,請注明出處:http://en.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;五、坑點總結六、舉一反三七…