ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

データの着信に応じた RUL 予測の更新

この例では、テスト対象のマシンから新しいデータ着信するのに応じて RUL の予測を更新する方法を説明します。例においては、学習データのアンサンブルを使用して RUL モデルに学習させます。その後、単一マシンからのテスト データのシーケンスをループ処理して、新しいデータごとに RUL の予測を更新します。例は、新しいデータが利用可能となるのに応じた RUL の予測の進展を示します。

この例では exponentialDegradationModel を使用します。劣化の RUL モデルでは、新しいデータ点が利用可能になった時点で、新しい RUL 値を予測する前に、まず劣化モデルを更新しなければなりません。他の RUL モデル タイプではこの更新手順をスキップしてください。

学習用データと予測用データ

2 つの変数 TestDataTrainingData で構成される、この例のデータを読み込みます。

load UpdateRULExampleData

TestData は何らかの条件インジケーター Condition の値を含む table で、最初のいくつかのエントリで示されるように、1 時間ごとに記録されています。

head(TestData,5)
ans=5×2 table
    Time    Condition
    ____    _________

     1        1.0552 
     2        1.2013 
     3       0.79781 
     4          1.09 
     5        1.0324 

TrainingData は table の cell 配列で、TestData と同じ変数を含んでいます。TrainingData の各 cell は、アンサンブルの 1 つのマシンの寿命を通した、条件インジケーター Condition の故障までの進展を表します。

予測モデルの学習

TrainingData を使用して、RUL 予測のために exponentialDegradationModel モデルに学習させます。fit コマンドは、TrainingData の履歴記録に基づいてモデルのパラメーターの事前確率分布を推定します。学習済みモデルの Prior プロパティにはモデル パラメーター ThetaBetaRho が含まれます (これらのモデル パラメーターの詳細については、exponentialDegradationModelを参照)。

mdl = exponentialDegradationModel('LifeTimeUnit',"hours");
fit(mdl,TrainingData,"Time","Condition")
mdl.Prior
ans = struct with fields:
            Theta: 0.6389
    ThetaVariance: 0.0661
             Beta: 0.0583
     BetaVariance: 1.8383e-04
              Rho: -0.3129

劣化モデルは、条件インジケーターの測定で初期勾配が現れた後に、劣化の追跡の信頼性が最も高くなります。勾配の検出レベルを 0.1 に設定して、この勾配に達するまでは RUL の予測を行わないようモデルに指定します (測定値が既に劣化を開始したコンポーネントのものであることが前もってわかっている場合、mdl.SlopeDetectionLevel = [] と設定して勾配の検出を無効にできます)。

mdl.SlopeDetectionLevel = 0.1;

各タイム ステップでの RUL の予測

マシンの耐用寿命末期を示す、条件インジケーターのしきい値を定義します。RUL は、テスト マシンの条件インジケーターがこのしきい値に達するまでの予測残り時間です。

threshold = 400;

RUL の予測の場合、TestDatat = 1 時間で開始し、新しいデータ サンプルが 1 時間ごとに利用可能になるものと仮定します。一般に、新しいデータ点ごとに新しい RUL 値を予測できます。この例の劣化モデルの場合、TestData をループ処理し、update コマンドを使って新しいデータ点ごとにモデルを更新します。その後、信頼性の高い RUL 予測のために十分な勾配の変化をモデルが検出するかどうかをチェックします。検出する場合は、predictRUL コマンドを使用して新しい RUL 値を予測します。推定の変化を観察するには、推定された RUL 値とそれに関連する信頼区間を、ベクトル EstRUL および CI にそれぞれ保存します。同様に、モデル パラメーターを配列 ModelParameters に保存します。

N = height(TestData);
EstRUL = hours(zeros(N,1));   
CI = hours(zeros(N,2));       
ModelParameters = zeros(N,3);
for t = 1:N
   CurrentDataSample = TestData(t,:);    
   update(mdl,CurrentDataSample)
   ModelParameters(t,:) = [mdl.Theta mdl.Beta mdl.Rho];
   % Compute RUL only if the data indicates a change in slope.
   if ~isempty(mdl.SlopeDetectionInstant)
      [EstRUL(t),CI(t,:)] = predictRUL(mdl,CurrentDataSample,threshold);
   end
end

推定されたモデル パラメーターの値の軌跡をプロットします。劣化データで勾配が検出された後、値は急速に変化します。利用できるデータ点の数が多くなるほど、収束する傾向にあります。

Time = hours(1:N)';
tStart = mdl.SlopeDetectionInstant; % slope detection time instant
plot(Time,ModelParameters);
hold on
plot([tStart, tStart],[-1,2],'k--')
legend({'\theta(t)','\beta(t)','\rho(t)','Slope detection instant'},'Location','best')
hold off

予測された RUL をプロットして、利用できる劣化データの増加に伴うその変化を観察します。劣化データに勾配が検出されるまで、新しい RUL の推定値はありません。その後、予測された RUL は予想どおり時間とともに減少します。predictRUL は、RUL 値の統計的な分布を計算します。予測された RUL の信頼限界は時間とともに狭まります。

plot(Time,EstRUL,'b.-',Time,CI,'c',tStart,EstRUL(hours(tStart)),'r*')
title('Estimated RUL at Time t')
xlabel('t')
ylabel('Estimated RUL')
legend({'Predicted RUL','Confidence bound','Confidence bound','Slope detection instant'})

参考

| |

関連するトピック