Skip to main content

DeepCubeAI

This repository contains code for the paper Learning Discrete World Models for Heuristic Search.

Rubik's Cube solving animation Sokoban puzzle solving animation Ice Slider puzzle solving animation Digit Jump puzzle solving animation

About DeepCubeAI

DeepCubeAI is an algorithm that learns a discrete world model and employs Deep Reinforcement Learning methods to learn a heuristic function that generalizes over start and goal states. We then integrate the learned model and the learned heuristic function with heuristic search, such as Q* search, to solve sequential decision making problems. For more details, please refer to the paper.

Quick links

Key Contributions

Overview

DeepCubeAI is comprised of three key components:

  1. Discrete World Model

    • Learns a world model that represents states in a discrete latent space.
    • This approach tackles two challenges: model degradation and state re-identification.
    • Prediction errors less than 0.5 are corrected by rounding.
    • Re-identifies states by comparing two binary vectors.

    DeepCubeAI discrete world model
  2. Generalizable Heuristic Function

    • Utilizes Deep Q-Network (DQN) and hindsight experience replay (HER) to learn a heuristic function that generalizes over start and goal states.
  3. Optimized Search

    • Integrates the learned model and the learned heuristic function with heuristic search to solve problems. It uses Q* search, a variant of A* search optimized for DQNs, which enables faster and more memory-efficient planning. ‌

Main Results

  • Accurate reconstruction of ground truth images after thousands of timesteps.
  • Achieved 100% success on Rubik's Cube (canonical goal), Sokoban, IceSlider, and DigitJump.
  • 99.9% success on Rubik's Cube with reversed start/goal states.
  • Demonstrated significant improvement in solving complex planning problems and generalizing to unseen goals.

Quick start

DeepCubeAI provides a Python package and CLI. You can install it from PyPI or build it from source. The package supports Python 3.10-3.12.

[!NOTE]

You can find detailed installation instructions, including using Conda for environment management, in the installation guide.

Install deepcubeai Package from PyPI with uv (Recommended if Running as a Package)

deepcubeai is available on PyPI and you can use the following commands to install it.

  1. Install uv from the official website: Install uv.

  2. Create and activate a virtual environment:

    # create a .venv in the current folder
    uv venv
    
    # macOS & Linux
    source .venv/bin/activate
    
    # Windows (PowerShell)
    .venv\Scripts\activate
    

    If you have multiple Python versions, ensure you use a supported one (3.10-3.12), e.g.:

    uv venv --python 3.12
    
  3. Install the package (using uv’s pip interface):

    uv pip install deepcubeai
    

Install from Source with Pixi (Recommended if Working from Source)

Pixi is a package management tool that provides fast, reproducible environments with support for Conda and PyPI dependencies. The pixi.toml and pixi.lock files define reproducible environments with exact dependency versions.

  1. Install Pixi: Follow the official installation guide

  2. Clone repository:

    git clone https://github.com/misaghsoltani/DeepCubeAI.git
    cd DeepCubeAI
    
  3. Enter the default environment (first run performs dependency resolution):

    pixi shell  # or: pixi shell -e default
    
    # or
    
    pixi install -e default # non-interactive solve only
    

Running DeepCubeAI

For running the CLI use the following command to see the available options:

# If already entered the environment with Pixi:
deepcubeai --help  # or -h

# or

# Without entering the environment:
pixi run deepcubeai --help  # or -h

Or use it as a Python package:

import deepcubeai

print(deepcubeai.__version__)

License

MIT License - see LICENSE.

Citation

If you use DeepCubeAI in your research, please cite:

@article{agostinelli2025learning,
    title={Learning Discrete World Models for Heuristic Search},
    author={Agostinelli, Forest and Soltani, Misagh},
    journal={Reinforcement Learning Journal},
    volume={4},
    pages={1781--1792},
    year={2025}
}

Contact

If you have any questions or issues, please contact Misagh Soltani (msoltani@email.sc.edu)

Metadata

Release files for deepcubeai 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deepcubeai 0.2.1
File Size Uploaded
deepcubeai-0.2.1.tar.gz 15.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for deepcubeai 0.2.1
File Interpreter ABI Platform
deepcubeai-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 31.2 MB

Release files / deepcubeai-0.2.1.tar.gz

Download URL deepcubeai-0.2.1.tar.gz
Size 15.6 MB
Tags Source
SHA-256 checksum
How to use checksums
04c3b0a202d22b5e88ab274bf4845a475d0d73627fbdae25179f10b2fea365b3
BLAKE2b-256 checksum
How to use checksums
47e1bd2857b0512ca1d22c1438f98ba020d03bf54b1bc6a24639601e0c5920d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release files / deepcubeai-0.2.1-py3-none-any.whl

Download URL deepcubeai-0.2.1-py3-none-any.whl
Size 15.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9e9a7ce60264757af4f9e0ee0a71c364137a647af84b104d49bfb82a5f2482d1
BLAKE2b-256 checksum
How to use checksums
18a8679b84ec4f8e31a872623ac2dd4f013750652ac59f7926362019c128fc2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page