baggepinnen / ControlSystemIdentification.jl

System Identification toolbox, compatible with ControlSystems.jl
https://baggepinnen.github.io/ControlSystemIdentification.jl/dev
MIT License
130 stars 13 forks source link

Efficient estimation of Hammerstein Wiener systems #132

Open baggepinnen opened 1 year ago

baggepinnen commented 1 year ago

These are just some loose thoughts.

A HW model consists of an input nonlinearity $g_i(u)$, a linear system $G(s)$, an output nonlinearity $g_o(y)$ and possibly an observer-feedback function $K(y)$. If we model the nonlinearities with neural-networks, we could obtain an efficient algorithm by

  1. Applying $g_i(u)$ in batch to transform the entire input trajectory.
  2. Apply a possibly learned nonlinear observer in batch $K(y)$.
  3. Simulate the linear system $G$ like usual.
  4. Apply $g_o(u)$ in batch to the output of the linear system.

This algorithm would avoid the costly point-wise application of the neural networks. One complication is that the observer feedback typically operates on the error, or more generally, both the predicted and measured outputs. If we learn the observer, this might still have to be called in the loop, but a pre-transform of the measurements may still be beneficial to add modeling power without adding excessive computational overhead.


133 estimates a HW model in the special case where the nonlinearities are known.