用于排序的OpenAI健身房环境

sorting-gym的Python项目详细描述


分拣健身房

基于2020年论文分类的OpenAI健身房环境 Strong Generalization and Efficiency in Neural Programs作者 Yujia Li,Felix Gimeno,pushmete Kohli,Oriol Vinyals。在

这个存储库包括用于排序的神经接口环境的实现。在

从pypi安装(推荐),安装方式:

pip install sorting-gym

导入Python包sorting_gym将暴露以下健身房环境:

  • SortTapeAlgorithmicEnv-v0-基于Gym's algorithmic environment的基于磁带的环境
  • BasicNeuralSortInterfaceEnv-v0-一个接口,代理可以在其中实现简单的算法,如气泡排序和插入排序。在
  • FunctionalNeuralSortInterfaceEnv-v0-扩展BasicNeuralSortInterfaceEnv-v0接口以包括进入和退出函数的指令。在

为了定义参数动作空间,我们引入DiscreteParametric(Space)类型, 允许环境描述不相交的输出空间,以离散参数空间为条件。 例如:

^{pr2}$

对于不支持参数动作空间的代理,我们提供两个包装器(BoxActionSpaceWrapper)和 MultiDiscreteActionSpaceWrapper)将DiscreteParametric操作空间展平为BoxMultiDiscrete。在

sorting_gym.agents.scripted模块中,我们直接使用 未包装的环境。在

RL代理可能需要考虑支持参数/自回归操作:

目标:

  • [x] 实现bubblesort/insertion排序环境。在
  • [x] 实现bubblesort/insertion排序代理作为测试。在
  • [x] 实现功能环境。在
  • [x] 实现快速排序脚本代理来测试函数环境。在
  • [x] 包装环境以显示box操作空间。在
  • [x] 包装环境以显示多离散动作空间。在
  • []包括通过RL培训代理的示例解决方案
  • []环境渲染(至少基于文本,可选依赖项,用于图形化渲染,例如pygame)
  • []从open ai gym中删除磁带环境(用于在代理级别提高时生成更长的数据)
  • [x] 客房部-许可证和ci

进一步发展的想法:

  • 使用cython加速环境(如果需要)
  • 离散参数空间的PR-to gym
  • 抽象出一个神经控制器Mixin/环境包装器?在
  • 考虑使用不同的/增强的指令集。 而不是总是比较视图中的每一个指针和数据元素(以及相邻的元素), 有明确的比较说明。可以扩展到其他数学指令,包括 说明的可变成本核算。在
  • 不要传递前面的参数,而是考虑传递指令数 在当前作用域中作为廉价程序计数器执行。在

使用pytest运行测试

pytest

建筑/包装

poetry update
poetry version patch
poetry lock
poetry build
poetry publish

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
解释java选择方法   连接到127.0.0.1的java间歇性故障,连接到IP(eth0)时没有故障   java如何优雅地杀死hadoop作业/intercept`hadoop作业杀死`   java如何通过引导类加载器以编程方式加载另一个类?   url Java:在查询参数之前使用片段构建URI   在BroadLeaf表blc_order_属性中保存OrderAttributes值时发生java错误   安卓将功能从xml转换为java   java如何将数据写入文件?   java JPA SQL结果映射   Java中整数对象比较运算符的引用安全性   Spring测试失败:java。lang.NoClassDefFoundError:org/springframework/cglib/transform/impl/memorysafuendecaredthrowableStrategy   rich:extendedDataTable中的java行选择和数据处理   java为什么我需要在volatile上对多个线程使用synchronized?   java尽管构建成功,但为什么会出现此错误?   数组$ArrayList不能转换为java。util。java中的ArrayList   java如何根据泛型类型调用方法?   java将JLabel添加到JPanel,将JPanel添加到JFrame   如果MapStruct中的源为null,则java将父目标设置为null   JavaJBossDrools从DRL插入事实   java不同的JRE安装(windows)