Skip to main content

Tools for optimizing dynamic systems using direct collocation.

Project description

Introduction

https://img.shields.io/pypi/v/opty.svg https://anaconda.org/conda-forge/opty/badges/version.svg https://travis-ci.org/csu-hmc/opty.svg?branch=master

opty utilizes symbolic descriptions of ordinary differential equations expressed with SymPy to form the constraints needed to solve optimal control and parameter identification problems using the direct collocation method and non-linear programming. In general, if one can express the continuous first order ordinary differential equations of the system as symbolic expressions opty will automatically generate a function to efficiently evaluate the dynamical constraints and a function that evaluates the sparse Jacobian of the constraints, which have been optimized for speed and memory consumption. The translation of the dynamical system description to the NLP form, primarily the formation of the constraints and the Jabcobian of the constraints, manually is a time consuming and error prone process. opty eliminates both of those issues.

Features

  • Both implicit and explicit forms of the first order ordinary differential equations are supported, i.e. there is no need to solve for x’.

  • Backward Euler or Midpoint integration methods.

  • Supports both trajectory optimization and parameter identification.

  • Easy specification of bounds on free variables.

  • Easily specify additional “instance” constraints.

  • Built with support of sympy.physics.mechanics and PyDy in mind.

Installation

The required dependencies are as follows:

  • python 2.7 or 3.5+

  • sympy >= 1.0.0

  • ipopt >= 3.11

  • numpy >= 1.8.1

  • scipy >= 0.14.1

  • cython >= 0.20.1

  • cyipopt >= 0.1.7

To run all of the examples the following additional dependencies are required:

  • matplotlib >= 1.3.1

  • pydy >= 0.3.0

  • pytables

  • pandas

  • yeadon

If you are installing on Linux or Mac, the easiest way to get started is to install Anaconda (or Miniconda) and use conda to install opty and any desired optional dependencies from the Conda Forge channel, e.g.:

$ conda config --add channels conda-forge
$ conda install opty matplotlib pytables pandas yeadon pydy

If you are using Windows or want a custom installation of any of the dependencies, e.g. Ipopt, you must first install Ipopt along with it’s headers. For example, on Debian based systems you can use the package manager:

$ sudo apt-get install coinor-libipopt1v5 coinor-libipopt-dev

or prebuilt binaries can be downloaded from https://www.coin-or.org/download/binary/Ipopt/.

For customized installation (usually desired for performance) follow the instructions on the IPOPT documentation to compile the library. If you install to a location other than /usr/local you will likely have to set the LD_LIBRARY_PATH so that you can link to IPOPT when installing cyipopt.

Once Ipopt is installed and accessible, install conda then create an environment:

$ conda create -n opty-custom pip numpy scipy cython sympy
$ source activate opty-custom
(opty-custom)$ pip install https://github.com/matthias-k/cyipopt/archive/v0.1.7.tar.gz
(opty-custom)$ pip install opty

If you want to develop opty, create a conda environment with all of the dependencies installed:

$ conda config --add channels conda-forge
$ conda create -n opty-dev python sympy numpy scipy cython ipopt cyipopt matplotlib pytables pydy pandas
$ source activate opty-dev

Next download the opty source files and install with:

(opty-dev)$ conda develop /path/to/opty

or:

(opty-dev)$ cd /path/to/opty
(opty-dev)$ python setup.py develop

Usage

There are several examples available in the examples directory. For example, the optimal torque to swing up a pendulum with minimal energy can be found with:

$ python examples/pendulum_swing_up.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opty-0.2.0.tar.gz (27.5 kB view details)

Uploaded Source

File details

Details for the file opty-0.2.0.tar.gz.

File metadata

  • Download URL: opty-0.2.0.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for opty-0.2.0.tar.gz
Algorithm Hash digest
SHA256 aaf53d76054b0c3603575450d1f9dd9c7fc1f29f91a3338b86642ee5af5334c2
MD5 c6c9f9779251344873a25c4b71977290
BLAKE2b-256 01d40d28cc306db5d9149825aa3594e394df7cdb3e87f9a965c1989a403d027e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page