第三章 可適性計算平台建置
3.5 方程式集合分析模組建置
為了檢驗分析應用模組中,各應用模組的方程式集合所定義之變數 與方程式關係是否完整(well-defined)、及定義方程式集合之求解順序 以及同時求解多個應用模組時,橫跨應用模組間之變數傳遞關係,本 研究建置方程式集合分析模組進行分析。分析結果將儲存於核心計算 模組之「方程式計算順序設定與儲存容器」中。以下將依序說明分析 單一應用模組之方程式集合之分析概念、分析方法以及多應用模組之 方程式集合分析方法。
48
3.5.1 單應用模組方程式集合分析
3.5.1-1 方程式與變數分析概念說明
方程式定義了其應變數與自變數之關係,本研究以此為基礎,分析 方程式集合。在各應用模組內所建置之方程式集合乃多條具有變數相 依關係之方程式,因此分析方程式間之自變數與應變數關係即可得知 此方程式集合之方程式與變數定義是否完整以及方程式之求解順序,
底下以簡例進一步說明。
假設有多條方程式彼此之間存在變數相依關係,方程式定義如式 (3-6)~(3-10)所示,(3-6)式為守恆方程式,如質量守恆、動量守恆或能 量守恆方程式,(3-7)~(3-10)式為輔助方程式。由(3-6)式可知,若要求 解守恆方程式則必須先求解變數V1,V2,V3三個自變數,而要求解 此三個自變數則須找出以此三個自變數為應變數之方程式,分別為式 (3-7)、(3-8)及(3-9),以此類推,則可整理出此五條方程式之變數相依 關係,如圖3.11 所示。,因本研究使用最佳化方法求解方程式集合,
因此在求解時須給定待解變數一初始猜值,若令V4為待解變數,則 V4即為已知,詳細求解說明請見 3.4.1 節。接著可由方程式 fe求得變 數V5,以及V2;求得 V5後,透過方程式fb即可求得變數V1,而求 得V2後即可透過方程式 fd求得變數V3,由此可知此五條方程式皆為
49
可解,而依方程式間之變數相依關係可將方程式整理出三組關係,分 別為(fe ->fb ->fa),(fc ->fa),(fc ->fd ->fa),方程式之求解順序為(fe ->fc
->fb ->fd ->fa ),其中,fe或 fc皆可為最先求解之方程式,因為fe與 fc
皆位於三組變數相依關係中的第一順位且其自變數即為待解變數且 不為其他方程式之應變數,故兩者位於相同位階,兩者皆可為第一優 先求解之方程式。
fa(V1,V2,V3)=0 (3-6)
V1=fb(V5) (3-7)
V2=fc(V4) (3-8)
V3=fd(V2) (3-9)
V5=fe(V4) (3-10)
圖3.11 方程式相依關係圖
50
3.5.1-2 單應用模組方程式集合分析說明
上述簡例只有五條方程式及五個變數,因此可容易的分析出方 程式與變數之關係是否定義良好及方程式的求解順序。然當一問題之 運動機制複雜時,則需以較多之方程式進行描述,若欲直接由方程式 間之變數關係進行分析,則執行上會有其複雜度,因此本研究建立一
「應用模組方程式集合分析演算法」,輔助分析方程式集合。此一演 算法包含二個部份,第一個部份為建置方程式與變數關係矩陣,第二 個部份為應用樹狀搜尋法分析方程式間之求解順序,以下將分別進行 說明。
(1) 建置方程式與變數關係矩陣
為了有系統的整理變數與方程式之關係,本研究以矩陣的方式來描 述方程式與變數間之關係,此矩陣之列為變數,行為方程式。假設七 條方程式如式(3-11)~(3-17)所示,若將方程式與變數之關係整理成矩 陣,可得矩陣如表 3.2 所示。矩陣中各個變數皆有其對應數值,其中 0 代表方程式未包括此變數, 1 代表此變數為方程式之自變數, 2 代 表方程式之應變數,若以第二行為例,第二行代表方程式fb,其自變 數為V2與V6,應變數為V3。在此方程式集合中,方程式fa為守恆方 程式,而令變數V0為待解變數(或稱待解變數)。
error= Fa (V1, V3, V4,V5) (3-11)
51
(2)應用樹狀搜尋法(tree search)於方程式集合分析
將前一小節之方程式集合建立方程式變數關係矩陣後,可將此
52
尋方式,可在分析方程式集合上得到良好的效果,以下將說明以前述 簡例為例,如何以樹狀搜尋法搜尋方程式之求解順序。首先,選擇守 恆方程式所在行,以該行之應變數座標做為起點,亦即為搜尋樹之根 節點(root node)。表 3.2 之守恆方程式所在行位為第 0 行,因本研究 以最佳化方法求解方程式集合,其目標函數為使守恆方程式之誤差最 小,故需在守恆方程式上增加上一誤差項,且該誤差項為應變數,因 此該誤差項所在座標作即為根節點。接著搜尋第0 行之自變數座標,
亦即該行位上值為1 之座標,分別為(1,0),(3,0),(4,0),(5,0)四個節 點。當同時搜尋到多個自變數或應變數時,回溯其上一個節點,此同 時銜接多個自變數或應變數之節點本研究稱為「分枝節點(branch node)」。搜尋到四個自變數後,接著再搜尋位於此四個自變數所在列 之應變數,並將之紀錄下來,搜尋應變數之原因為若此自變數為可解,
則此自變數至少必為方程式集合中某一方程式之應變數。因為本研究 採用樹狀搜尋中先深後廣的搜尋方式,因此會先搜尋完一條「分枝」
(branch)後,再搜尋下一條分枝,因此在搜尋過程之說明上以搜尋節 點(1,0)為例繼續說明。點(1,0)其所在列為第 1 列,而其同一列之應變 數座標為(1,4),亦即變數 V1為方程式fa之自變數,亦為方程式 fe之 應變數。接著搜尋位於此應變數所在行之自變數,並記錄其座標位置,
搜尋此自變數之原因為若要求解此應變數則必須先求得該自變數,則
53
此方程式才為可解,該自變數座標為(0,4)。由於自變數 V0為待解變 數,該自變數視為可解,因此可以確定變數V1為可解,而(0,4)即為 終端節點(terminal node)。整理變數 V1之應變數與自變數求解順序,
以座標表示可得((1,0) ->(1,4) ->(0,4)),此即為一完整的「分枝」,本 研究稱此關係為變數V1之「求解路徑」。由以上邏輯類推,可得知如 何求得變數V3、變數V4及變數V5,依上述變數求解過程整理為樹狀 圖,如圖 3.12 所示 。由於此搜尋樹以守恆方程式為起點往外搜尋,
因此實際上的求解順序與解路徑相反,即必須由此搜尋樹的終端往根 部的方向計算。另外,當一個方程式之應變數為可解,則此方程式必 為可解,因此由解路徑末端往回尋找應變數所在位置,記錄應變數所 在行,亦即記錄該應變數所在方程式,如此則可找出根部(root)底下 四個自變數相關方程式求解順序。例如變數V3之求解路徑上,因為 在應變數所在位置 (3,1) 處出現分叉(如圖 3.12 所示),代表該應變數 需在兩個自變數皆為可解時,該應變數才為可解,因此首先求解之方 程式為位於第5 行之方程式 ff,以及位於第6 行之方程式 fg,接著才 能求解位於第1 行之方程式 fb。由於本研究採用先深後廣的搜尋法,
因此在分歧節點(3,1)時,會先往下搜尋(2,1)到(0,5),接著回到(3,1) 再 往下搜尋(6,1)到 (6,6)。將守恆方程式所有自變數之求解路徑整理如 下:
54
V1: fe
V3: {ff, fg} -> fb V4: fd
V5: fc
得到守恆方程式各自變數之解路徑後即可整理出此簡例之方程式集 合求解順序:
第一階段: fe, ff, fg,fd,fc
第二階段: fb
第三階段: 守恆方程式
圖3.12 應用樹狀搜尋法於方程式解路徑分析示意圖
前述簡例僅用於概念性說明本研究如何應用樹狀搜尋法分析方程 式集合之方程式求解順序關係,以下將以圖3.13 說明本研究樹狀搜
55
尋法之分析實作邏輯。
首先以守恆方程式所在行之應變數為起點(root),接著於步驟(1) 搜尋該行之自變數,若搜尋到多個自變數時,則記錄此多個自變數座 標於「變數分歧位置儲存容器」,接著於步驟(2)時,若於步驟(1)中搜 尋到多個自變數,則先取出位於變數分歧位置儲存容器中排列於最後 之自變數,並記錄其座標於「解路徑儲存容器」,繼續往下搜尋;若 只有一個自變數,則直接記錄該自變數座標於解路徑儲存容器中並往 下搜尋。步驟三則為分析此解路徑是否已經到達終端節點(Terminal node),判斷依據分別為:
(a)解路徑末端之變數為自變數,且該自變數為待解變數。
(b)解路徑末端之變數為應變數且該應變數所在行只有應變數。
(c)解路徑末端之變數為自變數,且該自變數不為待解變數,其所在 列亦無應變數。
若符合狀況(a),則因為待解變數在求解過程中視為已知,因此整 個解路徑為可解;若符合狀況(b),則因為該行只有一個應變數,其 意義為該方程式之應變數等於常數,故該解路徑為可解;若為狀況(c),
則因為該自變數不為待解變數,且不為其他方程式之應變數,因此該 自變數在方程式集合中無法求解,故此方程式集合定義不完整,需將 此自變數輸出,讓使用者再重新檢視方程式集合。
56
由上述判斷依據可知,在步驟(a)與(c)中均會檢視自變數是否為 待解變數,若是,則代表此解路徑可解並接步驟(7),步驟(7)為刪除 位於變數分歧位置儲存容器中,排列順序最後之變數座標,因為目前 所搜尋之解路徑乃以分歧位置儲存容器中排列順序最後之分枝節點 座標作為往下搜尋之 “起點”,當完成解路徑搜尋後,代表已找到該 分歧位置之解路徑,因此即可將該 “起點”刪除,繼續往下一個分枝 (解路徑)搜尋。若以圖 3.12 為例,座標位置(3,1)即為分歧節點,而 (3,1)底下之(2,1)與(6,1)即為分歧位置,當搜尋完(6,1)之分枝(解 路徑)後,即將(6,1)由分歧位置儲存容器中刪除,接著搜尋(2,1)之 解路徑。步驟(8)為判斷分歧位置儲存容器是否已空,若該容器中已 無任何變數,則代表已搜尋完畢,完成所有解路徑搜尋。若分歧位置 儲存容器未空,則接步驟(9),由分枝節點坐標所對應到變數方程式 矩陣之値是自變數或應變數來判斷接步驟(1)或(4),若為自變數則接 步驟(1),若為應變數則接步驟(4)。回到步驟(3),若此時解路徑未到 達終端,則接步驟(4),搜尋該自變數所在列之應變數,若搜尋到多 個應變數時,則將此多個應變數之座標儲存於分歧位置儲存容器。於 步驟(5)時,若於步驟(4)中搜尋到多個應變數,則先取出位於變數分 歧位置儲存容器中排列於最後之應變數,並記錄其座標於「解路徑儲 存容器」,繼續往下搜尋;另外當一自變數所在列同時有多個應變數