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)
对于不支持参数化动作空间的代理,我们提供了两个包装器(BoxActionSpaceWrapper
和MultiDiscreteActionSpaceWrapper
),将DiscreteParametric
动作空间分别展平为Box
和MultiDiscrete
。
在sorting_gym.agents.scripted
模块中,我们直接使用未包装的环境实现了论文中的脚本代理。
RL代理可能希望考虑支持参数化/自回归动作
- https://docs.rayai.org.cn/en/master/rllib-models.html#autoregressive-action-distributions
- https://arxiv.org/abs/1502.03509
目标
- 实现冒泡排序/插入排序环境。
- 实现冒泡排序/插入排序代理作为测试。
- 实现函数环境。
- 实现快速排序脚本代理以测试功能环境。
- 封装环境以暴露一个箱动作空间。
- 封装环境以暴露一个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 查看散列)