gym中的discrete类、box类和multidiscrete类简介和使用

相关文章:

Box() dict()可用于创建连续的空间;OpenAI Gym Discrete和Box spaces同时存在,代码该怎么写;gym中各种离散连续写法

解读gym中的action_space和observation_space

最近在使用MADDPG算法做多智能体仿真,遇到box和multidiscrete类转换问题,现做记录:

maddpg中在train开始的时候,把不同种类的动作建立成了各种不同的分布, 最后的动作输出的是分布,根据分布最后采样得到输出值

  • Box 连续空间->DiagGaussianPdType (对角高斯概率分布)
  • Discrete离散空间->SoftCategoricalPdType(软分类概率分布)
  • MultiDiscrete连续空间->SoftMultiCategoricalPdType (多变量软分类概率分布)
  • 多二值变量连续空间->BernoulliPdType (伯努利概率分布)
     

1.discrete类

  • Discrete类对应于一维离散空间
  • 定义一个Discrete类的空间只需要一个参数n就可以了
  • discrete space允许固定范围的非负数

2.box类

  • box类对应于多维连续空间
  • Box空间可以定义多维空间,每一个维度可以用一个最低值和最大值来约束
  • 定义一个多维的Box空间需要知道每一个维度的最小最大值,当然也要知道维数。

3.multidiscrete类

用于多维离散空间

多离散动作空间由一系列具有不同参数的离散动作空间组成

  • 它可以适应离散动作空间或连续(Box)动作空间
  • 表示游戏控制器或键盘非常有用,其中每个键都可以表示为离散的动作空间
  • 通过传递每个离散动作空间包含[min,max]的数组的数组进行参数化
  • 离散动作空间可以取从min到max的任何整数(包括两端值)

MultiDiscrete用于多维动作空间定义,例如:
 

dim_1=5
dim_2=10
space = MultiDiscrete([dim_1, dim_2])

表示的就是动作空间里面有两个位置需要你指定动作。第一个位置有5个选择,第二个位置也有10个选择。

print(space.sample())

就会随机选择两个数,由此表示对应的动作

在这里插入图片描述

 

PdType

一个大类 下面有5个可以被继承函数 和5个子类

子函数必须有的函数

  • sample_placeholder

    为创建图中的placeholder

  • param_placeholder

    为创建图中的placeholder

 Pd

posted @ 2022-10-27 21:33  汀、人工智能  阅读(427)  评论(0编辑  收藏  举报