智慧型控制 Intelligent Control

NN2Simulink:把網路轉成 Simulink 模型

老師錄製的操作示範:把上一頁訓練好的 AND 感知器(NnetAnd.mat)轉成 Simulink 模型,結果為 NetAndmdl.mdl。

▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 6 節 NetAndmdl.mdl 的方塊),可以直接在瀏覽器執行、修改參數。⬇ 下載 NN.ipynb

產生的模型 Generated Model

(以下讀取附檔整理,為補充)Neural Network Toolbox 的 gensim 函數可以把網路物件產生成 Simulink 方塊。NetAndmdl.mdl 的方塊都引用工具箱的 neural 方塊庫,結構一層層展開如下:

層次方塊內容
最上層p{1}(常數)→ Neural Network → y{1}(Scope)輸入是常數 [0.95; 0.23]
Neural Networkp{1} → Layer 1 → y{1}只有一層
Layer 1Delays 1、IW{1,1}、b{1}、netsum、hardlim輸入權值方塊 IW{1,1} 內是常數 [2; 1] 與 dotprod 方塊;b{1} 是常數 −3;netsum 把兩者相加後送進 hardlim

模型的輸入 \([0.95;\ 0.23]\) 的淨輸入為 \(2 \times 0.95 + 0.23 - 3 = -0.87 < 0\),所以 Scope 上的輸出是 0:點 (0.95, 0.23) 雖然很接近 (1, 0),但它不是 (1, 1),AND 的結果為 0(見上一頁圖中的橘色叉號)。

模型的方塊對應到網路的運算:dotprod 方塊算 \(\mathbf{Wp}\),netsum 方塊再加上 b,hardlim 方塊輸出 \(a\)。這也說明了建立感知器頁的編註:加偏權值的是 netsum,不是 dotprod。

網路轉成 Simulink 方塊後,就能和受控體模型接在一起模擬,例如把訓練好的網路當成控制器或系統模型。倒傳遞網路的附檔 NetBpmdl.mdl 也是同樣的做法。