Skip to content

Commit

Permalink
add opty reference
Browse files Browse the repository at this point in the history
  • Loading branch information
fhchl committed Aug 18, 2024
1 parent c69f9dc commit 9421a2d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
9 changes: 8 additions & 1 deletion paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,11 @@ @book{sastryNonlinearSystems1999
location = {{New York, NY}},
doi = {10.1007/978-1-4757-3108-8},
urldate = {2022-06-06},
}
}

@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}
}
15 changes: 8 additions & 7 deletions paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down

0 comments on commit 9421a2d

Please sign in to comment.