Skip to content

FreyJo/nosnoc_py

Repository files navigation

nosnoc

More documentation can be found on https://nosnoc-py.readthedocs.io/en/latest/

About

nosnoc is an open source Python software package for NOnSmooth Numerical Optimal Control.

A detailed overview of the theory and methods behind NOSNOC can be found in the course material of the Summer School on Direct Methods for Optimal Control of Nonsmooth Systems.

It is a structured reimplementation of the Matlab package NOSNOC (https://github.com/nurkanovic/nosnoc), but does not support all features in there (yet). Most importantly, time freezing is not implemented yet.

It implements the FESD (Finite elements with switch detection) method, which allows one to handle nonsmooth ODE systems accurately in simulation and optimal control problems.

More information can be found in the NOSNOC package (https://github.com/nurkanovic/nosnoc).

Installation

  1. Setup virtual environment:
virtualenv env --python=python3
  1. Source environment:
source env/bin/activate
  1. Install
pip install -e .

Optional additional installation steps

  1. In order to build docs also run:
pip -r docs/docs_reqirements.txt
  1. In order to run tests you should install the testing requirements:
pip -r requirements-test.txt

Literature - theory and algorithms

FESD

Finite Elements with Switch Detection for Direct Optimal Control of Nonsmooth Systems
A.Nurkanović, M. Sperl, S. Albrecht, M. Diehl
arXiv preprint 2022

NOSNOC

NOSNOC: A Software Package for Numerical Optimal Control of Nonsmooth Systems
A.Nurkanović , M. Diehl
IEEE Control Systems Letters 2022