日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機站
  • 小程序

    汽車測試網(wǎng)

  • 公眾號
    • 汽車測試網(wǎng)

    • 在線課堂

    • 電車測試

首頁 > 汽車技術 > 正文

數(shù)據(jù)驅動的動態(tài)系統(tǒng)(Dynamical System)建模(一):深度學習

2022-04-06 19:39:18·  來源:劉海偉 MATLAB  
 
仿真測試以及代碼生成

Simulink 中的深度學習推斷模塊[鏈接8]支持將我們訓練好的模型作為 block 參數(shù), 一起作為被控對象集成到整個電池管理系統(tǒng)中。

圖片

圖表 7 電池管理系統(tǒng)和電池的系統(tǒng)模型

圖中所示的 BMS 的 Simulink 模型可以監(jiān)控電池狀態(tài),確保運行安全,還有一個電池模型用于仿真電池的動態(tài)和負荷。上面訓練的深度學習 SoC 預測器和其他電池平衡邏輯 Block 一樣嵌入在 BMS 中可以閉環(huán)仿真,以及后面做代碼生成與硬件在環(huán)。

圖片

圖表 8 Simulink 中原生的用于深度學習推斷的 Block 和 BMS 中的閉環(huán)測試 SoC 預測效果

圖片

圖表 9 deep learning 模塊的 C 代碼生成

上面這個示例我們利用衍生特征(通過時間滑窗構建時域依賴的特征,也可以通過不同長度的滑窗構建多尺度的時域特征),將前饋神經(jīng)網(wǎng)絡用于動態(tài)系統(tǒng)的建模。

Temporal convolutional network (TCN)

TCN 的主要構成是一個擴展因果卷積層。任何一個時刻的計算輸出都是基于多個歷史時刻的輸入。

它用于構建動態(tài)系統(tǒng)的邏輯和前面介紹的衍生特征是類似的,都是考慮了歷史的多個時間步的輸入,因此也可以用于建模動態(tài)系統(tǒng)。

TCN 從之前的時間步構建依賴,通常需要將多個卷積層疊加在一起。為了獲得更長期的依賴關系,卷積層的膨脹因子呈指數(shù)級增加,如下圖所示。

假設第 k 個卷積層的膨脹因子為2???1 ,步長為 1,則該網(wǎng)絡的考慮到的依賴的時間窗的大小可計算為 R=(f-1)(2?-1)+1,其中 f 為過濾器大小,K 為卷積層數(shù)。圖中對應的 f=2,K=4, 于是 R=16, 也就是當前時刻輸出可以考慮到前面 16 個時刻步長輸入。

圖片

與循環(huán)網(wǎng)絡(RNN)相比,TCN 的缺點之一是它在推理期間占用更大的內(nèi)存。計算下一個時間步需要整個原始序列。下圖是一個經(jīng)典的 TCN 模型結構(結合殘差網(wǎng)絡):[鏈接4]

for i = 1:numBlocks

    dilationFactor = 2^(i-1);

layers = [

convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal",Name="conv1_"+i)

    layerNormalizationLayer

   spatialDropoutLayer(dropoutFactor)

convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal")

    layerNormalizationLayer

    reluLayer

   spatialDropoutLayer(dropoutFactor)

    additionLayer(2,Name="add_"+i)];

    % Add and connect layers.

    lgraph =addLayers(lgraph,layers);

    lgraph =connectLayers(lgraph,outputName,"conv1_"+i);

圖片

一般的 TCN 架構(如[1]中所述)由多個殘差塊組成,每個殘差塊包含兩組具有相同擴張因子的擴張因果卷積層,然后是歸一化層、ReLU 激活層和空間 dropout 層。

網(wǎng)絡將每個塊的輸入加到該塊的輸出上(當輸入和輸出之間的通道數(shù)量不匹配時,對輸入進行 1 × 1 的卷積),并應用最終的激活函數(shù)。

循環(huán)神經(jīng)網(wǎng)絡: LSTM/Gru

循環(huán)網(wǎng)絡的結構與前饋神經(jīng)網(wǎng)絡不同,它帶有一個指向自身的環(huán),用來表示它可以傳遞當前時刻處理的信息給下一時刻使用,我們選取 LSTM 來介紹,結構如下,

圖片

LSTM 之所以可以用于動態(tài)系統(tǒng)建模,是因為 LSTM 和動態(tài)系統(tǒng)有類似的特性:對于時刻 t, LSTM 使用當前網(wǎng)絡的狀態(tài) (ht-1,ct-1) 和當前的輸入 xt來計算網(wǎng)絡輸出 ht,同時更新當前網(wǎng)絡的狀態(tài) (ht,ct),h也叫輸出狀態(tài),就是當前時刻 t 的 LSTM 網(wǎng)絡的輸出,ct 稱為 cell state,包含學習來的歷史時刻的狀態(tài)信息。每個時間步 LSTM 都會對 ct進行更新:添加信息或移除信息,主要通過四個門函數(shù)(f,g,i,o)來實現(xiàn),將前面的計算過程示意性的描述一下:

圖片

其中,上面方程中的 Wf,g,i,o, Rf,g,i,o, bf,g,i,o是這些門函數(shù)各自的可學習參數(shù),主要包括針對輸入 x的權重,針對上一時刻輸出狀態(tài)(同時也是當前時刻的輸入)ht-1 的權重,以及偏置,這些可學習參數(shù)本身是無狀態(tài)的,被所有時刻共享。訓練的過程就是優(yōu)化這些學習參數(shù)的過程。

總結一下:當前時刻的輸出 ht不僅依賴于當前的輸入xt,還依賴于當前的狀態(tài) (ht-1,ct-1)。它可以根據(jù)訓練選擇性的記住每一時刻的“重要”信息,并且利用這個信息作為狀態(tài),結合當前輸入 xt 進行輸出狀態(tài) ht預測。

電機溫度預測示例

接下來我們使用數(shù)據(jù)結合 LSTM 模型來搭建永磁同步電機(PMSM)的一個代理模型(Surrogate Modeling),用于電機不同位置的溫度預測。

類似 Demo [鏈接5]

圖片


理解數(shù)據(jù)集

數(shù)據(jù)集來自多片時長不同的數(shù)據(jù)。從數(shù)據(jù)中可以看到 PMSM 不同位置溫度與電氣系統(tǒng)和熱系統(tǒng)對應的工況參數(shù)的相互影響。

同時環(huán)境溫度的變化也會對電機不同位置溫度以及相應需求扭矩所需的電流電壓有影響。

我們使用環(huán)境溫度、冷卻液溫度、電壓、電流作為輸入,輸出為不同位置 PMSM 的溫度。

圖片

數(shù)據(jù)預處理與特征工程

同樣作為一個動態(tài)系統(tǒng),我們通過對初始數(shù)據(jù)再進行不同尺度滑窗實現(xiàn)衍生特征生成,所有特征結合在一起作為 LSTM 的輸入(盡管 LSTM 本身也具有考慮時間依賴關系的特性)。

% create derived features using raw voltages and currents


derivedinputs =computedrivedfeatures(tt_data);


% check the noise in the data


tt_data=[tt_data derivedinputs];


Vnames=tt_data.Properties.VariableNames;


s1=620;s2=2915;s3=4487;s4=8825;


% preprocess exponentially weighted moving average


[t_s1,t_s2,t_s3,t_s4]=preprocmovavg(tt_data,s1,s2,s3,s4,Vnames);


% preprocess exponentially weighted moving variance


[t_v1,t_v2,t_v3,t_v4]=preprocmovvar(tt_data,s1,s2,s3,s4,Vnames);


% attach features to the original table


predictors=[tt_data,t_s1,t_s2,t_s3,t_s4,t_v1,t_v2,t_v3,t_v4,tt_profileid];


responses=[tt(:,9:12) tt_profileid];


VResponsenames=responses.Properties.VariableNames;

準備訓練數(shù)據(jù)和驗證數(shù)據(jù)

holdOuts =[657258]; % define profiles that are withheld from training.


[xtrain,ytrain]= prepareDataTrain(predictors,responses,holdOuts);

我們將使用第 58 條記錄作為驗證集,其中包括 4.64 小時的數(shù)據(jù)。

validationdata =58; 


[xvalidation, yvalidation]= prepareDataValidation(predictors,responses,validationdata);


 numResponses = size(ytrain{1},1);


 featureDimension = size(xtrain{1},1);


numHiddenUnits=125;


圖片

上面的 DAG 網(wǎng)絡可以對許多復雜的系統(tǒng)進行建模。通過上面的結構(左右兩支)幫助我們對依賴于時間歷史的物理行為動態(tài)行為以及含狀態(tài)的行為進行建模。

查看預測結果

圖片

如圖所示,紅色和藍色分別代表了實測數(shù)據(jù)和模型預測結果,右側圖像顯示的是他們的殘差,可以看到大部分誤差在 1% 以內(nèi),預測效果比較理想。模型在瞬態(tài)變化較快和較慢的工況下都能和實測數(shù)據(jù)保持一致,說明模型也保持了一定的保真度。

分享到:
 
反對 0 舉報 0 收藏 0 評論 0
滬ICP備11026917號-25