A set of utility functions and Jupyter notebooks for attainable region (AR) computations.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Attainable Region (AR) Tools

This is the GitHub repository of Attainable Region (AR) theory. The main homepage of AR theory can be found at attainableregions.com.

This repository contains:

  1. A collection of Python functions for carrying out AR computations, artools.py
  2. Interactive Jupyter notebooks that describe the basics of AR theory
  3. Source code for the examples found on attainableregions.com

1. AR tools

artools.py is a collection of Python functions for carrying out AR calculations as well as performing simple 2-D and 3-D visualisations of convex regions. A Jupyter notebook demonstrating its usage can be found in the notebooks folder.

1.1 Usage

Copy artools.py to your local directory and import.

import artools

Alternatively, add the directory containing artools.py to your system path, and then import.

import sys

import artools

1.2 Dependencies

Currently, artools.py is written in Python 3 and depends on SciPy and Matplotlib. We recommend using Anaconda to manage the installation of these packages.

The code currently supports Python versions 3.4 - 3.6.

2. Jupyter notebooks

Jupyter notebooks, which demonstrate common AR theory concepts, can be found here. These notebooks are written in conjunction with the Attainable Region theory textbook.

2.1 If you are using virtual environments

Notebook widgets might not display if Jupyter is run in a virtual environment. If this is the case, issue the following console command:

jupyter nbextension enable --py widgetsnbextension

See this Stack Overflow post and ipywidgets Github installation instructions for more details.

3. AR website examples

The source code for the examples described on attainableregions.com are stored here.


  • As of 10 Oct 2017, Python 2.x is no longer supported. We will concentrate on supporting Python 3.4 - 3.6. Please use 2to3.py to convert Python 2 .py files to Python 3, and 2to3_nb.py to convert Jupyter .ipynb notebooks.