Giter Club home page Giter Club logo

keedmd's Introduction

Koopman Eigenfunction Extended Dynamic Mode Decomposition (KEEDMD)

Python library for simulating dynamics and Koopman-based learning of dynamical models.

The code in this repository was prepared to implement the methodologies described in

  1. C. Folkestad, D. Pastor, I. Mezic, R. Mohr, M. Fonoberova, J. Burdick, "Extended Dynamic Mode Decomposition with Learned Koopman Eigenfunction for Prediction and Control", in Proc. American Control Conf, (accepted) 2020

  2. C. Folkestad, D. Pastor, J. W. Burdick, "Episodic Koopman Learning of Nonlinear Robot Dynamics with Application to Fast Multirotor Landing", in Proc. International Conference on Robotics and Automation, (accepted) 2020

The simulation framework of this repository is adapted from the Learning and Control Core Library.

Setup

Set up virtual environment

python3 -m venv .venv

Activate virtual environment

source .venv/bin/activate

Upgrade package installer for Python

pip install --upgrade pip

Install requirements

pip3 install -r requirements.txt

Running the code

To run the code that demonstrates the method described in [1], run one of the examples

core/examples/inverted_pendulum.py
core/examples/cart_pole.py

Each example:

  • Collects some data with a stabilizing controller
  • Compute principal eigenvalues
  • Fit the diffeomorphism using PyTorch
  • Fit a linear model using SkLearn
  • Test prediction error
  • Test closed loop error

To run the code that demonstrates the method described in [2], run the example

core/examples/episodic_1d_landing.py

Run the example scripts as a module with the root folder of repository as the working directory. For example, in a Python 3 environment run

python -m core.examples.cart_pole.py

keedmd's People

Contributors

cafolkes avatar pastord avatar vdorbs avatar dependabot[bot] avatar andrewjamestaylor avatar

Stargazers

singpo avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar MENG Fei avatar Xue Yifan avatar Terrigos avatar Chufan Kong avatar Ruizhi Yu avatar  avatar Steven Dahdah avatar  avatar  avatar  avatar Alexander Krolicki avatar Nicholas Geneva avatar Simone Azeglio avatar  avatar Mel Mashiku avatar  avatar Shengjian Chen avatar  avatar

Watchers

James Cloos avatar Mel Mashiku avatar  avatar  avatar Terrigos avatar  avatar  avatar

keedmd's Issues

Question about EDMD fit function

Hi,

I was confused by the following line in the fit function:
W = concatenate((Z_dot, X), axis=0) (line 56 in core/learning/edmd.py).
As I understand the EDMD algorithm, W is supposed to be the lifted version of the next predicted state -- why is it the concatenation of the derivative of the lifted Xs (Zs) and X? In particular, it does not seem like this is what https://arxiv.org/pdf/1611.03537.pdf does (referring to pg 8, eqs 16-21) -- it seems like W should be Y_lift. Am I missing something?

Thanks!

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.