概述
OPS5的程式包含描述程式數據目標的說明部分及包含規則的產生式部分。執行期間,程式操作的數據存放在工作存儲器中,規則存放在產生式存儲器中。工作存儲器通常在裝入說明和規則後被初始化。說明部分包含可在規則中引用的各種數據目標類型和用戶自定義函式的定義。
OPS5的推理機由匹配規則、選擇規則和執行規則三個算法組成。其中,匹配規則算法和工作存儲器的條件元匹配,選擇規則算法挑選一條主導規則,執行規則算法激活該規則,即順序執行RHS的動作。儘管該推理機是向前連結的,但它也可以執行向後連結求解問題策略。
產生式系統的構成
工作存貯器
OPS5提供了一種單一的綜合資料庫,稱為工作存貯器,它包含了一個不變的符號結構集合。符號結構有兩種類型:a、符號向量;b、與屬性一一值二元組相關聯的對象。其中最常用的是b,b的一般形式是:
<工作存貯器的元素>::=<類名>
<屬性名> <屬性值>
<屬性名> (屬性值>
工作存貯器稱為模式。
產生式形式
OPS5的產生式規則是標準的 :
if 條件 then 行動
的形式,其前件部分一般是模式的邏輯和。後件部分是用於重寫工作存貯器內容的操作或者是某種計算,也可能是調用某個過程。前後件之間用“”相連。
重寫工作存貯器模式的操作主要有以下3種:
①make:將一新的模式加到工作存貯器中;
②remove:刪除工作存貯器中的一個模式;
⑧modify:重寫工作存貯器中的一個模式。
推理機
產生式系統的控制基礎是匹配規則、選擇規則和執行規則三個過程。該控制機構也稱為識別一動作循環,它是OPS5推理機的基礎。
識別一動作循環可以如下描述:
repeat
匹配:執行匹配操作
當下面中的一個情況滿足時退出該循環:
①衝突集為空
②執行到balt命令
③達到循環計數值
④執行到斷點
選擇:執行衝突消解策略
執行:執行選中的規則
end
OPS5程式對待每條規則並沒有什麼先後順序,也不因為匹配而將該規則集分成子集。每次循環時,將所有規則與工作存儲器匹配。選擇規則策略基於各實體的條件元的先後值及LHS的特徵。
匹配
匹配過程規則為每個匹配的元建立一個實體。一實體是一有序對,第一項是規則名,第二項是與條件元匹配的存儲器元序列。每次循環中,可以形成任意多個實體,也可以沒有。衝突集是一個循環中所有這些實體的集合。
現把一個規則的LHS和工作存儲器之間進行匹配的條件總結如下:每個非否定條件元和一工作存儲元匹配;沒有工作存儲器元與否定條件元匹配;每個元變數都代表與其條件元匹配的工作存儲器元;對每個變數在同一規則LHS中的所有出現賦給同一個值。
選擇規則的策略
如果匹配步產生了多於一個規則實體的衝突集,就需要對組成衝突消解的集合執行一系列的檢測,並從中選擇一條規則來激活。每次檢測對衝突集部分排序,那些被認為不重要的實體從衝突集中刪除,直到衝突集裡只有一個實體。OPS5有兩種衝突消解策略,即LEX和MEA,它們僅在從衝突集中選出一實體的檢測序列方面有些微小差別,其中LEX是較簡單的策略。
(1)LEX
LEX的第一步稱為折射。它的意思是所有先前被選中且激活過的實體都從衝突集中刪除。折射規定了相同的實體不能再次激活。
LEX的第二步是根據與實體的條件元相應的工作存儲器元的時間標記,對留在衝突集中的所有實體部分排序。對應於各實體的時間標記按遞減的順序來考慮。
第三步,經過上面兩步後,衝突集中如果有多於一個的實體,則套用特性規則,即根據規則所有條件元的測試總數來對些實體進行部分排序。
最後,如果所有這些嘗試都失敗,則推理機從中任選一個實體。
(2)MEA
MEA與LEX的區別在於它對與規則第一個條件元匹配的工作存儲器元的現行值特別重視,即執行完折射後,就馬上比較這個工作存儲器元的現行值,最大的留下來,其餘的刪除。後面的步驟與LEX相同。