Code Monkey home page Code Monkey logo

tigercontrol's Introduction

TigerControl


NOTE

This library is deprecated. Please refer to our new control library, deluca.

TigerControl is an open-source framework for benchmarking control algorithms in simulated and real settings, and is available for anyone to download and use. By reducing algorithms to a set of standard APIs, TigerControl allows the user to quickly switch between controllers and tasks while running experiments and plotting results on the go, and for quick and simple comparison between controller performances. TigerControl also comes with built-in standard control algorithms for comparison or other use.

Overview

Although there are several machine learning platforms that aid with the implementation of algorithms, there are far fewer readily available tools for benchmarks and comparisons. The main implementation frameworks (eg. Keras, PyTorch) provide certain small-scale tests, but these are in general heavily biased towards the batch setting. Other platforms such as OpenAI Gym are great for the testing of reinforcement learning controllers, but as many online algorithms depend on access to interal dynamics or loss derivatives, this too is suboptimal. TigerControl exists to fill this gap โ€” we provide a variety of evaluation settings to test online control algorithms on, with more diversity and generality than any other online benchmarking platform.

Installation

Quick install (excluding PyBullet)

Clone the directory and use pip or pip3 to set up a minimal installation of TigerControl, which excludes PyBullet control environments.

    git clone https://github.com/MinRegret/tigercontrol.git
    pip install -e tigercontrol

You can now use TigerControl in your Python code by calling import tigercontrol in your files.

Full install (including PyBullet)

Before installing TigerControl's dependencies, create a new conda environment in order to avoid package conflicts.

    conda create -n name-of-your-environment python=3.x
    conda activate name-of-your-environment

Next, clone the GitHub repository and install the full package.

    git clone https://github.com/MinRegret/tigercontrol.git
    pip install -e 'tigercontrol[all]'

For more information

To learn more about TigerControl and how to incorporate it into your research, check out the Quickstart guide in the tigercontrol/tutorials folder. Alternatively, check out our readthedocs page for more documentation and APIs.

tigercontrol's People

Contributors

alexanderjyu avatar danielsuo avatar i-am-karan-singh avatar johnhallman avatar lmftw avatar paula-gradu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tigercontrol's Issues

Experiment plot method

Implement a plot method for Experiment class, which allows users to immediately plot the results of their experiments.

Physics Engine

LONG TERM FEATURE - Create physics engine for control simulation (ex MuJoCo/Unity) to allow for future control Problems

Simple control Problem

Find a simple control Problem and implement it (simple enough that it can be used as a debugging tool)

tutorials/demos

notes:

  • our experiments (using tigercontrol)
  • nataly's experiments

Model subclasses

The update method varies for different types of models. To resolve this issue, we have made the design choice of implementing model subclasses (TimeSeries, Control, etc) each with the same type of update rule (ex. TimeSeries takes a true label, prediction, params, and loss). Someone should implement these subclasses and place them in a new directory under models/subclasses or some other fitting name.

Bugfix: Experiment inputs not generic

Experiment inputs aren't generic enough to work on arbitrary problems, currently throws errors on several problems, for example LDS because it does not pass it an input at every step.

Autoregressive Model

The Linear model currently has no implementation, and will throw a NotImplementedError every time it is initialized. TODO: Implement a basic online ARMA model and make sure it passes the unit test.

Private models

Allow for the creation and registration of custom models

Replace asserts with raise Errors

In non-test files (ex Models and Problems) where input is checked for correct shape and type, we have previously been using "asserts" instead of "try-except raise Error". We need to go through all our legacy code and fix this!

tasks

notes:

  • create folder in directory

Experiment auto-initialize

Automatic smart initialization of Problems and Models for the Experiment class (based on dimensionality of given problem) so that user doesn't have to call problem/model.initialize() for all the inputs

Private datasets

New Problem type โ€” allow users to create a CustomProblem instance (name pending) which takes a locally stored dataset, owned by user, and creates a time-series out of it. Example implementation approach could be to let the problem.initialize method take the directory path to the dataset

Bugfix: Kalman filter

Kalman filter calls jax.numpy.inv() and throws an error (works fine with regular numpy). Issue brought up with Peter, wait for his feedback.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.