支持計算的基于約束的配置的制作方法
【專利說明】支持計算的基于約束的配置
[0001]背景
[0002]對于配置器(configurator)或配置系統,當前存在許多不同用途。例如,產品配置系統允許用戶配置用戶正購買的產品。作為一個具體示例,如果用戶正在購買計算機,該用戶可上線并使用產品配置器來按照該用戶恰好希望的方式來配置該計算機,以使得該用戶的個人配置的計算機被發貨。
[0003]—般而言,存在兩種類型的可以使用的配置系統。第一種是基于規則的配置系統。在這種系統中,利用一組規則來實現配置。基于用戶輸入,規則的一部分被匹配,且規則執行。然而,已經發現基于規則的配置系統在許多領域中是有缺點的。例如,基于規則的系統嘗試具有覆蓋每個具體用戶輸入的規則。可能非常難以創作綜合性的規則集合,且這種系統是非常脆弱的。如果一規則未被匹配,則基于規則的系統可能遇到問題。從而,通常需要大的規則集。
[0004]一個示例可能有助于解說基于規則的配置系統和基于約束的系統之間的差異。在大多數情況下,規則將按照If-Then-Else (如果-那么-否則)的形式來表達。例如,假定想要確保兩個顏色變量具有相同顏色。在基于規則的配置系統中,這一般可被建模如下:
[0005]If (ColorDoor ! = Blank)(如果(顏色門!=空))
[0006]Then (則)
[0007]ColorFrame = ColorDoor (顏色框=顏色門)
[0008]If (ColorFrame ! = Blank)(如果(顏色框!=空))
[0009]Then (則)
[0010]ColorDoor = ColorFrame (顏色門=顏色框)
[0011]由于約束編程的聲明性質,所述相同可用一個約束來實現
[0012]ColorDoor = ColorFrame (顏色門=顏色框)
[0013]因此,存在從基于規則的配置系統朝向基于約束的配置系統的一次移動離開。
[0014]基于約束的配置系統利用約束滿足問題求解器或實現配置器中的組合式約束的另一種類型的約束求解器。使用計算機配置系統的以上示例,如果用戶嘗試配置計算機,它可能是:計算機制造商不提供同時具有光學驅動器和額外的硬盤驅動器的計算機。在該情況下,配置器或配置系統實現不允許用戶將這兩種選項均選擇的約束。在另一示例中,如果用戶正嘗試訂購某種型號的電視,則該型號可能僅以特定尺寸制造。因此,實現了僅允許用戶選擇具有可用尺寸之一的給定型號的電視的約束。然而,許多基于約束的配置系統不支持使用十進制值表達的屬性。類似地,許多基于約束的配置系統不執行用十進制或浮點表達式的數值計算。
[0015]—些基于約束的配置系統不執行數值計算。然而,為了這樣做,它們需要分開的用戶輸入。例如,如果基于約束的配置系統正在執行包括值A乘以值B的計算,需要該用戶將A和B兩個值均輸入并且隨后致動分開的用戶輸入機制以便使計算結果被顯示。
[0016]提供以上討論僅用作一般的背景信息,并不旨在幫助確定所要求保護的主題的范圍。
[0017]概述
[0018]基于約束的配置器接收用數字值表達的配置屬性。使用該數字值執行計算且基于該計算的結果來對約束求值。基于被求值的約束來自動顯示輸出。
[0019]提供該概述以便以簡化形式介紹概念的選集,所述概念在以下詳細描述中被進一步描述。該概述不旨在標識所要求保護的主題的關鍵特征或基本特征,也不旨在被用來幫助確定所要求保護的主題的范圍。所要求保護的主題不限于解決在背景中提及的任何或所有缺點的實現。
[0020]附圖簡述
[0021]圖1是基于約束的配置系統的一個實施例的框圖。
[0022]圖2是示出圖1所示的系統的總體操作的一個實施例的流程圖。
[0023]圖3A-3J是示例性用戶界面顯示。
[0024]圖4-6示出基于約束的配置系統的不同實現。
[0025]圖7是其中基于約束的配置系統可被部署的各種架構的框圖。
[0026]圖8-12不出了多個不同移動設備。
[0027]圖13是一個說明性計算環境的框圖。
[0028]詳細描述
[0029]圖1是一個說明性的基于約束的配置系統100的框圖。系統100被示為生成具有供用戶106使用的用戶輸入機制104的用戶界面顯示102。在圖1中示出的實施例中,系統100包括配置器組件108、約束滿足問題(CSP)求解器組件110以及求值引擎112。CSP求解器組件110被示出為訪問一組約束111。求值引擎112說明性地耦合到可調用庫組件114和數學函數求值器組件116。系統100還說明性地包括處理器118和數據存儲120。圖1還示出了,在一個實施例中,系統100包括用戶界面組件122。
[0030]配置器組件108使用用戶界面組件122來生成用戶界面顯示102。用戶界面顯示102具有允許用戶106配置要被配置的項的用戶輸入機制104。在關于圖1討論的實施例中,基于約束的配置系統100將被部署為允許用戶106配置產品的產品配置系統。當然,此環境僅是作為示例來描述的,且也可使用各種其他環境。以下描述這些的示例。
[0031]處理器118說明性地是具有相關聯的存儲器和時序電路(未分開示出)的計算機處理器。其說明性地為系統100的功能部件,并且由系統100中的各種組件和引擎激活,并且促進所述各種組件和引擎的功能性。
[0032]數據存儲120解說性地存儲可由處理器118用于促進系統100中的組件和引擎的功能性的數據和其他指令。當然,數據存儲120也可存儲其他數據。還應當注意,盡管存儲120被示出為作為系統100的一部分的單個數據存儲,然而該存儲也可以是多個不同數據存儲。此外,該數據存儲可以位于系統100本地或在系統100遠程(并能由系統100訪問),或一些數據存儲可位于本地而一些數據存儲可位于遠程。
[0033]還要注意,在系統100中已經示出了各種組件和引擎。然而,那些組件和引擎可被組合為執行該功能性的更少的組件或引擎,或者它們可以被分為更多組件和引擎,這些組件和引擎中的每一個執行該功能性的一子集。本文構想了所有這些體系結構。
[0034]在詳細描述系統100的操作之前,將給出概覽以增強理解。用戶106使用顯示器102上的用戶輸入機制104來提供用戶輸入以配置產品。用戶輸入機制104可包括各種用戶輸入機制中的任何機制,諸如按鈕、鏈接、下拉菜單、復選框、網格、或其他用戶可致動的輸入機制。它們還可以按各種不同方式來致動。例如,在用戶界面顯示102被顯示在觸敏顯示屏上的情況下,用戶106可使用他或她的手指、指示筆或另一設備來致動用戶輸入機制104。類似地,用戶輸入機制104可以是在顯示設備上顯示的軟鍵盤、硬件鍵盤、指點和點擊設備,諸如鼠標或軌跡球,且其中基于約束的配置系統100被提供有語音識別組件,用戶106可使用話音命令來激活用戶輸入機制104。而且,用戶輸入機制104可使用拇指墊(thumb pad)、鍵盤、或各種其他項來致動。
[0035]當用戶106已提供了用戶輸入時,配置器108使用約束滿足問題(CSP)求解器組件110來求解用于配置產品的組合式約束。盡管本討論通過描述具有CSP求解器的系統來進行,然而可使用任何約束求解器。例如,可使用滿足性求解器(SAT求解器)或另一約束求解器。CSP求解器只是出于示例的目的而描述的。作為示例,如果用戶正在訂購來自銷售商的電視機,則情況可以是:來自該銷售商的特定尺寸的電視僅有銀色和黑色,而沒有白色。因此,CSP求解器組件110接收用戶輸入并應用和求解約束111。當然,要注意,約束111可被存儲在存儲120中或約束111可被分開存儲或約束111可在系統100外部并由系統100訪問等。
[0036]配置器組件108使用求值引擎112來對數學公式求值或調用用于求值的方法。數學或邏輯公式是采用一個或多個變量作為輸入并預期一個或多個變量作為輸出的數學或邏輯函數。變量可以是數字或其他類型。所述方法可位于系統內部或外部。例如,所述方法可位于可調用庫中、在第三方系統處等。求值引擎112說明性地訪問數學函數求值器組件116來基于用戶106所提供的輸入來對數學函數求值。數學函數求值器組件116具有公式集合,所述公式具有給定輸入變量集合和目標變量。當用戶或另一組件提供輸入變量時,組件116對公式求值來獲得目標值作為結果。
[0037]求值引擎112也可調用可調用庫組件114以便執行求值。可調用庫組件114包括具有給定輸入變量集合和一個目標變量或多個目標變量的方法的集合。僅為便于舉例,本討論關于具有單一目標變量的實施例來進行。當用戶106提供輸入變量中的一個或多個輸入變量時,求值引擎112可調用可調用庫組件114來獲得目標變量或目標變量的估計值。例如,在一些輸入變量未被設置或推導出的情況下,求值引擎112仍舊可求值并調用函數和方法。例如,在具有丟失值的那些輸入變量可使用針對每個變量類型的缺省值的情況下,這可以實現。求值引擎112提供被求值的變量給配置器組件108,該配置器組件可向CSP求解器組件110通知新值已被獲得,以便CSP求解器組件110可基于新值來對各約束111求解。
[0038]圖2是更詳細地示出圖1所示的基于約束