ARCLE is a RL environment for training Abstraction and Reasoning Corpus and ARC-like datasets, built on Farama Gymnasium.
ARCLE implements several environments with various actions on editing grids of ARC, with object-oriented grid operations. Inspired by O2ARC Interface, O2ARC 3.0 - the game-like human interface collecting human ARC solutions, ARCLE contains this interface as a RL environment, as well as the testing interface given with ARC Dataset.
Our work is presented at CoLLAs 2024! This paper contains initial experiments equipping ARCLE with PPO-optimized pixel-wise transformer on small grid pairs, in addition to a detailed description of ARCLE. Check out our Paper.
- Simon ARC Env (Dec 2023): another ARC RL environment
- RL Algorithms (May 2024): DreamerV3, PPO working on ARCLE environments
Python >= 3.8
pip install arcle
| Env Name | Description | Latest Version |
|---|---|---|
RawARCEnv |
Environment with actions only coloring, resizing to answer grid, and submit operations | v0 |
ARCEnv |
Implements browser-based testing interface of ARC, with coloring, flood-filling, copy and paste | v0 |
O2ARCv2Env |
Implements O2ARCv2 Interface, an extension of ARCEnv containing Move, Rotate, Flip, Crop, ... |
v0 |
-
Env Changes
O2ARCv2Envis accessible viaO2ARCEnvorO2ARCEnv-v2.- Unify type of observations into
np.int8(that were previouslynp.uint8) - Unify observation space into a dictionary of
BoxorMultiBinaryto flatten observations properly by Gymnasium APIs - Remove over-conditioned (
@abstractmethod) requirements ofAbstractARCEnv. Now user must only overridecreate_operationsonly.
-
Added action wrappers (
BBoxWrapper,PointWrapper) to changeselectionto bounding box selection or one-point selection. -
Loadernow supports definable random number generator. -
Orginized examples
-
Bug Fix
- Fixed
terminatedis not emitted whenmax_trialis infinity (-1)
- Fixed
-
Python 3.8 Support (minimum requirement of Gymnasium)
-
Env Changes
- Rename
ARCEnvintoRawARCEnvin this version. - Removed
MiniARCEnv. Please useRawARCEnvwithloader=MiniARCLoader()instead. - New
ARCEnvadded, consisting action space of ARC testing interface given along with the ARC Dataset. - States in every environments are fully observable. All state-related instance variables are now in the
current_statedictionary.- All operations receives
stateandaction, and it changesstatein-place. - You can deepcopy the state and call
env.transition(state_copied, action)to get next state without changing original state onO2ARCv2Env.env.transitionwill be replaced as separated utility function in the future.
- All operations receives
- n-trial mode added. You canset maximum trials when you call
gym.make()by putting argumentmax_trial=num. Unlimited trial mode is available when it is set by -1 (default). - Customizable
Submitoperation. It is defined in each env class as a method, not in a separated module.- You can specify boolean option
reset_on_submitinenv.reset(default=False)
- You can specify boolean option
- Rename
-
Bug fix
FloodFilloperation without selection case fixedPasteoperation out-of-bound case fixedCopyIoperation out-of-bound case fixed- Apply patch exception handling
- Bug fix
- Default all-or-none reward now gives only when submitted. It affects to existing all environments.
- O2ARCv2Env-v0
- Changed
ResizeGridaction toCropGridaction - Forced
FloodFillaction to select only one pixel (otherwise, it is NoOP) - Now
CopyI,CopyO,Pasteregards black pixels (pixel value 0) as a background. It copies pixels where the value is nonzero and the pixel is selected. action['selection']can handle int (automatically casts intonp.bool_)
- Changed
- Several exceptions handling
- ArcEnv-v0 & MiniArcEnv-v0 has renamed to ARCEnv-v0 & MiniARCEnv-v0.
- Changed internal
current_gridvariable togrid&grid_dim - Added O2ARCv2Env-v0 environment.
- Added O2ARC Actions
- Uses
selectionandselected. Some internal variables should be initialized. - Color, Flood Fill(DFS Color)
- Move, Rotate, Flip
- Copy, Paste and Clipboard Features (For O2ARC)
- Uses
- Change Images
- Fix minor issues
- Initial Build.
- ArcEnv-v0 & MiniArcEnv-v0 Launched.