跳转到主要内容

OpenAI Gym排序环境

项目描述

排序健身房

基于2020年论文《强泛化与神经网络效率》的OpenAI Gym排序环境,该论文由Yujia Li, Felix Gimeno, Pushmeet Kohli, Oriol Vinyals撰写。Strong Generalization and Efficiency in Neural Programs

此存储库包含排序的神经网络接口环境的实现。

使用以下命令从PyPI安装(推荐)

pip install sorting-gym

导入Python包sorting_gym将暴露以下Gym环境

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

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

from gym.spaces import Discrete, Tuple, MultiBinary
from sorting_gym import DiscreteParametric
action_space = DiscreteParametric(2, ([Discrete(2), Tuple([Discrete(3), MultiBinary(3)])]))
action_space.sample()
(1, 2, array([0, 1, 0], dtype=int8))
action_space.sample()
(0, 1)

对于不支持参数化动作空间的代理,我们提供了两个包装器(BoxActionSpaceWrapperMultiDiscreteActionSpaceWrapper),将DiscreteParametric动作空间分别展平为BoxMultiDiscrete

sorting_gym.agents.scripted模块中,我们直接使用未包装的环境实现了论文中的脚本代理。

RL代理可能希望考虑支持参数化/自回归动作

目标

  • 实现冒泡排序/插入排序环境。
  • 实现冒泡排序/插入排序代理作为测试。
  • 实现函数环境。
  • 实现快速排序脚本代理以测试功能环境。
  • 封装环境以暴露一个箱动作空间。
  • 封装环境以暴露一个MultiDiscrete动作空间。
  • 包括一个示例解决方案,通过强化学习训练代理。
  • 环境渲染(至少基于文本,可选依赖项,用于使用例如pygame进行图形渲染)
  • 从open ai gym中删除tape环境(用于在代理升级时生成更长的数据)
  • 维护 - 许可和ci

进一步发展的想法

  • (如果需要)使用cython加速环境
  • gym提交PR以创建离散参数空间
  • 抽象出一个神经网络控制器混入/环境封装器?
  • 考虑不同的/增强的指令集。而不是总是比较视图(以及邻居)中的每个指针和数据元素,具有显式的比较指令。可以扩展到其他数学指令,包括考虑指令的变量成本。
  • 而不是传递先前参数,考虑传递当前作用域中执行的指令数量作为廉价的程序计数器。

使用pytest运行测试

pytest

构建/打包

poetry update
poetry version patch
poetry lock
poetry build
poetry publish

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

sorting-gym-0.0.9.tar.gz (16.1 kB 查看散列

上传时间

构建分布

sorting_gym-0.0.9-py3-none-any.whl (18.4 kB 查看散列

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面