通過這樣的網絡進行的計算按如下方式進行:
當變量被給予一個值時,它會喚醒它的所有關聯約束條件(剛剛喚醒它的約束條件除外),以通知它們它具有了一個值。每個被喚醒的約束條件都會輪詢它的變量,以查看是否有足夠的用來確定變量值的信息。如果有,則約束條件會設置該變量,后者隨后會喚醒它的所有關聯約束條件;依此類推。例如,在從攝氏溫度到華氏溫度的轉換過程中,constant 約束條件立即將變量 k、l 和 m 的值分別設置為 9、5 和 32。變量喚醒乘法器和加法器,二者將確定沒有繼續計算所需的足夠信息。當 c 的值被設置為某個數字 — 例如 100 時,最左側的乘法器被喚醒,并且將 u 設置為 100 * 9 = 900。然后,u 喚醒第二個乘法器,它將 v 設置為 180;v 喚醒加法器,它將 f 設置為 212。
變量的接口是通過下列方法實現的:
• boolean has_value()
分辨是否有值。
• double get_value()
返回該值。
• void set_value(double d, IConstraint theConstraint)
指示 theConstraint 希望將該值設置為 d。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/