Simulink Design Optimization
This example shows how to use Simulink Design Optimization™ to estimate parameters of a clutch model created using SimDriveline library blocks.
The Simulink model of this system is shown below.
This model consists of two inertias coupled by a clutch. Initially, the pressure applied to the clutch plates is zero and Inertia 2 has zero velocity. A constant torque is also applied to Inertia 1. Once the clutch pressure starts increasing, Inertia 2 starts rotating. However, the friction between the clutch plates causes slippage so that the two inertias accelerate at different rates and have different velocities.
The coefficients of friction (C1, C2) in the Controllable Friction Clutch block are unknown and are estimated using experimental data for the output velocities of Inertial 1 and Inertia 2.
We have two sets of output data on this clutch system.
In the first experiment the clutch pressure follows the profile of Signal 1 supplied by the Clutch Pressure block. This signal applies a ramp-up and a ramp-down pressure on the clutch plates.
The output velocities of the inertias are shown in the following figure:
In the second experiment the clutch pressure follows the profile of Signal 2 supplied by the Clutch Pressure block. This signal applies a periodic pressure on the clutch plates.
The output velocities of the inertias are in shown the following figure:
We will use these experimental data sets in Parameter Estimation to estimate friction parameters of the clutch system.
The clutch system consists of two rotational inertias and a clutch. Pressure is applied to the clutch plates, which then couples the two inertias. A SimDriveline block is used to model the clutch, which has a speed dependent friction coefficient linearly varying from C1 at 0 rad/s to C2 at 10 rad/s.
In this scenario, even though we know the model components, their parameter values are not known accurately. A look at the response of this system shows that it does not match the experimental data, hence the parameters need to be estimated for a better fit.
In order to estimate these model parameters using experimental data, we select "Parameter Estimation..." from the Simulink model's "Analysis" menu.
The launched Control and Estimation Tools Manager consists of projects where we store our experimental data sets and estimation results. These projects can be saved and reused later.
Alternatively, you can double-click on the orange colored block at the lower corner of the Simulink diagram. This will reload a project that has been already saved.
In general, estimating model parameters consists of three main steps: These are importing experimental data sets into the project, selecting the model parameters for estimation, and running an estimation and analyzing the results.
Let's first take a look at importing the experimental data. A new data set can be created by clicking on the Transient Data node and pressing the New button in the right-hand-side panel. These data sets can then be used for estimation and/or validation.
These data sets can be imported from various sources including MATLAB variables, MAT files, Excel files, or comma-separated-value files. Once we import the data, we can plot them to confirm that we have the right data sets in our estimation project.
We have already defined two data sets that we have mentioned above. The first one, Estimation Data, will be used for parameter estimation and the other one, Validation Data, for validating the response of the Simulink model with the estimated parameters.
The next step is to define the variables for the estimation. This establishes which parameters of the simulation can be adjusted, and any rules governing their values.
The Estimation variables are selected by clicking on the Variables node and pressing the Add button. This opens a Select Parameters dialog from which we can select the model parameters that we desire to estimate.
We have already added the two unknown parameters in our model using the selection dialog. These parameters are the friction coefficients C1 and C2 in the Controllable Friction Clutch block.
On the panel to the right of the list of parameters, you can set the initial guesses for the parameter values, and the minimum and maximum bounds on these values.
The above steps are done before we run an estimation. In order to run an estimation, we first need to create an estimation. This is done by clicking on the Estimation node and pressing the New button in the right-hand-side panel.
In our project, we have already created an estimation node called New Estimation. We can click on this node to set up its various options.
The first panel is where we select the data sets to be used in this estimation. It is possible to use one or more data sets at once in a given estimation. For our example, we will use the data set called Estimation Data.
The next panel called "Parameters" is where we select which parameters to estimate in this estimation.
We are almost ready to start our estimation. However, in order to monitor the progress of the estimation process, we would like to create a number of dynamics plots, called "Views".
In order to create a new view, we click on the Views node and press the New button in the panel to the right. We have already created a view called New View. Clicking on this node and pressing the Show Plots button will create the plots that we would like to see updated during the estimation process.
We have selected two plot types. The first one will plot the simulation response against the experimental data used for the estimation. As the parameter values improve the simulation curve should get closer to the experimental data curve. The second plot will show the parameter values at each iteration. These curves should reach steady-state as the parameter values get closer to their physical values.
We are now ready to run our estimation. In order to start it we go back to the New Estimation node and press the Start button in the Estimation tab panel.
This will start the estimation process that will vary the estimated model parameters in order to reduce the error between the simulation outputs and the experimental data.
We provide a number of estimation methods. The default one is the nonlinear least-squares minimization method. However, you can also use simplex search, pattern search, or genetic algorithms to estimate the model parameters.
While the estimation is running, the Views will update at each iteration. As the estimation progresses the simulation of the model with the updated parameter values results in a response that fits more closely with the experiment data. The updated parameter values are also shown in the parameter trajectory plot.
Also, the table in the "Estimation" panel will report data regarding the estimation process such as the number of iterations, the number of simulations, and the cost function. The cost function value represents the degree of fit between the simulation response and the estimation data. This value would decrease at each iteration, indicating the amount of improvement in the fit.
Once the estimation is complete, we can go back to the Parameters tab and look at the estimated values. The Value column shows the new parameter values at the end of the estimation. These parameter values are also updated in the MATLAB Workspace so that we can use them directly in our Simulink model.
Once we complete the estimation, it is important to validate the results against other data sets. A successful estimation should be able to not only match the experimental data that we used for estimation, but also the other data sets that we collected in our experiments.
A validation can be created by clicking on the Validation node and pressing the New button on the right-hand-side panel. We have a New Validation node that we already created. Clicking on this validation node and pressing the Show Plots button will create a measured vs. simulation plot that we can use to compare the simulation response against experimental data. The default plot is the same as the plot that we created to monitor the estimation. Hence the match is very good.
However, we can also validate the model response against the other validation data set that we have defined. To do this, first double-click on the Manual Switch block to change the input signal to the one used for validation data (Signal 2). Then in the Parameter Estimation GUI, select Validation Data from the combobox named "Validation data set:" in the "New Validation" panel.