plaans / aries

Toolbox for automated planning and combinatorial solving.
MIT License
39 stars 5 forks source link

Aries

Aries is a project aimed at exploring constraint-based techniques for automated planning and scheduling. It relies on an original implementation of constraint solver with optional variables and clause learning to which various automated planning problems can be submitted.

Combinatorial Solver

Previous research, especially with the FAPE solver, have shown that while obtaining state-of-the-art performance with constraint-based approaches to planning is possible, it requires pushing the inference capabilities of existing combinatorial solver beyond their current capabilities. The Aries project thus provides an innovative combinatorial solver that is built from the ground up by (1) mixing several techniques from constraint programming and automated reasoning, and (2) providing original representations and technologies relevant for automated planning:

While the aries solver library is built with automated planning problems in mind, it remains a general purpose solver that can be used for other combinatorial problems. In particular, we provide solvers for SAT and jobshop problems as a thin wrapper around the library and can be used for testing or demonstration purposes.

Planning with Aries

Aries support problems in the PDDL and HDDL formats for specifying problems. A planning problem is then translated into an internal representation based on chronicles: data structures that specify the requirements ond effects of an action. Chronicles allow a rich temporal representation of an action and is especially useful for representing hierarchical problems where an abstract action can be decomposed into finer-grained ones.

THis representation allows for quite natural encoding of the planning problem into a constraint satisfaction problem that can be solved with our own combinatorial solver.

The current focus of the solver is on hierarchical planning which is especially well suited to represent various robotic and scheduling problems. Non-hierarchical problems are supported but do require more work to reach a state-of-the-art performance (areas of improvement notably include better symmetry breaking constraints and search heuristics).

Usage

Building

First make sure you have rust installed on your machine. Build relies on cargo can be triggered like so:

cargo build            # debug non-optimized build
cargo build --release  # optimized build

This compiles artifacts and place them in the target/debug or target/release directory.

Library Modules

This repository contains several crates that provide various functionalities for automated problem solving. In a topological order :

Executables

While aries is primarily thought as a library it does come with some programs to allow testing and demonstration. Those include:

Source code of these executables can be found in the directory apps/src/bin. One can install an executable locally like so (example for gg):

cargo install --bin gg --path . # should be done in the "apps/" sub-crate

These can also be run directly with cargo. For instance for gg:

cargo run --release --bin gg -- <arguments>

Documentation

An overview of the concepts and algorithms at play in the aries project is provided as a mdbook in the doc/ folder. This documentation is centered on the core part of the solver, dedicated to combinatorial problem solving with optional variables.

To build it, you should first install the mdBook command line tool. Then the following command should build the book and serve it locally (rebuilding on modifications). Please refer to the mdbook documentation for an overview of the other features.

mdbook serve doc/