Main Content

linearDegradationModel

Linear degradation model for estimating remaining useful life

Description

UselinearDegradationModelto model a linear degradation process for estimating the remaining useful life (RUL) of a component. Degradation models estimate the RUL by predicting when a monitored signal will cross a predefined threshold. Linear degradation models are useful when the monitored signal is a log scale signal or when the component does not experience cumulative degradation. For more information on the degradation model, seeLinear Degradation Model.

To configure alinearDegradationModelobject for a specific type of component, you can:

  • Estimate the model prior parameters using historical data regarding the health of an ensemble of similar components, such as multiple machines manufactured to the same specifications. To do so, usefit.

  • Specify the model prior parameters when you create the model based on your knowledge of the component degradation process.

Once you configure the parameters of your degradation model, you can then predict the remaining useful life of similar components usingpredictRUL. For a basic example illustrating RUL prediction with a degradation model, seeUpdate RUL Prediction as Data Arrives.

For general information on predicting remaining useful life, seeModels for Predicting Remaining Useful Life.

Creation

Description

example

mdl= linearDegradationModel创建一个线性退化模型估算RUL and initializes the model with default settings.

example

mdl= linearDegradationModel(Name,Value)specifies user-settable model properties using name-value pairs. For example,linearDegradationModel('NoiseVariance',0.5)creates a linear degradation model with a model noise variance of0.5. You can specify multiple name-value pairs. Enclose each property name in quotes.

Properties

expand all

This property is read-only.

Current mean value of slope parameterθin the degradation model, specified as a scalar. For more information on the degradation model, seeLinear Degradation Model.

You can specifyThetausing a name-value pair argument when you:

  • Create the model.

  • Reset the model using therestartfunction.

Otherwise, the value ofThetachanges when you use theupdatefunction.

This property is read-only.

Current variance of slope parameterθin the degradation model, specified as a nonnegative scalar. For more information on the degradation model, seeLinear Degradation Model.

You can specifyThetaVarianceusing a name-value pair argument when you:

  • Create the model.

  • Reset the model using therestartfunction.

Otherwise, the value ofThetaVariancechanges when you use theupdatefunction.

Current intercept valueϕfor the degradation model, specified as a scalar. For more information on the degradation model, seeLinear Degradation Model.

You can specifyPhiusing a name-value pair argument when you create the model. Otherwise, the value ofPhichanges when you estimate the model prior using thefitfunction.

Prior information about model parameters, specified as a structure with the following fields:

  • Theta— Mean value of slope parameter

  • ThetaVariance— Variance of slope parameter

You can specify the fields ofPrior:

  • When you create the model. When you specifyThetaorThetaVariance在创建模型使用名称-值对,相关系数esponding field ofPrioris also set.

  • Using thefitfunction. In this case, the prior values are derived from the data used to fit the model.

  • Using therestartfunction. In this case, the current values ofThetaandThetaVarianceare copied to the corresponding fields ofPrior.

  • Using dot notation after model creation.

For more information on the degradation model, seeLinear Degradation Model.

Variance of additive noiseεin the degradation model, specified as a nonnegative scalar. For more information on the degradation model, seeLinear Degradation Model.

You can specifyNoiseVariance:

  • Using a name-value pair when you create the model

  • Using a name-value pair with therestartfunction

  • Using dot notation after model creation

Slope detection level for determining the start of the degradation process, specified as a scalar in the range [0,1]. This value corresponds to the alpha value in a t-test of slope significance.

To disable the slope detection test, setSlopeDetectionLevelto[].

You can specifySlopeDetectionLevel:

  • Using a name-value pair when you create the model

  • Using a name-value pair with therestartfunction

  • Using dot notation after model creation

This property is read-only.

Slope detection time, which is the instant when a significant slope is detected, specified as a scalar. Theupdatefunction sets this value whenSlopeDetectionLevelis not empty.

This property is read-only.

Latest degradation feature value supplied to theupdatefunction, specified as a scalar.

This property is read-only.

Initial lifetime variable value when theupdatefunction is first called on the model, specified as a scalar.

When the model detects a slope, theInitialLifeTimevalue is changed to match theSlopeDetectionInstantvalue.

This property is read-only.

Latest lifetime variable value supplied to theupdatefunction, specified as a scalar.

生命周期变量, specified as a string that contains a valid MATLAB®variable name or"".

When you train the model using thefitfunction, if your training data is a:

  • table, thenLifeTimeVariablemust match one of the variable names in the table

  • timetable, thenLifeTimeVariableone of the variable names in the table or the dimension name of the time variable,data.Properties.DimensionNames{1}

You can specifyLifeTimeVariable:

  • Using a name-value pair when you create the model

  • As an argument when you call thefitfunction

  • Using dot notation after model creation

生命周期变量units, specified as a string.

The units of the lifetime variable do not need to be time-based. The life of the test component can be measured in terms of a usage variable, such as distance traveled (miles) or fuel consumed (gallons).

Degradation variable name, specified as a string that contains a valid MATLAB variable name. Degradation models have only one data variable.

You can specifyDataVariables:

  • Using a name-value pair when you create the model

  • As an argument when you call thefitfunction

  • Using dot notation after model creation

Flag for using parallel computing when fitting prior values from data, specified as eithertrueorfalse.

You can specifyUseParallel:

  • Using a name-value pair when you create the model

  • Using a name-value pair with therestartfunction

  • Using dot notation after model creation

Additional model information for bookkeeping purposes, specified as any data type or format. The model does not use this information.

You can specifyUserData:

  • Using a name-value pair when you create the model

  • Using dot notation after model creation

Object Functions

fit Estimate parameters of remaining useful life model using historical data
predictRUL Estimate remaining useful life for a test component
update Update posterior parameter distribution of degradation remaining useful life model
restart Reset remaining useful life degradation model

Examples

collapse all

Load training data.

load('linTrainVectors.mat')

The training data is a cell array of column vectors. Each column vector is a degradation feature profile for a component.

Create a linear degradation model with default settings.

mdl = linearDegradationModel;

Train the degradation model using the training data.

fit(mdl,linTrainVectors)

Create a linear degradation model and configure it with a known prior distribution.

mdl = linearDegradationModel(“θ”,0.25,'ThetaVariance',0.002);

The specified prior distribution parameters are stored in thePriorproperty of the model.

mdl.Prior
ans =struct with fields:Theta: 0.2500 ThetaVariance: 0.0020

The current posterior distribution of the model is also set to match the specified prior distribution. For example, check the posterior value of the slope variance.

mdl.ThetaVariance
ans = 0.0020

Load training data.

load('linTrainTables.mat')

The training data is a cell array of tables. Each table is a degradation feature profile for a component. Each profile consists of life time measurements in the"Time"variable and corresponding degradation feature measurements in the"Condition"variable.

Create a linear degradation model with default settings.

mdl = linearDegradationModel;

Train the degradation model using the training data. Specify the names of the life time and data variables.

fit(mdl,linTrainTables,"Time","Condition")

Load training data.

load('linTrainTables.mat')

The training data is a cell array of tables. Each table is a degradation feature profile for a component. Each profile consists of life time measurements in the"Time"variable and corresponding degradation feature measurements in the"Condition"variable.

Create a linear degradation model, specifying the life time variable units.

mdl = linearDegradationModel('LifeTimeUnit',"hours");

Train the degradation model using the training data. Specify the names of the life time and data variables.

fit(mdl,linTrainTables,"Time","Condition")

Load testing data, which is a run-to-failure degradation profile for a test component. The test data is a table with the same life time and data variables as the training data.

load('linTestData.mat','linTestData1')

Based on knowledge of the degradation feature limits, define a threshold condition indicator value that indicates the end-of-life of a component.

threshold = 60;

Assume that you measure the component condition indicator after 48 hours. Predict the remaining useful life of the component at this time using the trained linear degradation model. The RUL is the forecasted time at which the degradation feature will pass the specified threshold.

estRUL = predictRUL(mdl,linTestData1(48,:),threshold)
estRUL =duration112.64 hr

The estimated RUL is around 113 hours, which indicates a total predicted life span of around 161 hours.

Load observation data.

load('linTestData.mat','linTestData1')

For this example, assume that the training data is not historical data, but rather real-time observations of the component condition.

Based on knowledge of the degradation feature limits, define a threshold condition indicator value that indicates the end-of-life of a component.

threshold = 60;

Create a linear degradation model arbitrary prior distribution data and a specified noise variance. Also, specify the life time and data variable names for the observation data.

mdl = linearDegradationModel(“θ”,1,'ThetaVariance',1e6,'NoiseVariance',0.003,...'LifeTimeVariable',"Time",'DataVariables',"Condition",...'LifeTimeUnit',"hours");

Observe the component condition for50hours, updating the degradation model after each observation.

fori=1:50 update(mdl,linTestData1(i,:));end

After50hours, predict the RUL of the component using the current life time value stored in the model.

estRUL = predictRUL(mdl,threshold)
estRUL =duration50.301 hr

The estimated RUL is about 50 hours, which indicates a total predicted life span of about 100 hours.

Algorithms

expand all

References

[1] Chakraborty, S., N. Gebraeel, M. Lawley, and H. Wan. "Residual-Life Estimation for Components with Non-Symmetric Priors."IIE Transactions. Vol. 41, Number 4, 2009, pp. 372–387.

Extended Capabilities

Introduced in R2018a