//Logo Image
作者:林耀謙、許銘修(2006-10-24);推薦:徐業良(2009-10-29)

SNA類神經網路序列近似法軟體使用說明

SNA(Sequential Neural-Network Approximation)類神經網路序列近似法,主要應用於具有以下特徵之工程最佳化設計問題:(1)離散設計變數、(2)隱式限制條件,以及(3)測試結果僅以“通過-失敗”表示之工程設計問題。SAN方法原理之詳細說明可參見相關期刊論文[1-3],本文中則以一三桿件衍架結構最佳化問題為範例,說明SNA程式之操作方法。

1.     範例說明

本文中將以一三桿件衍架結構最佳化問題為範例,說明SNA程式之操作方法。圖1中為一靜不定三桿件衍架結構最佳化問題,桿件123的截面積分別為,在三桿件的接點處受一大小為P的橫向作用力,及受一大小為8P方向向下的縱向作用力;此靜不定衍架材料的彈性模數及比重分別為Er。這是一個對稱結構,橫向作用力P的方向可以向左或向右,因此=。這個問題的目標是求取最佳的三桿件截面積值,使得此結構的重量為最輕,限制條件則為三桿件的最大應力值不可超過容許應力

1. 三桿件衍架結構

由基本的結構力學,可以推導出這個最佳化問題的數學模型:

        min. 

        s.t.   

               

                                                                                                       (1)

其中限制條件為桿件13的最大應力值之限制條件,為桿件2的最大應力值之限制條件。為了討論上的簡便、明確,這裡先假設下列各個參數的數值:,同時,代入前式化簡,可以得到下式:

        min. 

        s.t.   

                                                                                            (2)

2.     SNA程式架構說明

2所示為SNA之程式結構圖,SNA程式主要是由初始值輸入,以及迭代搜尋兩大部分所組成,在開啟SNA程式後,可以選擇三種輸入方式:(1)載入先前檔案模式(Previous Search)(2)視窗輸入介面模式(New Search),以及(3)輸入檔模式(Import File)。完成初始值輸入後,即進入迭代搜尋階段,於此階段中,程式將進行類神經網路訓練,並搜尋最佳點,最後產出一新的訓練點。若此新的訓練點滿足終止條件,則程式終止,若不能滿足終止條件,則程式回到類神經網路訓練步驟。

2. SNA程式結構圖

3所示為SNA程式主視窗之功能選單,主視窗之功能選單分為三個功能選項:(1)檔案項目(Preferences)(2)參數設定項目(Parameters),以及(3)使用說明項目(Help)

3. 主視窗之功能項目單

於檔案項目(Preferences)功能選項中,可以選擇以三種方式輸入設計初始值,包括:(1) Interaction: 藉由輸入視窗輸入設計之初始值、(2) Log file: 藉由輸入檔輸入設計初始值,以及(3) Restart Design project: 讀取先前檔案。於參數設定項目(Parameters)功能選項中,可設定包括:(1) Objective: 目標函數之過程參數、(2) Constraint: 限制條件之過程參數、(3) Threshold: 類神經訓練所需之門檻值參數,以及(4) Project Name: 設定檔案名稱。若使用者未設定過程參數,參數將會使用原建議值。在使用說明項目(Help)功能選項中,包括兩個說明:(1)SNA Help: SNA的程式使用說明,以及(2) About SNA: 關於SNA。表1中列示了SNA程式主選單功能表中,各選項之說明。

1. SNA主視窗之功能選單

Preferences

Interaction

藉由輸入視窗輸入設計之初始值

Log File

藉由輸入檔輸入設計初始值

Restart Design Project

讀取先前檔案

EXIT

離開、關閉視窗

Parameters

Objective

設定目標函數之過程參數

Constraint

設定限制條件之過程參數

Threshold

設定類神經訓練所需之門檻值參數

Project Name

設定檔名

Help

SNA Help

SNA的程式使用說明

About SNA

關於SNA

3.     以輸入界面模式(New Search)執行SNA程式

首先在Matlab應用程式之Command視窗中,輸入SNA程式名稱:“SNA_V3”,即會開啟SNA程式之主視窗,如圖4所示。使用者必須原輸入格中填入檔案名稱,於本文所敘述之三桿件衍架結構最佳化問題為例,輸入檔名“3truss_inputfile”,如圖5所示,然後按下“Store”按鈕,完成檔名輸入。

4. 主視窗(開始視窗畫面)

5. 輸入檔名“3truss_inputfile”

3.1 輸入所需設計變數資料與訓練點資料

點選SNA主視窗之選單PreferencesèInteraction之選項,如圖6所示。主視窗進到輸入介面模式,如圖7。主視窗裡Procedure List有五個步驟按鈕,這五個步驟按鈕有順序性,須從第一個步驟按鈕開始,依序執行到第五步驟,然若有需要修改,可回到先前已執行之步驟進行修正。此五個步驟按鈕操作流程說明如下:

6. Preferences → Interaction 視窗輸入介面模式

7. 視窗輸入介面模式之Procedure List

(1)   Number of Variables

於圖7中按下“Number of variables”之按鈕,將會在主視窗下方出現輸入設計變數數量之視窗,如圖8所示。針對三桿件衍架結構最佳化問題,有2個設計變數,因之在空格中填入數字“2”,再按下“Store”按鈕,即完成第一步驟。

當此步驟完成時,則視窗輸入介面模式之Procedure List後,會出現“Ready”標示,如圖9所示,表示此步驟已完成。

8. 輸入設計變數數量

9. 完成輸入設計變數數量

(2)   Number of discrete values of each variable

接著按下“Number of discrete values of each variable”按鈕進入第二步驟,程式會出現設定每一個變數的離散值個數之視窗。在三桿件衍架結構最佳化問題中,變數x1x2的離散值個數都為17,分別在變數x1x2兩個空格裡填入數字“17”,如圖10所示,接著按下“Store”按鈕,於按鈕後方出現“Ready”標示,表示完成第二步驟,如圖11所示。

10. 輸入設計變數之離散值個數

11. 完成輸入設計變數之離散值個數

(3)   Input discrete vales

接著按下“Input discrete values”按鈕進入第三步驟,程式會出現離散值輸入視窗,在三桿件衍架結構最佳化問題中,變數x1x217個離散值都分別為:1, 4, 9, 16, …, 289,使用者分別這17個變數的離散值填入變數x1x234個空格裡,如圖12所示,接著按下“Store”按鈕,於按鈕後方出現“Ready”標示,表示完成第三步驟,如圖13所示

12. 輸入設計變數之離散值

13. 完成輸入設計變數之離散值

(4)   Number of initial training points

接著按下“Number of initial training points”按鈕進入第四步驟,程式會出現輸入初始訓練點的數量視窗,若使用者針對三桿件衍架結構最佳化問題想要有9個初始的訓練點,則於空格中填入數字“9”,如圖14所示,然後按下“Store”按鈕於按鈕後方出現“Ready”標示,表示完成第四步驟,如圖15所示。

14. 輸入Training Points個數

15. 完成輸入Training Points個數

(5)   Setup initial training point

接著按下“Setup initial training point”按鈕進入第五步驟,程式會出現填入初始點之視窗,如圖16所示,分別填入9個初始訓練點的數值。圖16所示之訓練點輸入介面,為三桿件衍架結構最佳化問題之輸入介面,第一欄、第二欄分別填入設計變數x1x2值,第三欄填入相對應之目標函數值,第四欄則填入是否為一可行解,若為可行解則以“1”表示,若該設計點為不可行解,則以“0”表示。在按下“Store”按鈕於按鈕後方出現“Ready”標示,表示完成第五步驟,主視窗會跳出“Searching”按鈕,如圖17所示,按下“Searching”按鈕即開始進入迭代搜尋階段。

16. 輸入初始訓練點視窗

17. 完成設計變數資料與訓練點資料輸入

3.2 迭代搜尋

迭代搜尋階段萬奏敘述如下:

(1)    類神經網路訓練與最佳點搜尋

迭代搜尋階段之第一步驟,為進行類神經網路訓練,如圖18所示為類神經網路訓練之歷程,於訓練過程中,若有需要可透過“Stop training”中斷訓練。經過類神經網路訓練後,程式開始搜尋新的最佳點,並將結果顯示於如圖19之視窗上。於三桿件衍架結構最佳化問題中,經過訓練與搜尋後,或得一搜尋結果(9, 256),並顯示於圖19上。

18. 類神經網路訓練過程之視窗

19. 輸入新的訓練點與起始點

(2)    更新類神經網路訓練結果

經過確定新訓練點(New training point)的目標值大小與限制條件是否可行後,將結果填入圖19之視窗中,以更新類神經網路。若新訓練點為可行解(“1”),且目標函數值小於前次起始點(Previous starting point),則新的起始點須填入新訓練點的值。反之若新訓練點為一不可行解(“0”),亦或是目標函數值大於前次起始點,則新的起始點須再填入前次起始點的值。

以三桿件衍架結構最佳化問題為例,圖20之新訓練點(9, 256)為一不可行解(“0”),則新的起始點必須再次填入上次起始點的值(81, 289)。填入完成後按下“Search”按鈕,加入新訓練點再次訓練類神經網路模擬,以獲得更新之結果。

20. 輸入新的訓練點與起始點

經過前次(圖20)更新訓練,SNA再次搜尋出最佳點(49,256)。此新訓練點(49,256)為一可行解(“1”),且目標函數值為3548,小於前次起始點目標值4812。因此新的起始點必須填入新訓練點的值(49,256)再進行搜尋,如圖21所示。以此程序往復執行迭代過程,直到新設計點連續重複出現多次,類神經網路無法再更新為止。以三桿件衍架結構最佳化問題為例,如圖22中新的訓練點(25,196)為前次起始點(25,196),此時就可以停止SNA程式,此時(25,196)即為設計之最佳點。

21. 輸入新的訓練點與起始點

22. 新的訓練點為前次起始點即可停止SNA程式

(3)    檢視類神經網路訓練歷程

於圖22之輸入新的訓練點與搜尋點視窗中,SNA程式提供了一“History”按鈕,按下此按鈕會出現“Training point”“Iteration history”兩個視窗,可檢視訓練與迭代歷程,如圖23所示。“Training point”視窗記錄了所有訓練點之資料,“Iteration history”視窗則記錄了為迭代歷程。

23. “Training point”“Iteration history”視窗

4.     以載入先前檔案模式及輸入檔模式執行SNA程式

4.1 載入先前檔案模式(Previous Search)

SNA迭代過程中,使用者可以按下如圖22中之“SAVE/EXIT”按鈕,以停止SNA程式並儲存當時之迭代資料於“file_name.mat”(eg.,“3truss_inputfile.mat”)。若於後續設計所需,使用者可以利用PreferencesèRestart Design Project選項,重新開始迭代搜尋。如圖24,按下“Searching”之按鈕,自動載入“3truss_inputfile.mat”檔案,即可繼續先前SNA程式。

24. 載入3truss_input檔案之主視窗畫面

4.2 輸入檔模式(Import File)

使用者可以將“視窗輸入界面模式(New Search)”輸入過程之設計變數資料,包括:設計變數個數、每個離散變數個數、離散變數值、起始點個數,以及起始點資料等,直接寫成輸入檔,再以“輸入檔模式(Import File)”將資料匯入SNA程式中。以此方法進行SNA程式,不但較為迅速,並且比較不會填錯數據情形,而後續若進行訓練點修正時,亦較為方便。

使用者可以使用Preferencesè“Log File”選項,如圖25,按下“Searching”之按鈕,會自動載入“3truss_inputfile.inp”檔案。

25. 載入輸入檔3truss_input.inp之主視窗畫面

三桿件衍架結構設計的SNA輸入檔,如表2所示。第一個字為“#”字號,此行為說明部份,程式會自動忽略此行。使用者要建立SNA輸入檔可以直接複製表2內容到文字編輯器,接著將這範例的數據進行修改,最後儲存副檔名必須“.inp”

2. 輸入檔“3truss_inputfile.inp”

#---- Setup process parameter -& Objective function :

Number of neurons in the objective_hidden_layer : [ 54 ]

net.trainparam.show : [ 50 ]

net.trainparam.epochs : [ 200 ]

net.trainparam.goal : [ 0.0003 ]

net.trainparam.min_goal : [ 0.00001 ]

 

#---- Setup process parameter -& Constraints :

Number of neurons in the constrain_hidden_layer : [ 36 ]

net.trainparam2.show : [ 50 ]

net.trainparam2.epochs : [ 200 ]

net.trainparam2.goal : [ 0.01 ]

net.trainparam2.min_goal : [ 0.001 ]

Threshold value : [ 0.4 ]

 

#---- Discrete of variables :

Variable x1 : [ 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 ]

Variable x2 : [ 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 ]

 

#---- Setup initial training point, objective value, Target index(1/0,feasible or infeasible) ----- :

initial 1 : [ 1 1 39 0 ]

initial 2 : [ 81 1 2551 0 ]

initial 3 : [ 289 1 9082 0 ]

initial 4 : [ 1 81 667 0 ]

initial 5 : [ 81 81 3179 0 ]

initial 6 : [ 289 81 9710 0 ]

initial 7 : [ 1 289  2300 0 ]

initial 8 : [ 81 289 4812 1 ]

initial 9 : [ 289 289 11343 1 ]

SNA程式之所能處理之設計變數個數,現階段以10個變數為上限。採用輸入檔模式時,需特別注意輸入檔之撰寫格式,例如輸入Threshold value: [ 0.4 ]之正確格式為:“Threshold value” + “空格” + “冒號” + “空格” + “[” + “空格” + “數字” + “空格” + “]”。修改輸入檔時必須依據原有格式修改,尤其空格不可省略。

參考文獻

[1]   Hsu, Y. L., Dong, Y. H., Hsu, M. S., “A sequential approximation method using neural networks for nonlinear discrete variable optimization with implicit constraints,” JSME International Journal, Series C, Vol. 44, No. 1, pp. 103-112, April 2001.

[2]   Hsu, Y. L., Wang, S. G., and Yu, C. C., “A sequential approximation method using neural networks for engineering design optimization problems,” Engineering Optimization, Vol. 35, No. 5, pp. 489-511, October 2003.

[3]   Hsu, Y. L., Yu, C. C., Wang, Y. T., Hsu, M. H., “Uniform luminance design of the direct-type backlight unit of liquid crystal displays,” Journal of the Chinese Institute of Engineers, Vol. 32, No. 5, pp. 717-725, July 2009.