Parameter optimization without real input-output model

1 view (last 30 days)
Hello,
I'm building a model of an accelerating engine in SimuLink, and based on real logged data I want to approximate my parameters (Cd, rolling coefficient) such that they reflect reality. To achieve this I'm using the Control and Estimation Tools manager. I think is a suitable tool but I have some problems with the implementation. The examples I've found on internet all concern an input-output based situation, such a DC engine. However, the nature of my model is a bit different. I just supply initial conditions (entry speed, gear etc.) to run the simulation. As such, I do not have a clear input-output model that i can specify for the optimizer, and thus the parameter optimizer says that the object function is in a local minimum.
I hope it's a bit clear what I mean, and you can help me out :)

Accepted Answer

Alexander Efremov
Alexander Efremov on 14 May 2012
As I understand the optimization problem, you would like to minimize something at the end of the day (like least square error between an experimental and model time domain data). Keeping that in mind, I suppose you have some real world (or experimental) data. What kind of data is that? I suppose that should be some time domain vectors (input and output, or, as far as you're refering to some non-I\O case, just output by constant input).
I would say you have to repeat the same situation you have in real world in your model and ask Parameter Estimator to tune the parameters.
  3 Comments
Alec Stothert
Alec Stothert on 14 May 2012
Not having an import should not be a problem, the example http://www.mathworks.com/help/toolbox/sldo/ug/brz_xvq.html#brz_xx9-5, walks through a problem with no inputs, and initial state estimation.
Roy Veldhuizen
Roy Veldhuizen on 15 May 2012
I managed to do it a bit differently. I specified an input vector of time with sim() command. This allowed me to use the time as an input.
[Time Distance Velocity]=sim(filename,[StartTime EndTime],OPTIONS, [input:timevector, input:timevector)]);
I know it's probably not the most neat way to do it, but it worked for me, as it allows me to specify to only give time and initial states as an input.
I think the example Alec gives is not that suitable either, as it focuses on the estimation of the initial state, which is known in my case.

Sign in to comment.

More Answers (0)

Categories

Find more on Parameter Estimation in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!