Coder Social home page Coder Social logo

freyjo / hpmpc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from giaf/hpmpc

0.0 0.0 0.0 7.3 MB

Library for High-Performance implementation of solvers for MPC.

License: GNU Lesser General Public License v2.1

CMake 0.09% Makefile 0.72% C 98.11% MATLAB 0.13% Assembly 0.39% C++ 0.54% Objective-C 0.02%

hpmpc's Introduction

HPMPC is maintained but no longer under active development.

The interested user is invited to use HPIPM instead, a new and modular implementation of the same algorithms (Riccati-based IPM for LQOCP and (partial-)condensing)

https://github.com/giaf/hpipm


HPMPC -- Library for High-Performance implementation of solvers for MPC.

The library aims at providing routines for high-performance implementation of solvers for linear MPC and MHE. Critical linear-algebra routines are highly optimized for a number of different computer architectures. These routines are used to efficiently implement a Riccati recursion solver for the uncontrained MPC and MHE problems (LQCP), that in turn is the key routine in solvers for constrained MPC problems. At the moment, Interior-Point (IP) method and ADMM (Alternating Direction Method of Multipliers) solvers are available for both box and soft constrained MPC problems.

The code is highly-optimized for a number of common architectures, plus a reference version in plain C code. The target architecture can be set in the configuration file

hpmpc_main_folder/Makefile.rule

The configuration file provides a good choice of compiler and compiler flags for supported architectures, and it can be used to set different values if needed. However, notice that the code is intended to be compiled using gcc or clang, and some optimized routine may not work with other compilers.

The folder test_problems contains some test problem for the linear-algebra, for the LQCP solvers and for the MPC solvers. The test problem can be chosen by editing the file

hpmpc_main_folder/test_problems/Makefile

An higher level C interface is provided in the folder hpmpc_main_folder/interfaces/c. This interface is used to provide Octave wrappers using mex files and Octave test problems in the folder hpmpc_main_folder/interfaces/octave.

The code comes as a library, that can solve problems of every size. It is generated typing in a terminal the command

$ make_static_library

for the static library and

$ make_shared_library

for the dynamic libray. The command

$ make

builds the static library and builds and runs the test problem. Static library and headers can be installed using the command

$ make_install_static_library

while the dynamic library and headers can be installed using the command

$ make_install_shared_library

Alternatively, the library can be build using Cmake. This can be done by creating the folder hpmpc_main_folder/build and then type in a terminal the command

$ cd hpmcp_main_folder/build
$ cmake ..
$ make

More documentation will be available soon.

Questions and comments can be send to the author Gianluca Frison, at the email addresses

gianluca.frison (at) imtek.uni-freiburg.de

hpmpc's People

Contributors

giaf avatar zanellia avatar mvukov avatar roversch avatar ghorn avatar jgillis avatar bnovoselnik avatar

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.