All Projects → deng-haoyang → ParNMPC

deng-haoyang / ParNMPC

Licence: BSD-2-Clause license
A Parallel Optimization Toolkit for Nonlinear Model Predictive Control (NMPC)

Programming Languages

matlab
3953 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
M
324 projects
CMake
9771 projects

Projects that are alternatives of or similar to ParNMPC

autogenu-jupyter
An automatic code generator for nonlinear model predictive control (NMPC) and the continuation/GMRES method (C/GMRES) based numerical solvers for NMPC
Stars: ✭ 89 (-48.55%)
Mutual labels:  mpc, code-generation, model-predictive-control, nmpc, nonlinear-model-predictive-control
Model-Predictive-Control
C++ implementation of Model Predictive Control(MPC)
Stars: ✭ 51 (-70.52%)
Mutual labels:  mpc, model-predictive-control
mpc
Autonomous control of an USV using Model Predictive Control
Stars: ✭ 102 (-41.04%)
Mutual labels:  mpc, model-predictive-control
XH5For
XDMF parallel partitioned mesh I/O on top of HDF5
Stars: ✭ 23 (-86.71%)
Mutual labels:  parallel
emp-tool
No description or website provided.
Stars: ✭ 155 (-10.4%)
Mutual labels:  mpc
do
Simplest way to manage asynchronicity
Stars: ✭ 33 (-80.92%)
Mutual labels:  parallel
rocPRIM
ROCm Parallel Primitives
Stars: ✭ 95 (-45.09%)
Mutual labels:  parallel
awesome-secure-computation
Awesome list for cryptographic secure computation paper. This repo includes *Lattice*, *DifferentialPrivacy*, *MPC* and also a comprehensive summary for top conferences.
Stars: ✭ 125 (-27.75%)
Mutual labels:  mpc
emhass
emhass: Energy Management for Home Assistant, is a Python module designed to optimize your home energy interfacing with Home Assistant.
Stars: ✭ 54 (-68.79%)
Mutual labels:  model-predictive-control
openapi-client
Generate ES6 or Typescript service integration code from an OpenAPI 2 spec
Stars: ✭ 92 (-46.82%)
Mutual labels:  code-generation
django-code-generator
Generate code from your Django models for faster development
Stars: ✭ 35 (-79.77%)
Mutual labels:  code-generation
pennylane-lightning
The PennyLane-Lightning plugin provides a fast state-vector simulator written in C++ for use with PennyLane
Stars: ✭ 28 (-83.82%)
Mutual labels:  parallel
cog
Command-line utility that makes it easy to organize a project which uses code generation
Stars: ✭ 15 (-91.33%)
Mutual labels:  code-generation
solregex
Regex compilation to Solidity
Stars: ✭ 37 (-78.61%)
Mutual labels:  code-generation
parallelizer
Simplifies the parallelization of function calls.
Stars: ✭ 62 (-64.16%)
Mutual labels:  parallel
1c http
Подсистема 1С для работы с HTTP
Stars: ✭ 48 (-72.25%)
Mutual labels:  code-generation
CESM postprocessing
Project repository for the CESM python based post-processing code, documentation and issues tracking.
Stars: ✭ 63 (-63.58%)
Mutual labels:  parallel
swaggie
Tool for generating TypeScript services for given Swagger API endpoints
Stars: ✭ 18 (-89.6%)
Mutual labels:  code-generation
ContactImplicitMPC.jl
Fast contact-implicit model-predictive control for robotic systems that make and break contact with their environments.
Stars: ✭ 51 (-70.52%)
Mutual labels:  model-predictive-control
orm
Go Typed ORM
Stars: ✭ 16 (-90.75%)
Mutual labels:  code-generation

ParNMPC Version 1903-1

New Features in Version 1903-1:

  • Primal-dual interior-point method
  • Improved user interface
  • Better performance
  • Line search

Introduction

Homepage: https://deng-haoyang.github.io/ParNMPC/

ParNMPC is a MATLAB real-time optimization toolkit for nonlinear model predictive control (NMPC). The purpose of ParNMPC is to provide an easy-to-use environment for NMPC problem formulation, closed-loop simulation, and deployment.

With ParNMPC, you can define your own NMPC problem in a very easy way and ParNMPC will automatically generate self-contained C/C++ code for single- or multi-core CPUs.

ParNMPC is very fast even with only one core (the computation time is usually in the range of $\mu$s), and a high speedup can be achieved when parallel computing is enabled.

Highlights

  • Symbolic problem representation
  • Automatic parallel C/C++ code generation with OpenMP
  • Fast rate of convergence (up to be superlinear)
  • Highly parallelizable (capable of using at most N cores, N is the # of discretization steps)
  • High speedup ratio
  • MATLAB & Simulink

Installation

  1. Clone or download ParNMPC.
  2. Extract the downloaded file.

Requirements

  • MATLAB 2016a or later
  • MATLAB Coder
  • MATLAB Optimization Toolbox
  • MATLAB Parallel Computing Toolbox
  • MATLAB Symbolic Math Toolbox
  • Simulink Coder
  • C/C++ compiler supporting parallel code generation

Getting Started (MATLAB 2018b)

  1. Select the Microsoft Visual C++ 2017 (C) compiler:
>> mex -setup
  1. Navigate to the Quadrotor/ folder.
>> cd  Quadrotor/
  1. Open NMPC_Problem_Formulation.m and run.

  2. Open Simu_Simulink_Setup.m and run.

  3. Open Simu_Simulink.slx and run.

Citing ParNMPC

Citing the parallel algorithm:

@article{deng2019parallel,
  title={A parallel Newton-type method for nonlinear model predictive control},
  author={Deng, Haoyang and Ohtsuka, Toshiyuki},
  journal={Automatica},
  volume={109},
  pages={108560},
  year={2019}}

Citing the toolbox (conference version):

@inproceedings{deng2018parallel,
  title={A parallel code generation toolkit for nonlinear model predictive control},
  author={Deng, Haoyang and Ohtsuka, Toshiyuki},
  booktitle={Proceedings of the 57th {IEEE} {C}onference on {D}ecision and {C}ontrol},
  pages={4920--4926},
  year={2018},
  address={Miami, USA}}

License

ParNMPC is distributed under the BSD 2-Clause "Simplified" License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].