(2)Gymnasium--CartPole的测试

news/2024/2/28 12:32:36

1、主要参考

(1)

CartPole 强化学习详解1 - DQN_Oxalate-c的博客-CSDN博客

(2)官方文档,推荐!!!!

 Cart Pole - Gymnasium Documentation

2、相关说明

2.1 动作空间

取值{0,1},表示推车被推的固定力的方向。

 注:所施加的力所减少或增加的速度不是固定的,它取决于杆指向的角度。杆子的重心改变了移动它下面的小车所需的能量。

原文:

2.2 观察空间

观察空间是一个4维的数据

 注:虽然上述范围表示每个元素的观测空间的可能值,但它并不反映未终止事件中状态空间的允许值。特别是:

(1)车的x位置(索引0)可以在(-4.8,4.8)之间取值,但如果车离开(-2.4,2.4)范围,则事件终止。

(2)关于极角范围

原文:

 2.3奖励

由于目标是尽可能长时间保持杆子直立,因此每走一步(包括终止步)都会获得+1的奖励。对于CartPole-v1,奖励的阈值是500,对于CartPole-v0,是200。

2.4 起始状态

 2.5回合结束

如果出现以下任何一种情况,插曲结束:

(1)端接:极角大于±12°

(2)终止:小车位置大于±2.4(小车中心到达显示屏边缘)

(3)截断:剧集长度大于500 (v0为200)

3、基于传统PID的控制实现

3.1主要参考

CartPole 强化学习详解1 - DQN_Oxalate-c的博客-CSDN博客

 3.2主要代码

在上面3.1大佬的基础上,使用最新版直接测试了一下,代码如下

import gymnasium as gymenv = gym.make("CartPole-v1", render_mode="human")
observation, info = env.reset()#参数还要自己调试 
kp = 0.000
kv = -0.002
ka = -0.3
kav = -0.01
ks = -0.000
sum_angle = 0.000
frames = []def CalcAction(obs):action = 0 # 0 meanleft, 1 means rightglobal sum_anglesum = kp * obs[0] + kv * obs[1] + ka * obs[2] + kav * obs[3] + ks * sum_anglesum_angle += obs[2]if (sum < 0.0):action = 1else:action = 0return actionfor i in range(1000):# action = env.action_space.sample()  # agent policy that uses the observation and infoaction = CalcAction(observation)observation, reward, terminated, truncated, info = env.step(action)if terminated or truncated:observation, info = env.reset()print(i)env.close()

3.3 测试图

4、直接根据角度进行控制

4.1 主要参考

https://www.iotword.com/12054.html

4.2 主要代码如下

可以看出,跑个40、50步没什么问题

import gymnasium as gym
# env = gym.make("CartPole-v1")
env = gym.make("CartPole-v1",render_mode="human")print(env.action_space)
#print(env.get_action_meanings())observation, info = env.reset(seed=42)
print(observation,info)def action_pos(status): pos, v, ang, va = status#print(status)if pos <= 0: return 1else: return 0 def action_angle(status): pos, v, ang, va = status#print(status)if ang > 0: return 1else: return 0steps = 0
for _ in range(1000):action = env.action_space.sample()observation, reward, terminated, truncated, info = env.step(action_angle(observation))# print(observation, reward, terminated, truncated, info)if terminated or truncated:print("Episode finished after {} steps".format(steps))observation, info = env.reset()steps = 0else:steps += 1env.close()


 


http://www.ppmy.cn/news/994737.html

相关文章

如何通过nginx代理实现外网访问内网mysql或oracle数据库

项目开发部署中经常会遇到MySQL或Oracle数据库安装在内网&#xff0c;而我们的应用服务只能部署在外网&#xff0c;如果实现外网服务访问连接内网的数据库呢&#xff1f;本次介绍如何通过Nginx配置实现外网访问内网数据库。 1、前置机服务器 首先要保证有一台前置机服务器既可…

【RL】我的强化学习代理

一、说明 强化学习代理是一个自主决策的人工智能智能系统&#xff0c;它通过与环境进行交互&#xff0c;通过试错学习&#xff0c;逐步优化其行为以实现其目标。这种代理能够学习如何在环境中进行行为&#xff0c;以实现预期的目标。代理可以通过尝试不同的行为来评估其对环境的…

【SWT】中Text 实现防抖效果的方法总结

在 SWT&#xff08;Standard Widget Toolkit&#xff09; 中&#xff0c;实现防抖效果是一种常用的技术&#xff0c;可以减少频繁触发的次数&#xff0c;提高性能和用户体验。本文将介绍三种常用的方法来实现 SWT 中的防抖效果。 方法一&#xff1a;使用延迟执行 创建 Text 控…

提升数据质量的四大有效方式

在数字时代的今天&#xff0c;企业对于高质量、值得信赖的数据的需求越来越高。 目前&#xff0c;已经有很多企业将数据质量视为技术问题而非业务问题&#xff0c;这也是获取高质量数据的最大限制因素。只有查找技术缺陷&#xff0c;例如重复数据、缺失值、乱序序列&#xff0…

Restful Api接口对接Java后台返回实体格式封装JsonWrite

Restful Api接口对接Java后台返回实体格式封装JsonWrite 概要介绍案例小结 概要 提示&#xff1a;在进行Java前后端分离开发项目中大多数都会使用的是Restful风格对接接口&#xff01;这就需要前后端开发人员进行详细的对接以及接口说明&#xff0c;虽然现在有很多的接口说明文…

centos动态内网IP如何改静态

要将CentOS从动态内网IP改为静态IP&#xff0c;需要按照以下步骤进行操作&#xff1a; 打开终端并以root用户身份登录。 编辑网络配置文件。在终端中输入以下命令&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-eth0 这个命令将打开eth0配置文件。如果您的网络接口…

用python需要下载软件吗,python需要安装哪些软件

大家好&#xff0c;本文将围绕安装python需要什么样的电脑配置展开说明&#xff0c;python需要安装哪些软件是一个很多人都想弄明白的事情&#xff0c;想搞清楚用python需要下载软件吗需要先了解以下几个事情。 编程这东西很神奇。对于那些知道如何有用和有趣的这个工具,对于Xi…

Echarts 柱状图显示百分比

以下是生成的 option option {yAxis: { name: 金额&#xff08;元&#xff09;, type: value },xAxis: { type: category },legend: {},series: [{stack: x,name: 早餐,label: {normal: {show: true,position: insideRight,// 格式化显示formatter: function (params) {let …

复习之linux高级存储管理

一、lvm----逻辑卷管理 1.lvm定义 LVM是 Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制。 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动&#xff0c;是在内核中块设备和物理设备…

Vue前端框架入门

文章目录 Vue快速入门Vue指令生命周期 Vue 经过一小段时间学习 我认为vue就是在原js上进行的一个加强 简化JS中的DOM操作 vue是分两个层的 一个叫做视图层(View)&#xff0c;你可以理解为展现出来的前端页面 一个叫数据模型层(Model),包含数据和一些数据的处理方法 MVVM就是实…

JVM总结笔记

JVM JVM是什么?JVM 的主要组成部分JVM工作流程JVM内存模型直接内存与堆内存的区别&#xff1a;堆栈的区别Java会存在内存泄漏吗&#xff1f;简述Java垃圾回收机制垃圾收集算法轻GC(Minor GC)和重GC(Full GC)新生代gc流程JVM优化与JVM调优 JVM是什么? JVM是Java Virtual Mach…

国家金融监督管理总局明确将数据安全管理纳入操作风险管理范畴

为进一步完善银行保险机构操作风险监管规则&#xff0c;提升银行保险机构的操作风险管理水平&#xff0c;国家金融监督管理总局起草了《银行保险机构操作风险管理办法&#xff08;征求意见稿&#xff09;》&#xff08;以下简称《办法》&#xff09;&#xff0c;现向社会公开征…

剑指 Offer 38. 字符串的排列 / LeetCode 47. 全排列 II(回溯法)

题目&#xff1a; 链接&#xff1a;剑指 Offer 38. 字符串的排列 难度&#xff1a;中等 输入一个字符串&#xff0c;打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组&#xff0c;但里面不能有重复元素。 示例: 输入&#xff1a;s “abc” 输出&…

【Linux】yum工具的认识及使用

【Linux】yum工具的认识及使用 1.知识点补充2.yum是什么3.yum常用指令3.1查看软件安装包3.1.1关于rzsz 3.2安装软件3.3卸载软件 4.yum扩展4.1扩展14.2扩展24.3扩展3 什么是工具&#xff1f; 本质上也是指令 1.知识点补充 1.我们一般安装软件&#xff0c;是不是需要把软件安装…

Linux6.21 ansible playbook 剧本

文章目录 计算机系统5G云计算第一章 LINUX ansible playbook 剧本一、概述二、playbook应用1.示例2.运行playbook3.定义、引用变量4.指定远程主机sudo切换用户5.when条件判断6.迭代7.Templates 模块8.tags 模块 计算机系统 5G云计算 第一章 LINUX ansible playbook 剧本 一、…

实用调试技巧(1)

什么是bug&#xff1f;调试是什么&#xff1f;有多重要&#xff1f;debug和release的介绍。windows环境调试介绍。一些调试的实例。如何写出好&#xff08;易于调试&#xff09;的代码。编程常见的错误。 什么是Bug 我们在写代码的时候遇到的一些问题而导致程序出问题的就是Bu…

子数组的解释与专题

子数组&#xff1a;指在一个数组中&#xff0c;选择一些连续的元素组成的新数组。 例题一&#xff1a;6900. 统计完全子数组的数目 给你一个由 正 整数组成的数组 nums 。 如果数组中的某个子数组满足下述条件&#xff0c;则称之为 完全子数组 &#xff1a; 子数组中 不同 …

【多模态】22、UniDetector | 检测开放世界中的一切!(CVPR2023)

文章目录 一、背景二、方法2.1 UniDetector 框架结构2.2 Heterogeneous Label Space Training2.3 open-world inference 三、效果3.1 数据集3.2 Object Detection in the Open World3.3 Object Detection in the Closed World3.4 Object Detection in the Wild3.5 Comparison w…

基于高通QCC5171的对讲机音频数据传输系统设计

一 研发资料准备 二 设计方法 蓝牙连接与配对&#xff1a;使用QCC5171的蓝牙功能&#xff0c;实现设备之间的蓝牙连接和配对。确保设备能够相互识别并建立起稳定的蓝牙连接。 音频采集与处理&#xff1a;将麦克风采集到的音频数据通过QCC5171的ADC&#xff08;模数转换器&…

SQL项目实战:银行客户分析

大家好&#xff0c;本文将与大家分享一个SQL项目&#xff0c;即根据从数据集收集到的信息分析银行客户流失的可能性。这些洞察来自个人信息&#xff0c;如年龄、性别、收入和人口统计信息、银行卡类型、产品、客户信用评分以及客户在银行的服务时间长短等。对于银行而言&#x…
最新文章