傳統的程序性程式是利用數值演算處理資料。依據我們所需求的任務,將許多的指令或陳述作有系統的排列,然後由電腦依序執行。如此,為完成某項工作,而依其邏輯順序所寫成的一連串陳述或指令的集合,就稱為程序性程式[16],就像由FORTRAN與C語言所寫成的分析計算程式。在過去的數十年間,大部份的結構設計方法大多數是以程序性程式發展出來的,如ETABS、SAP90、STDS等等。傳統語言FORTRAN與C皆是所謂的程序性語言(procedural language),又稱結構化語言(structure language),程式中前後執行的次序非常重要。此種語言有其優點亦有其缺點。優點是能做精確的計算與詳細的分析,能讓工程師快速獲得所要的解答,省卻工程師花費時間精力做冗長的計算;但其缺點是複雜的資料傳輸與缺乏良好的溝通介面,除錯(debug)困難,軟體發展成本高。而且在資料處理的缺點方面如下[17]:
1. 傳統語言偏重在提供數字的運算,缺乏符號處理的能力。
2. 傳統程式所處理的是基本的資料(data),或是稍具組織的資訊(information),但是較難管理知識(knowledge)。
3. 傳統程式不具有推理能力,難以說明程式執行的理由或原因。
4. 不正確及不完全的資料不易被傳統程式所接受及處理。規納性推論也非傳統程式所適合的領域。
5. 傳統程式為程序性的語言,不屬於宣告式的語言。許多流程控制需用傳統語言自行設計製作,增加了程式師的負擔。
一般的程序性程式的解題過程如圖2-1所示,資料及處理資料的指令並不緊緊放在一起。設計時通常先定義資料是什麼,然後再設計副程式,以解釋副程式所要用到的資料。使用傳統的語言,只能設計物件的一般性質,所以通常需要更長的副程式解釋所要處理的特殊資料,也就是典型的結構化語言。
2.2 專家系統概論
電腦科技雖然已被大量應用在各個科學領域上,特別是在土木工程上,但是仍然有許多問題必需靠人類的經驗和知識作判斷,而專家系統的發展正好提供電腦在這類問題的可能應用。 所謂知識庫專家系統(knowledge-based expert system),就是一種依人類專家思考推理方式所發展的電腦程式。這使得電腦具有模擬人類專家,利用先前存放於知識庫(knowledge-base)中的一般性知識與經驗性法則加以推論,來做出類似領域專家(domain expert)高品質的解答,且其解答具有一定程度之透明性,適用於解決所謂結構化不佳的問題。 專家系統就是一種具有邏輯推論能力,依據某一特定領域之專家們的知識及經驗所建構而成,當使用者輸入相關的資訊後,即可針對其特定的領域問題,做出合理的解釋、可行的建議、正確的推論以及解決的方法,以供參考使用。專家系統具有下列特色:[18] 1. 能處理現實生活中的複雜問題。 2. 具有專家的能力,且有高度的效能。 3. 只能處理某一特定領域的問題。 4. 有一套合理的推論及解釋規則。 5. 可以提供建議及解決的方法,以便參考決策之用。 一個完整的知識庫專家系統應包含以下六個部分,其相互關係詳見圖2-2所示。 1. 知識庫:是用來儲存領域專家以及其它知識來源所提供的一般性與經驗性知識,而這些知識當中包含了許多的事實(fact)和經驗法則(rule)。 2. 推理機制(inference engine):推理機制包括了譯釋器(interpreter)與排程器(scheduler)。譯釋器的功能在解釋知識庫中的事實,並利用法則去推論新的事實。而排程器則是用於決定可執行法則中的先後次序。 1. 使用者介面(user interface):使用者介面的功能在於提供系統與使用者的雙向溝通,一個良好的使用者介面應該是可以讓使用者在系統的操作過程中,能以最輕鬆、最簡單的操作方式獲得最多與最完備的資訊。 2. 擷取知識子系統:是用來擷取、驗證及維護從領域專家所取得之知識,讓專家系統有發展及編修之功能。 3. 解釋子系統:是用來說明系統內部推論與運作的部分,其功能主要在於對使用者解釋系統推論所根據的事實與法則。 4. 工作暫存區(working memory):這是用以儲存系統推論過程中所產生的資料。 2﹒4 專家系統與傳統程式的差異處在於專家系統利用經驗處理知識而傳統程式利用演算法處理資料。也就是說,專家系統操縱知識,而傳統的程式操縱資料。傳統程式的資料必須是確定的,否則無法導出正確的結論;專家系統除了確定的資料以外,並非確定的資料一樣可以導出答案。因為傳統程式的資料庫是靜態的,是死的,無法創造資料;而專家系統的知識庫是活的,它能推理,根據事實獲得結論。一家致力於工程的商務專家系統公司-Teknowledge把兩者之間的差異如表2-1所示[20]。 所謂協力式設計就是把專家系統的經驗知識及程序性程式的演算知識組合成不同種類的設計動作。各個種類當中,都把設計動作分解成好幾個設計副工作。每一個副工作可能組成一組設計步驟或其他的動作。此合作設計系統可以在這個想像的階段中,把彼此的設計步驟切換。在理想的觀念上,每個副工作應該都可以同時使用經驗法則或數值運算程序。系統更應該可以彈性地依每個不同的設計情況隨時以最佳的知識選擇設計動作。 專家系統已成功地解決了世界上許多實際結構設計的問題,而且某些問題都尚未使用數學運算程式解決過,因為專家系統對於不確定或不完整資料的計劃有其特別的功能,而且專家系統被定義為是一個電腦程式,但是具備了以下特性,也就是和傳統程式不同的地方[20]: 1. 專家意見和技術(expertise):展示專家功能,高水準技巧及充實的內函。 2. 符號的推論(symbolic reasoning):知識表示符號化,陳述符號的知識。 3. 深度(depth):處理困難的問題領域,使用複雜法則。 4. 自我的知識(self-knowledge):檢視本身的推論及解說其操作。 本論文所使用的黑板式專家系統與一般的專家系統不同處在於黑板式專家系統的推論方式並不侷限於前向鍊結(forward chaining)和後向鍊結(backward chaining),而是採用機動性高的機會式推論(opportunistic reasoning);而且知識的表示方法是採用框架式(frame-based)的方法(或稱物件導向Object Oriented),以達到多樣化、智慧型的設計系統。
典型的知識庫專家系統可稱為法則式系統(rule-based expert system)。其知識表示法是將知識表示成if……then的型式,稱為法則,這些法則代表了專家知識的形態與因果關係,其前提就是法則的IF部分,而結論就是法則的then部分。由於專家系統中知識庫與推理機是分開的,所以如何將知識庫中的知識依據所屬的事實利用推理機制加以推論出可能的答案,就成為非常重要的解題策略(solution strategy)。然而,就像傳統軟體一樣,專家系統也有一些限制。對於大量而且複雜的應用,很難以法則去處理的,因為須要大量的法則及繁長的推論。所以本研究便避免使用法則式的專家系統,而採取解題方式較為有彈性的黑板式專家系統。
黑板式系統主要利用「黑板模式」[19]的運作來完成解題。黑板方法的觀念很簡單,整個系統包含了一組稱為知識源(knowledge source,或KS)的獨立模組,每個模組包含系統的特殊領域知識,及一個黑板。黑板乃是所有KS可以取用的共用資料結構,用來存放解題過程中所產生的資料,當系統解題時,不同的知識便共同解決黑板上所產生的問題,直到解題結束。在經過多年的發展後,「黑板」這種解題模式也漸漸在專家系統中嶄露頭角。基本的黑板解題模式可以以圖2-3表示,包括三個主要部分[19]:
1. 知識源:將不同的解題知識分別以不同的知識源(KS)表示。 2. 黑板:黑板可說是一個集中的資料結構,黑板中存放解題相關的資料。 3. 控制器:依據目前黑板上的解題狀態,KS以競爭方式解題,由控制器來決定採用何種解題狀態,表現出機會式的推理方式。近年來,黑板式系統逐漸被採用如:HASP、CRYSALIS…等[19],但卻鮮少見於結構設計上之應用。如能將黑板式架構應用於結構工程,便能以更有彈性的解題方式提供我們設計、分析土木領域的結構問題。
專家系統與傳統程式的差異處在於專家系統利用經驗處理知識而傳統程式利用演算法處理資料。也就是說,專家系統操縱知識,而傳統的程式操縱資料。傳統程式的資料必須是確定的,否則無法導出正確的結論;專家系統除了確定的資料以外,並非確定的資料一樣可以導出答案。因為傳統程式的資料庫是靜態的,是死的,無法創造資料;而專家系統的知識庫是活的,它能推理,根據事實獲得結論。一家致力於工程的商務專家系統公司-Teknowledge把兩者之間的差異如表2-1所示[20]。 所謂協力式設計就是把專家系統的經驗知識及程序性程式的演算知識組合成不同種類的設計動作。各個種類當中,都把設計動作分解成好幾個設計副工作。每一個副工作可能組成一組設計步驟或其他的動作。此合作設計系統可以在這個想像的階段中,把彼此的設計步驟切換。在理想的觀念上,每個副工作應該都可以同時使用經驗法則或數值運算程序。系統更應該可以彈性地依每個不同的設計情況隨時以最佳的知識選擇設計動作。 專家系統已成功地解決了世界上許多實際結構設計的問題,而且某些問題都尚未使用數學運算程式解決過,因為專家系統對於不確定或不完整資料的計劃有其特別的功能,而且專家系統被定義為是一個電腦程式,但是具備了以下特性,也就是和傳統程式不同的地方[20]: 1. 專家意見和技術(expertise):展示專家功能,高水準技巧及充實的內函。 2. 符號的推論(symbolic reasoning):知識表示符號化,陳述符號的知識。 3. 深度(depth):處理困難的問題領域,使用複雜法則。 4. 自我的知識(self-knowledge):檢視本身的推論及解說其操作。 本論文所使用的黑板式專家系統與一般的專家系統不同處在於黑板式專家系統的推論方式並不侷限於前向鍊結(forward chaining)和後向鍊結(backward chaining),而是採用機動性高的機會式推論(opportunistic reasoning);而且知識的表示方法是採用框架式(frame-based)的方法(或稱物件導向Object Oriented),以達到多樣化、智慧型的設計系統。