当前位置: 首页 > news >正文

gymnasium中space用法

`gymnasium` 是一个用于开发和比较强化学习算法的开源库,它是 `gym` 的一个分支和改进版本。`spaces` 是 `gymnasium` 中用于定义环境状态和动作空间的模块。以下是 `spaces` 模块中一些常用类及其用法的介绍:

1. `Discrete`
`Discrete` 类用于表示离散空间,即空间中的元素是有限的、可数的。

from gymnasium import spaces# 创建一个离散空间,包含 5 个可能的动作
action_space = spaces.Discrete(5)# 检查某个动作是否在空间内
print(action_space.contains(3))  # True
print(action_space.contains(5))  # False# 采样一个动作
print(action_space.sample())  # 输出 0 到 4 之间的随机整数

2. `Box`
`Box` 类用于表示连续空间,即空间中的元素是连续的。`Box` 空间通常用于表示多维的连续变量。

from gymnasium import spaces
import numpy as np# 创建一个二维的连续空间,每个维度的范围是 [0, 1]
observation_space = spaces.Box(low=0, high=1, shape=(2,), dtype=np.float32)# 检查某个状态是否在空间内
print(observation_space.contains(np.array([0.5, 0.5])))  # True
print(observation_space.contains(np.array([1.5, 0.5])))  # False# 采样一个状态
print(observation_space.sample())  # 输出一个二维数组,每个元素在 [0, 1] 之间

3. `MultiDiscrete`
`MultiDiscrete` 类用于表示多维的离散空间,每个维度可以有不同的取值范围。

from gymnasium import spaces# 创建一个两维的离散空间,第一维有 3 个可能的值,第二维有 4 个可能的值
action_space = spaces.MultiDiscrete([3, 4])# 检查某个动作是否在空间内
print(action_space.contains([2, 3]))  # True
print(action_space.contains([3, 3]))  # False# 采样一个动作
print(action_space.sample())  # 输出一个数组,第一个元素在 [0, 2] 之间,第二个元素在 [0, 3] 之间

4. `MultiBinary`
`MultiBinary` 类用于表示多维的二进制空间,每个维度的值只能是 0 或 1。

from gymnasium import spaces# 创建一个三维度的二进制空间
action_space = spaces.MultiBinary(3)# 检查某个动作是否在空间内
print(action_space.contains([0, 1, 1]))  # True
print(action_space.contains([0, 1, 2]))  # False# 采样一个动作
print(action_space.sample())  # 输出一个长度为 3 的数组,每个元素是 0 或 1

5. `Tuple`
`Tuple` 类用于表示由多个空间组成的元组空间。每个元素可以是不同类型的 `Space`。

from gymnasium import spaces# 创建一个元组空间,包含一个离散空间和一个连续空间
action_space = spaces.Tuple((spaces.Discrete(2), spaces.Box(low=0, high=1, shape=(2,), dtype=np.float32)))# 检查某个动作是否在空间内
print(action_space.contains((1, np.array([0.5, 0.5]))))  # True
print(action_space.contains((2, np.array([0.5, 0.5]))))  # False# 采样一个动作
print(action_space.sample())  # 输出一个元组,第一个元素是 0 或 1,第二个元素是一个二维数组

6. `Dict`
`Dict` 类用于表示由多个空间组成的字典空间。每个键对应一个 `Space`。

from gymnasium import spaces# 创建一个字典空间,包含一个离散空间和一个连续空间
action_space = spaces.Dict({"discrete_action": spaces.Discrete(2),"continuous_action": spaces.Box(low=0, high=1, shape=(2,), dtype=np.float32)
})# 检查某个动作是否在空间内
print(action_space.contains({"discrete_action": 1, "continuous_action": np.array([0.5, 0.5])}))  # True
print(action_space.contains({"discrete_action": 2, "continuous_action": np.array([0.5, 0.5])}))  # False# 采样一个动作
print(action_space.sample())  # 输出一个字典,包含一个离散动作和一个连续动作

http://www.dtcms.com/a/553549.html

相关文章:

  • 【win11】4:funasr配置python依赖项并下载模型
  • 网站官网上的新闻列表怎么做官网排名优化方案
  • Flink 优化-状态及 Checkpoint 调优
  • 会员中心网站模板网站优化要素
  • 微软简化Windows更新!命名更加直观:只保留重点
  • 7.进程控制(三)
  • MSA 基因序列对比差异化 相关使用
  • Kafka(文件)数据存储、清理机制、高性能设计
  • 湖南免费网站建设怀化网站建设有哪些
  • Redis 从基础到实战
  • 投标建设用地是哪个网站广州seo培训
  • 做电影网站需要注意什么软件网站开发 erp系统开发
  • 删除wps的空白页
  • 计算机网络 —— F / 应用层
  • 62 VueComponent watcher 的实现
  • Ethernaut Level 15: Naught Coin - ERC20 approve/transferFrom漏洞
  • PySide6 实现win10 手动与自动切换主题 借助系统托盘
  • 上传项目至Github与从Github克隆项目
  • 做个人网站的步骤上海建筑设计公司平台
  • 如何使用一个模型完成多种交通任务?请看此文
  • 第N2周:构建词典
  • 德意志飞机D328eco携手ADS:CMS+IETM双引擎,点燃通用航空效率革命
  • c#获取当前程序所在目录避坑
  • day59-Shell编程(第五部分)
  • 网站建设客户需求分析调查表江苏国泰做的网站案例
  • VUE3+element plus el-table上下拖拽
  • 【模拟面试|豆包模拟面试-1 Java基础】
  • AI优化亚马逊广告:DeepBI智能化托管让广告运营从负担变轻松,ACOS优化至23%以下
  • 关键词解释:梯度消失(Vanishing Gradient)与 梯度爆炸(Exploding Gradient)
  • 天津网站建设如何最近火爆的新闻