System identification techniques can utilize both input and output data (e.g. eigensystem realization algorithm) or can include only the output data (e.g. frequency domain decomposition).
Typically an input-output technique would be more accurate, but the input data is not always available.
Therefore, systems engineers have long used the principles of the design of experiments.
[2] In recent decades, engineers have increasingly used the theory of optimal experimental design to specify inputs that yield maximally precise estimators.
[3][4] One could build a white-box model based on first principles, e.g. a model for a physical process from the Newton equations, but in many cases, such models will be overly complex and possibly even impossible to obtain in reasonable time due to the complex nature of many systems and processes.
Parameter estimation is relatively easy if the model form is known but this is rarely the case.
Another advantage of this approach is that the algorithms will just select linear terms if the system under study is linear, and nonlinear terms if the system is nonlinear, which allows a great deal of flexibility in the identification.
This performance is typically achieved by designing the control law relying on a model of the system, which needs to be identified starting from experimental data.
In fact, if one wants to apply a purely proportional negative feedback controller with high gain
is a perfectly acceptable identified model for the true system if such feedback control law has to be applied.
Sometimes, it is even more convenient to design a controller without explicitly identifying a model of the system, but directly working on experimental data.
A common understanding in Artificial Intelligence is that the controller has to generate the next move for a robot.
[12] A forward model is equal to a physics engine used in game programming.
The model takes an input and calculates the future state of the system.
The reason why dedicated forward models are constructed is because it allows one to divide the overall control process.
That means, to simulate a plant over a timespan for different input values.
And the second task is to search for a sequence of input values which brings the plant into a goal state.
If it's unclear what the behavior of a system is, it's not possible to search for meaningful actions.
The workflow for creating a forward model is called system identification.
[13] The error between the real system and the forward model can be measured.
There are many techniques available to create a forward model: ordinary differential equations is the classical one which is used in physics engines like Box2D.
A more recent technique is a neural network for creating the forward model.