相关文章:

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

gym中的discrete类、box类和multidiscrete类简介和使用的更多相关文章

  1. zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法

    转载自:http://blog.csdn.net/wide288/article/details/21622183 zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法: ze ...

  2. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  3. 使用虚幻引擎中的C++导论(二-UE4基类)

    使用虚幻引擎中的C++导论(二) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  4. 使用虚幻引擎中的C++导论(一-生成C++类)

    使用虚幻引擎中的C++导论(一) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  5. 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法

    实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...

  6. C++中结构体与类的区别(结构不能被继承,默认是public,在堆栈中创建,是值类型,而类是引用类型)good

    结构是一种用关键字struct声明的自定义数据类型.与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型. 1.结构的构造函数和类的构造函数不同. a. ...

  7. 详解C#中System.IO.File类和System.IO.FileInfo类的用法

    System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...

  8. Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行; 否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量; 同时GCC ...

  9. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  10. hibernate中先建表还是先建实体类

    在实际工作中往往是先建表然后再生成类原因:建好数据库表之后往往要对数据表进行一些优化,比如说建索引,比如说建中间表,比如建视图.如果先建类的话这些优化是无法生成的

随机推荐

  1. Flask中本地代理的使用

    本地代理 当请求到来时应用上下文和程序上下文被推入本地栈中,全局变量current_app,request,g,session都可以使用了.以current_app为例,current_app代表的是 ...

  2. mybatis使用oracle进行添加数据的心得

    本次博主主要进行oralce数据库开发,好久不用oracle,有很多知识点也忘的差不多了,本次主要是复习一下工作中主要使用的一些sql语句编写: 查询 查询语句都是正常的,但是需要注意的是oracle ...

  3. PS 创建网络去掉反冲增强

    一.当物料为反冲物料时,创建网络数据,希望去掉反冲标识 二.增强实施 在BAPI中传入反冲标识为空 在标准代码中发现反冲标识的赋值位置 判断当不传入反冲标识,将物料自带的反冲标识清空 定期更文,欢迎关 ...

  4. 【辅助工具】Apifox

    注意事项 需要刷新权限 请求方式需要对应

  5. vue路由模块化

    https://www.bilibili.com/video/BV1Tg411u7oy?from=search&seid=5098139115981575542&spm_id_from ...

  6. uni-app返回上一级,页面不刷新,bug

    uniapp 生命周期(onLoad跟onLoadonShow的区别) 一.uniapp生命周期分两种 : 1.应用生命周期:仅可在App.vue中监听,在其它页面监听无效. 2.页面生命周期:仅在p ...

  7. Redis 缓存与数据库数据不一致问题

    Redis缓存与数据库数据不一致问题是指在使用Redis作为缓存系统时,由于缓存和数据库之间的操作没有同步或处理不当,导致缓存中的数据与数据库中的数据不同步,产生数据不一致的情况. 现象: 数据库更新 ...

  8. 基于python+django的旅游信息网站-旅游景点门票管理系统设计与实现

    该系统是基于python+django开发的旅游景点门票管理系统.是给师弟做的课程作业.大家学习过程中,遇到问题可以在github咨询作者 演示地址 前台地址: http://travel.gitap ...

  9. java中native源码查找方法

    以Object的hashCode()方法为例: 1. 下载openjdk源码或从github中查找,这里以github中查找为例:2. GitHub中查找https://github.com/bpup ...

  10. 使用ProjectQ生成量子算法指令集

    技术背景 所谓的指令集,按照字面意思来理解就是计算机底层允许使用的操作指令的集合.在量子计算机领域,由于实现方案的不同,在不同的体系内的指令集其实是不一样的,并不是说OpenQASM里面的所有指令都会 ...