This is an interim version of our Electronic Legal Deposit Catalogue-eJournals and eBooks while we continue to recover from a cyber-attack.
OpEn: Code Generation for Embedded Nonconvex Optimization⁎The work of P. Patrinos was supported by: FWO projects: G086318N, G086518N, G0A0920N; Fonds de la Recherche Scien-tifique — FNRS, the Fonds Wetenschappelijk Onderzoek — Vlaan-deren under EOS Proj. 30468160 (SeLMA), Research Council KU Leuven C1 proj. No. C14/18/068 and the Ford-KU Leuven Research Alliance project. Issue 2 (2020)
Record Type:
Journal Article
Title:
OpEn: Code Generation for Embedded Nonconvex Optimization⁎The work of P. Patrinos was supported by: FWO projects: G086318N, G086518N, G0A0920N; Fonds de la Recherche Scien-tifique — FNRS, the Fonds Wetenschappelijk Onderzoek — Vlaan-deren under EOS Proj. 30468160 (SeLMA), Research Council KU Leuven C1 proj. No. C14/18/068 and the Ford-KU Leuven Research Alliance project. Issue 2 (2020)
Main Title:
OpEn: Code Generation for Embedded Nonconvex Optimization⁎The work of P. Patrinos was supported by: FWO projects: G086318N, G086518N, G0A0920N; Fonds de la Recherche Scien-tifique — FNRS, the Fonds Wetenschappelijk Onderzoek — Vlaan-deren under EOS Proj. 30468160 (SeLMA), Research Council KU Leuven C1 proj. No. C14/18/068 and the Ford-KU Leuven Research Alliance project.
Abstract: We present Optimization Engine (OpEn): an open-source code generation framework for real-time embedded nonconvex optimization, which implements a novel numerical method. OpEn combines the proximal averaged Newton-type method for optimal control (PANOC) with the penalty and augmented Lagrangian methods to compute approximate stationary points of nonconvex problems. The proposed method involves very simple algebraic operations such as vector products, has a low memory footprint and exhibits very good convergence properties that allow the solution of nonconvex problems on embedded devices. OpEn's core solver is written is Rust — a modern, high-performance, memory-safe and thread-safe systems programming language — while users can call it from Python, MATLAB, C, C++, ROS or over a TCP socket.