https://github.com/airbus/scikit-decide
AI framework for Reinforcement Learning, Automated Planning and Scheduling
https://github.com/airbus/scikit-decide
artificial-intelligence decision-making planning-algorithms reinforcement-learning scheduling-algorithms
Last synced: 6 months ago
JSON representation
AI framework for Reinforcement Learning, Automated Planning and Scheduling
- Host: GitHub
- URL: https://github.com/airbus/scikit-decide
- Owner: airbus
- License: mit
- Created: 2019-12-20T10:03:14.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-17T06:59:54.000Z (about 2 years ago)
- Last Synced: 2024-04-17T19:21:52.168Z (about 2 years ago)
- Topics: artificial-intelligence, decision-making, planning-algorithms, reinforcement-learning, scheduling-algorithms
- Language: Python
- Homepage: https://airbus.github.io/scikit-decide
- Size: 5.97 MB
- Stars: 122
- Watchers: 9
- Forks: 23
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
_ __ _ __ __ _ __
_____ _____ (_)/ /__ (_)/ /_ ____/ /___ _____ (_)____/ /___
/ ___// ___// // //_// // __/______ / __ // _ \ / ___// // __ // _ \
(__ )/ /__ / // ,< / // /_ /_____// /_/ // __// /__ / // /_/ // __/
/____/ \___//_//_/|_|/_/ \__/ \__,_/ \___/ \___//_/ \__,_/ \___/
# Scikit-decide for Python
Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.
This framework was initiated at [Airbus](https://www.airbus.com) AI Research and notably received contributions through the [ANITI](https://aniti.univ-toulouse.fr/en/) and [TUPLES](https://tuples.ai/) projects, and also from [ANU](https://www.anu.edu.au/).
## Main features
- **Problem solving:** describe your decision-making problem once and auto-match compatible solvers.\
_For instance planning/scheduling problems can be solved by RL solvers using GNNs._
- **Growing catalog:** enjoy a growing list of domains & solvers catalog, supported by the community.
- **Open & Extensible:** scikit-decide is open source and is able to wrap existing state-of-the-art domains/solvers.
- **Domains available:**
- [Gym(nasium)](https://gymnasium.farama.org/) environments for reinforcement learning (RL)
- [PDDL](https://planning.wiki/) (Planning Domain Definition Language) via [unified-planning](https://github.com/aiplan4eu/unified-planning) and [plado](https://github.com/massle/plado) libraries
- encoding in gym(nasium) spaces compatible with RL
- graph representations for RL (inspired by [Lifted Learning Graph](https://doi.org/10.1609/aaai.v38i18.29986)) :new:
- [RDDL](https://users.cecs.anu.edu.au/~ssanner/IPPC_2011/RDDL.pdf) (Relational Dynamic Influence Diagram Language) using [pyrddl-gym](https://github.com/pyrddlgym-project) library.
- Flight planning, based on [openap](https://openap.dev/) or in-house Poll-Schumann for performance model
- Scheduling, based on rcpsp problem from [discrete-optimization](https://airbus.github.io/discrete-optimization) library
- Toy domains like: maze, mastermind, rock-paper-scissors
- **Solvers available:**
- RL solvers from ray.rllib and stable-baselines3
- existing algos with action masking
- adaptation of RL algos for graph observation, based on GNNs from [pytorch-geometric](https://pytorch-geometric.readthedocs.io/) :new:
- autoregressive models with action masking component by component for parametric actions :new:
- Planning solvers from [unified-planning](https://github.com/aiplan4eu/unified-planning) library
- RDDL solvers jax and gurobi-based based on pyRDDLGym-jax and pyRDDLGym-gurobi from [pyrddl-gym project](https://github.com/pyrddlgym-project)
- Search solvers coded in scikit-decide library:
- A*
- AO*
- Improved-LAO*
- Learning Real-Time A*
- Best First Width Search
- Labeled RTDP
- Multi-Agent RTDP
- Iterated Width search (IW)
- Rollout IW (RIW)
- Partially-Observable Monte Carlo Planning (POMCP)
- Monte Carlo Tree Search Methods (MCTS)
- Multi-Agent Heuristic meta-solver (MAHD)
- Evolution strategy: Cartesian Genetic Programming (CGP)
- Scheduling solvers from [discrete-optimization](https://airbus.github.io/discrete-optimization),
- itself wrapping [ortools](https://developers.google.com/optimization), [gurobi](https://www.gurobi.com/),
[toulbar](https://toulbar2.github.io/toulbar2/#), [minizinc](https://www.minizinc.org/),
[deap](https://deap.readthedocs.io/) (genetic algorithm), [didppy](https://didppy.readthedocs.io/) (dynamic programming),
- and coding local search (hill climber, simulated annealing), Large Neighborhood Search (LNS), and
genetic programming based hyper-heuristic (GPHH)
- **Tuning solvers hyperparameters**
- hyperparameters definition
- automated study with optuna
## Installation
Quick version:
```shell
pip install scikit-decide[all]
```
For more details, see the [online documentation](https://airbus.github.io/scikit-decide/install).
## Documentation
The latest documentation is available [online](https://airbus.github.io/scikit-decide).
## Examples
Some educational notebooks are available in `notebooks/` folder.
Links to launch them online with [binder](https://mybinder.org/) are provided in the
[Notebooks section](https://airbus.github.io/scikit-decide/notebooks) of the online documentation.
More examples can be found as Python scripts in the `examples/` folder, showing how to import or define a domain,
and how to run or solve it. Most of the examples rely on scikit-decide Hub, an extensible catalog of domains/solvers.
## Contributing
See more about how to contribute in the [online documentation](https://airbus.github.io/scikit-decide/contribute).