From 9421a2d83452a62fe96f648479320181478a3110 Mon Sep 17 00:00:00 2001 From: fhchl Date: Sun, 18 Aug 2024 11:37:36 +0200 Subject: [PATCH] add opty reference --- paper.bib | 9 ++++++++- paper.md | 15 ++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/paper.bib b/paper.bib index 68dcc7b..35fb0d6 100644 --- a/paper.bib +++ b/paper.bib @@ -96,4 +96,11 @@ @book{sastryNonlinearSystems1999 location = {{New York, NY}}, doi = {10.1007/978-1-4757-3108-8}, urldate = {2022-06-06}, -} \ No newline at end of file +} + +@article{moore2018opty, + title={opty: Software for trajectory optimization and parameter identification using direct collocation}, + author={Moore, Jason K and van den Bogert, Antonie J}, + journal={Journal of Open Source Software}, + year={2018} +} diff --git a/paper.md b/paper.md index 6589d3e..be2201c 100644 --- a/paper.md +++ b/paper.md @@ -21,22 +21,23 @@ bibliography: paper.bib # Summary Describing the evolution of systems over time is an integral part of the sciences and engineering for verifying models, -predicting outcomes, and controlling systems for some desired behavior. However, -the parameters of such models are often unknown and need to be estimated from +predicting outcomes, and controlling systems for some desired behavior. +The parameters of such models are often unknown and need to be estimated from data. `Dynax` is a Python package for modeling nonlinear dynamical systems and estimating their parameters from data. Additionally, it provides routines for computing feedback laws which render the input-output behavior of -these systems linear and thus controllable. `Dynax` is based on JAX and uses its automatic differentiation for speeding up optimizations and computing the input-output linearizing control inputs automatically from model descriptions. +these systems linear. `Dynax` is based on JAX and uses its automatic differentiation for speeding up optimizations and computing the input-output linearizing control inputs automatically from model descriptions. `Dynax`'s main features include: -- Parameters estimation of nonlinear systems: fitting of both continuous and discrete-time systems to data via the prediction-error method [@ljung2002prediction], fitting to multiple experiments simultaneously, fitting via multiple shooting [@Bock1981;@9651533], estimation of parameter covariances, and box-constraints on parameter values. -- Automatic input-output linearization [@sastryNonlinearSystems1999]: computing of feedback laws for both continuous-time input-affine systems and general discrete-time systems with well-defined relative degrees that allow tracking of linear reference outputs. -- Parameter estimation of linear or linearized ODEs via matching of frequency-responses [@pintelonSystemIdentificationFrequency2012]: this is helpful for obtaining good starting guesses for the identification of the nonlinear identification. +- Parameter estimation of nonlinear systems in continuous or discrete-time via the prediction-error method [@ljung2002prediction], over multiple experiments, via multiple shooting [@Bock1981;@9651533], and with box-constraints on parameter values +- Estimation of parameter covariances +- Automatic input-output linearization [@sastryNonlinearSystems1999]: computing of feedback laws for both continuous-time input-affine systems and general discrete-time systems with well-defined relative degrees that allow tracking of linear reference outputs +- Parameter estimation of linear or linearized ODEs via matching of frequency-responses [@pintelonSystemIdentificationFrequency2012], which can be helpful for obtaining good starting guesses for the identification of the nonlinear parameters from wide-band inputs. # Statement of need -Currently, there exist no tools in the Python ecosystem that directly facilitate parameter estimation for nonlinear differential equation systems (sometimes called "grey-box models"). For nonlinear system identification, there exists `nlgreyest`[^nlgreyest] and `nlgreyfast` [@retzler_shooting_2022] in Matlab, `SciMLSensitivity` [@rackauckas2020universal] and the related SciML ecosystem in Julia. For Python, there exists only packages for linear system identification like `SIPPY`[^sippy] or non-parameteric models like `sysidentpy` [@lacerda2020sysidentpy]. Most importantly, Dynax seems to be the first publicly available software package for computing input-output linearizing control signals automatically. +Currently, there exist only few tools in the Python ecosystem that directly facilitate parameter estimation for nonlinear differential equation systems (sometimes called "grey-box models"). For nonlinear system identification in other languages, there exists `nlgreyest`[^nlgreyest] and `nlgreyfast` [@retzler_shooting_2022] in Matlab, `SciMLSensitivity` [@rackauckas2020universal] and the related SciML ecosystem in Julia. For Python, there exists `SIPPY`[^sippy] for linear system identification, `sysidentpy`[@lacerda2020sysidentpy] for identification of non-parameteric models, and `opty` [@moore2018opty] for estimation parametric nonlinear systems. Most importantly, Dynax seems to be the first publicly available software package for computing input-output linearizing control signals automatically. `Dynax` was designed to be used by researchers, students and engineers that are familiar with Python without the need to know about optimization, estimation and automatic differentiation. Importantly, only minimal use of JAX is required by the user when defining dynamical systems. `Dynax` is already used at the Technical University of Denmark for research and teaching on the modeling of nonlinear acoustic transducers. There, it is enjoyed for the simplicity with which one can come up with new models, fit them to data and automatically compute the signals that make such transducers act more linearly and thus less distorted.