MATLAB: Optimization based on inputs and outputs (for online optimization)

online parameter estimationoptimizationsimulink

Hi,
I want to do online optimization in a simulink real-time environment. I dont have a plant model, the plant is in the 'real' world and controlled via simulink.
The procedure for optimization could look like this:
- apply step change with initial parameters
- record response --> calculate benchmark
- give benchmark to optimization algorithm --> calculate new parameters
- apply step change with new parameters
-...
is there a way to use optimization functions such as fminsearch by giving them just the input and the output of a system? (instead of the function it self)
Cheers, Frank

Best Answer

I think any response is highly dependent on the system, so keep in mind it is difficult, even when described, to determine how I think the system would behave and the best options.
That being said, when I see the step response, even with a nonlinear system, I think control design, linear models etc. MATLAB has the PID Tuner that makes this realtively easy and looptune if you are doing more than PID. However, these require linear systems.
Simulink Design Optimization is the closest thing you could do with a non-linear system, but it's still a tough problem (again, depending on what the system is).
You could do the optimization manually by setting the gains/parameters as tunable in the simulink model and tuning them as you run. But actually using an optimization algorithm with the real-time system, in my opinion, makes this more challenging.