專利名稱:跨個別過程增強(qiáng)約束求解器的性能的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要地涉及用于求解針對問題域的約束問題的技術(shù)。具體而言,本發(fā)明涉 及一種用于跨一個或者多個問題域重用與約束求解運算關(guān)聯(lián)的信息的系統(tǒng)。
背景技術(shù):
半導(dǎo)體制造技術(shù)的發(fā)展已經(jīng)引起每個半導(dǎo)體器件的晶體管數(shù)量的顯著增長。晶體 管個數(shù)的這一增長使計算機(jī)架構(gòu)師能夠創(chuàng)造出設(shè)計復(fù)雜性與日俱增的數(shù)字電路設(shè)計。因 而,隨著數(shù)字電路設(shè)計變得更復(fù)制,驗證所得實施的正確性這一任務(wù)變得更加復(fù)雜。為此,電路設(shè)計團(tuán)隊依賴于自動化技術(shù)以處理與日俱增的設(shè)計復(fù)雜性。在這樣做 時,這些設(shè)計團(tuán)隊針對與實施和驗證電路設(shè)計的功能關(guān)聯(lián)的諸多應(yīng)用來執(zhí)行約束求解運 算。在一種應(yīng)用中,這些設(shè)計團(tuán)隊執(zhí)行約束求解運算以生成受約束的隨機(jī)輸入刺激以朝著 重要拐角情況驅(qū)動給定的電路仿真。在另一應(yīng)用中,這些設(shè)計團(tuán)隊在電路合成期間執(zhí)行約 束求解運算。然而,這些應(yīng)用可能由于大量遞歸的復(fù)雜約束滿足問題而負(fù)擔(dān)過重。另外,多 個獨立問題域(即應(yīng)用實例)必須時常求解類似的復(fù)雜約束滿足問題,其中一個獨立問題 域可以持續(xù)從另一問題域的經(jīng)驗中受益。
發(fā)明內(nèi)容
本發(fā)明的一個實施例提供一種用于重用與針對問題域的約束求解運算關(guān)聯(lián)的信 息的系統(tǒng)。該系統(tǒng)通過從問題域接收約束問題來開始。然后,該系統(tǒng)在問題高速緩存中搜 尋與規(guī)范表示對應(yīng)的條目。如果對應(yīng)條目在問題高速緩存中不存在,則該系統(tǒng)在問題高速 緩存中產(chǎn)生用于規(guī)范表示的條目。否則,如果對應(yīng)條目已經(jīng)存在于問題高速緩存中,則該系 統(tǒng)通過重用與問題高速緩存中的對應(yīng)條目關(guān)聯(lián)的求解器試探法來生成規(guī)范表示的解。在一些實施例中,該系統(tǒng)在問題高速緩存中產(chǎn)生條目。在這樣做時,該系統(tǒng)先在問 題高速緩存中存儲約束問題的規(guī)范表示。接著,該系統(tǒng)從多個可用試探法中選擇求解器試 探法并且通過使用所選求解器試探法來生成規(guī)范表示的解。只要所選試探法無法在預(yù)定 時間段內(nèi)生成解,則該系統(tǒng)選擇新的求解器試探法并且使用新的試探法以生成規(guī)范表示的 解。在選擇求解器試探法之后,該系統(tǒng)將所選求解器試探法與問題高速緩存中的規(guī)范表示 條目關(guān)聯(lián)。在一些實施例中,該系統(tǒng)監(jiān)視在生成規(guī)范表示的解時的計算時間并且在問題高速 緩存中的對應(yīng)規(guī)范表示條目中存儲計算時間。在一些實施例中,該系統(tǒng)使用后臺過程來精化對求解器試探法的選擇。在一些實施例中,該系統(tǒng)能夠執(zhí)行多個同時線程,其中相應(yīng)線程與獨立約束問題 關(guān)聯(lián)。在一些實施例中,該系統(tǒng)將約束問題轉(zhuǎn)換成規(guī)范表示。在一些實施例中,當(dāng)該系統(tǒng)將約束問題轉(zhuǎn)換成規(guī)范表示時,該系統(tǒng)將約束問題分 割成多個不相交約束問題。
在一些實施例中,該系統(tǒng)通過在問題高速緩存中記錄和保留用來第一次求解指定 的規(guī)范表示的求解器試探法、由此允許當(dāng)在以后時間求解指定的規(guī)范表示時使用相同試探 法來提供用于規(guī)范表示的持久解。在一些實施例中,該系統(tǒng)通過在問題高速緩存中記錄和保留用來第一次求解指定 的規(guī)范表示的隨機(jī)種子、由此允許該系統(tǒng)產(chǎn)生與求解個別規(guī)范表示的順序無關(guān)的恒定解來 為規(guī)范表示提供隨機(jī)穩(wěn)定性。在一些實施例中,該系統(tǒng)記錄用于問題域的約束問題解序列并且為后續(xù)問題域重 放解序列。在一些實施例中,該系統(tǒng)跨與一個或者多個應(yīng)用關(guān)聯(lián)的多個獨立問題域重用問題 高速緩存的信息。
圖1圖示了根據(jù)本發(fā)明一個實施例的約束求解器系統(tǒng)。圖2圖示了根據(jù)本發(fā)明一個實施例的跨約束求解器系統(tǒng)的數(shù)據(jù)流。圖3圖示了根據(jù)本發(fā)明一個實施例的問題高速緩存。圖4A圖示了根據(jù)本發(fā)明一個實施例的變換機(jī)制。圖4B圖示了根據(jù)本發(fā)明一個實施例的不相交機(jī)制。圖4C圖示了根據(jù)本發(fā)明一個實施例的歸約機(jī)制。圖5呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的用于重用與約束求解運算關(guān)聯(lián)的信息的 過程進(jìn)行圖示的流程圖。圖6呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的用于生成規(guī)范約束表示的解的過程進(jìn)行 圖示的流程圖。圖7圖示了根據(jù)本發(fā)明一個實施例的實施求解器服務(wù)器的計算機(jī)系統(tǒng)。
具體實施例方式呈現(xiàn)以下描述以使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)和利用本發(fā)明,并且在特定應(yīng)用及其 要求的背景下提供該描述。本領(lǐng)域技術(shù)人員將容易清楚對公開的實施例的各種修改,并且 這里限定的一般原理可以適用于其它實施例和應(yīng)用而不脫離本發(fā)明的精神和范圍。因此, 本發(fā)明不限于所示實施例而是將被賦予以與這里公開的原理和特征一致的最廣范圍。在本具體實施方式
中描述的數(shù)據(jù)結(jié)構(gòu)和代碼通常存儲于計算機(jī)可讀存儲介質(zhì)上, 該介質(zhì)可以是能夠存儲用于由計算機(jī)系統(tǒng)使用的代碼和/或數(shù)據(jù)的任何設(shè)備或者介質(zhì)。計 算機(jī)可讀存儲介質(zhì)包括但不限于易失性存儲器、非易失性存儲器、磁和光學(xué)存儲設(shè)備(比 如盤驅(qū)動器、磁帶、CD(壓縮盤)、DVD(數(shù)字多功能盤或者數(shù)字視頻盤)或者現(xiàn)在已知或者 以后開發(fā)的能夠存儲計算機(jī)可讀介質(zhì)的其它介質(zhì)??梢詫?b>具體實施方式
這一節(jié)中描述的方法和過程實施為能夠存儲于如上所述計 算機(jī)可讀存儲介質(zhì)中的代碼和/或數(shù)據(jù)。當(dāng)計算機(jī)系統(tǒng)讀取和執(zhí)行計算機(jī)可讀存儲介質(zhì)上 存儲的代碼和/或數(shù)據(jù)時,計算機(jī)系統(tǒng)實現(xiàn)作為數(shù)據(jù)結(jié)構(gòu)和代碼來實施的并且存儲于計算 機(jī)可讀存儲介質(zhì)內(nèi)的方法和過程。另外,可以在硬件模塊中包括下文描述的方法和過程。例如,硬件模塊可以包括但不限于專用集成電路(ASIC)芯片、現(xiàn)場可編程門陣列(FPGA)和現(xiàn)在已知或者將來開發(fā)的 其它可編程邏輯器件。當(dāng)激活硬件模塊時,硬件模塊實現(xiàn)硬件模塊內(nèi)包括的方法和過程。鍵電路設(shè)計團(tuán)隊依賴于自動化技術(shù)以處理復(fù)雜性與日俱增的電路設(shè)計。在這樣做 時,這些設(shè)計團(tuán)隊針對與實施和驗證電路設(shè)計的功能關(guān)聯(lián)的諸多應(yīng)用來執(zhí)行約束求解運 算。在一種應(yīng)用中,這些設(shè)計團(tuán)隊執(zhí)行約束求解運算以生成受約束的隨機(jī)輸入刺激以朝著 重要拐角情況驅(qū)動給定的電路仿真。在另一應(yīng)用中,這些設(shè)計團(tuán)隊在電路合成期間執(zhí)行約 束求解運算。然而,這些應(yīng)用可能由于大量遞歸的復(fù)雜約束滿足問題而負(fù)擔(dān)過重。另外,多個獨 立問題域(即應(yīng)用實例)必須時常求解類似的復(fù)雜約束滿足問題,其中一個獨立問題域可 以持續(xù)從另一問題域的經(jīng)驗中受益。對于本公開內(nèi)容的其余部分,問題域指代一個需要大 量約束求解運算的應(yīng)用實例。例如,來自電路仿真集合的相應(yīng)電路仿真是用于相應(yīng)問題域 的來源。本發(fā)明的實施例提供一種系統(tǒng),用于重用來自問題域的與約束求解運算關(guān)聯(lián)的信 息以在重訪給定的約束問題時改進(jìn)性能并且提高它們的解的穩(wěn)定性。在本發(fā)明的一些實施例中,系統(tǒng)支持在給定的問題域內(nèi)重用約束求解信息,而在 其它實施例中,系統(tǒng)支持隨時間跨多個獨立或者有關(guān)問題域內(nèi)重用這一信息。另外,在本發(fā) 明的實施例中,系統(tǒng)允許依次重放約束問題的先前解以有助于回歸測試。在一些實施例中, 系統(tǒng)有助于對于給定的約束求解運算而言解隨時間的持久性。在更多實施例中,系統(tǒng)有助 于在以后時間重訪給定的約束求解運算時的隨機(jī)穩(wěn)定性。約束求解器系統(tǒng)圖1圖示了根據(jù)本發(fā)明一個實施例的約束求解器系統(tǒng)100。約束求解器系統(tǒng)100 包括網(wǎng)絡(luò)102、求解器服務(wù)器104、問題高速緩存106和多個求解器客戶機(jī)108-112。網(wǎng)絡(luò) 102可以包括任一類有線或者無線通信信道。在本發(fā)明的一個實施例中,網(wǎng)絡(luò)102包括因特 網(wǎng)。求解器客戶機(jī)108-112可以包括任何如下節(jié)點,該節(jié)點具有計算能力和用于通過 網(wǎng)絡(luò)102來與求解器服務(wù)器104通信的通信機(jī)制。求解器客戶機(jī)108-112執(zhí)行與一個或者 多個約束求解應(yīng)用關(guān)聯(lián)的運算。在本發(fā)明的一個實施例中,求解器客戶機(jī)108-112或者使 用預(yù)先生成的輸入刺激或者使用由求解器服務(wù)器104生成的受約束的隨機(jī)刺激對一個或 者多個受驗證的電路設(shè)計(DUV)進(jìn)行電路仿真。在仿真期間,電路仿真器可以生成對復(fù)雜 約束滿足問題執(zhí)行限定的約束并且可以將該約束發(fā)送到求解器服務(wù)器104以請求滿足約 束值的輸入刺激。求解器服務(wù)器104可以包括任何如下節(jié)點,該節(jié)點具有計算能力和用于通過網(wǎng)絡(luò) 102來與求解器客戶機(jī)108-112通信并且直接地或者通過網(wǎng)絡(luò)102來與問題高速緩存106 通信的通信機(jī)制。求解器服務(wù)器104從求解器客戶機(jī)108-112中的任何求解器客戶機(jī)接收 約束并且返回可以滿足約束值的輸入刺激。在這樣做時,求解器服務(wù)器104通過利用可以 求解給定的約束滿足問題的許多可用求解器試探法之一來生成用于約束的輸入刺激。求解 器服務(wù)器104然后存儲和重用問題高速緩存106中與約束求解運算有關(guān)的信息以幫助加速 遞歸約束的約束求解運算。問題高速緩存106可以包括用于在非易失性儲存器中存儲數(shù)據(jù)的任一類系統(tǒng)。這
7包括但不限于基于磁、光或者磁光存儲設(shè)備的系統(tǒng)以及基于閃存和/或電池后援式存儲器 的存儲設(shè)備。注意,問題高速緩存106可以耦合到求解器服務(wù)器104或者網(wǎng)絡(luò)102。問題高 速緩存106可以包括與多個約束求解運算有關(guān)的信息和/或可以存儲用于一個或者多個求 解器客戶機(jī)108-112的多個預(yù)先生成的輸入序列。注意本發(fā)明的不同實施例可以使用不同配置而不限于約束求解器系統(tǒng)100中圖 示的配置。在本發(fā)明的一些實施例中,求解器客戶機(jī)108-112執(zhí)行并行運算,而在其它實施 例中,求解器客戶機(jī)108-112在不同時間工作。在這些實施例的一些變形中,求解器客戶機(jī) 108-112存在于相同計算節(jié)點上,而在其它變形中,求解器客戶機(jī)108-112存在于分布式計 算節(jié)點上。在本發(fā)明的一些實施例中,求解器服務(wù)器104在與給定的求解器客戶機(jī)相同的 計算節(jié)點上執(zhí)行。在其它實施例中,求解器服務(wù)器104實施為在一個或者多個計算節(jié)點上 執(zhí)行的分布式系統(tǒng)。在本發(fā)明的更多其它實施例中,求解器服務(wù)器104實施為在實現(xiàn)求解 器客戶機(jī)108-112的相同計算節(jié)點上執(zhí)行的分布式系統(tǒng)。圖2圖示了根據(jù)本發(fā)明一個實施例的跨約束求解器系統(tǒng)200的數(shù)據(jù)流。起初,求解 器客戶機(jī)202將約束204發(fā)送到求解器服務(wù)器206。求解器服務(wù)器206使用接收機(jī)制270 以從求解器客戶機(jī)202接收約束204并且使用變換機(jī)制208以將約束204轉(zhuǎn)換成規(guī)范表示 210。接著,求解器服務(wù)器206在問題高速緩存212中搜尋與規(guī)范表示210對應(yīng)的條目。約 束的規(guī)范表示是用于該約束和結(jié)構(gòu)類似的任何其它約束的標(biāo)準(zhǔn)表示,從而將類似約束匯集 轉(zhuǎn)換成它們的規(guī)范表示產(chǎn)生一種一致的形式。將約束轉(zhuǎn)換成它的規(guī)范表示允許任何其它類 似約束訪問和重用問題高速緩存中的約束問題的解。在本發(fā)明的一些實施例中,規(guī)范表示 作為二元判決圖(BDD)而存在。在本發(fā)明的一些實施例中,接收機(jī)制207從求解器客戶機(jī)202接收的約束204是 用于約束問題的規(guī)范表示。如果對應(yīng)條目在問題高速緩存212中不存在,則求解器服務(wù)器206通過在問題高 速緩存212中存儲規(guī)范表示210來產(chǎn)生條目。求解器服務(wù)器206也將規(guī)范表示210轉(zhuǎn)發(fā)到 求解器216以對規(guī)范表示210執(zhí)行約束求解運算并且生成解218。在這樣做時,求解器216 從多個可用試探法中選擇求解器試探法并且通過使用所選求解器試探法來生成規(guī)范表示 210的解。只要所選試探法無法在預(yù)定時間段內(nèi)生成解,求解器216就選擇新的求解器試探 法并且使用新的求解器試探法以生成規(guī)范表示210的解。在生成規(guī)范表示210的解之后,求解器216將元數(shù)據(jù)214轉(zhuǎn)發(fā)到問題高速緩存 212,其中元數(shù)據(jù)214包括所用求解器試探法和與約束求解運算關(guān)聯(lián)的其它信息。問題高速 緩存212然后將元數(shù)據(jù)214與問題高速緩存212中的新條目關(guān)聯(lián)。因而,當(dāng)遇到與先前已 經(jīng)探究的約束問題類似的約束問題時,求解器216將通過使用發(fā)現(xiàn)成功的求解器試探法來 求解約束問題。否則,如果對應(yīng)條目存在于問題高速緩存212中,則求解器216通過重用與先前約 束求解運算關(guān)聯(lián)的信息來生成規(guī)范表示的解218。在這樣做時,求解器216先從問題高速 緩存212中的對應(yīng)條目取回如下元數(shù)據(jù)214,該元數(shù)據(jù)包括先前用來求解約束問題的規(guī)范 表示的求解器試探法。然后,求解器216使用元數(shù)據(jù)214以通過重建先前已經(jīng)允許求解器 216求解規(guī)范表示210的條件來生成解218。在求解器216生成用于規(guī)范表示210的解218之后,求解器服務(wù)器206將解218轉(zhuǎn)發(fā)到求解器客戶機(jī)202。在這一實施例的一種變形中,求解器服務(wù)器206從問題高速緩存 212取回預(yù)先計算的解218并且將解218轉(zhuǎn)發(fā)到求解器客戶機(jī)202。在本發(fā)明的實施例中,在將解218轉(zhuǎn)發(fā)到求解器客戶機(jī)202之前,求解器服務(wù)器 206將為規(guī)范表示210生成的解218轉(zhuǎn)換成與原約束204 —致的形式。在這一實施例的一 種變形中,求解器服務(wù)器206用原約束204的原變量名取代為規(guī)范表示210生成的解218 的任何通用變量名。在本發(fā)明的一些實施例中,求解器服務(wù)器206使用后臺過程以精化對用于問題高 速緩存212中難以求解的規(guī)范表示條目的求解器試探法的選擇。在這些實施例的一種變形 中,求解器服務(wù)器206選擇其解先前已經(jīng)需要多于預(yù)定計算時間的規(guī)范表示條目并且嘗試 使用不同求解器試探法來生成更快的解。在本發(fā)明的一些實施例中,求解器服務(wù)器206嘗試通過先應(yīng)用一求解器試探法以 求解來自規(guī)范表示的約束變量的子集并且隨后將該求解器試探法應(yīng)用于規(guī)范表示的其余 部分來優(yōu)化用于給定的規(guī)范表示條目的求解器試探法。問題高諫緩存圖3圖示了根據(jù)本發(fā)明一個實施例的問題高速緩存300。問題高速緩存300存儲 規(guī)范表示302和與針對規(guī)范表示302的約束求解運算關(guān)聯(lián)的元數(shù)據(jù)。這一元數(shù)據(jù)包括求解 器試探法304、計算時間306、持久性標(biāo)志308、隨機(jī)穩(wěn)定性標(biāo)志310和隨機(jī)種子312。求解 器試探法304指代如下求解器試探法,該試探法允許求解器服務(wù)器在預(yù)定時間段生成用于 規(guī)范表示302的解。求解器服務(wù)器206監(jiān)視在生成規(guī)范表示210的解時的計算時間并且在 與問題高速緩存300的規(guī)范表示302條目關(guān)聯(lián)的計算時間306條目之下存儲這一時間。求解器客戶機(jī)的許多用戶持續(xù)從隨時間的持久解中受益。例如,當(dāng)用戶希望產(chǎn)生 用于DUV的具體仿真結(jié)果時,求解器服務(wù)器206可以繼續(xù)產(chǎn)生用于相同問題隨時間一致的 結(jié)果。先前提到在本發(fā)明的實施例中,求解器服務(wù)器重訪問題高速緩存的規(guī)范表示條目以 精化對應(yīng)用于它們的求解器試探法的選擇。重要的是求解器服務(wù)器沒有重訪其值隨時間保 持持久的規(guī)范表示條目。當(dāng)為問題高速緩存300中的規(guī)范表示302設(shè)置持久性標(biāo)志308時, 不允許求解器服務(wù)器改變用于對應(yīng)規(guī)范表示302的求解器試探法304。當(dāng)沒有設(shè)置持久性 標(biāo)志308時,允許求解器服務(wù)器重訪問題高速緩存300中的規(guī)范表示302以搜尋可以在更 短計算時間內(nèi)求解規(guī)范表示的最優(yōu)求解器試探法。為了進(jìn)一步增強(qiáng)解隨時間的持久性,針對電路仿真的一些用途可能需要在重訪規(guī) 范表示302時的隨機(jī)穩(wěn)定性。隨機(jī)穩(wěn)定性指代依賴于隨機(jī)數(shù)的運算必須針對固定成組輸入 隨時間產(chǎn)生一致結(jié)果這一要求。當(dāng)求解器服務(wù)器針對多個問題域同時對多個約束執(zhí)行運算 時可能出現(xiàn)隨機(jī)穩(wěn)定性違規(guī)。在這一情形中,針對一個問題域的約束求解運算可能影響另 一問題域的后續(xù)約束求解運算所用的隨機(jī)種子值。 在本發(fā)明的一個實施例中,求解器服務(wù)器能夠以任何順序處理用于多個求解器客 戶機(jī)的約束而不會讓一個約束求解運算干擾后續(xù)約束求解運算的隨機(jī)穩(wěn)定性。求解器服務(wù) 器在相應(yīng)規(guī)范表示320的解必須隨時間維持隨機(jī)穩(wěn)定性時通過允許規(guī)范表示320設(shè)置隨機(jī) 穩(wěn)定性標(biāo)志310來為對某些規(guī)范表示的約束求解運算施加隨機(jī)穩(wěn)定性。如果為問題高速緩 存300中的給定規(guī)范表示條目設(shè)置隨機(jī)穩(wěn)定性標(biāo)志310,則求解器服務(wù)器將把用來求解規(guī) 范表示302的隨機(jī)種子存儲到隨機(jī)種子312條目中。如果求解器服務(wù)器接收對求解如下約束的請求,該約束的規(guī)范表示302具有在問題高速緩存300中的對應(yīng)條目,該條目設(shè)置有隨 機(jī)穩(wěn)定性標(biāo)志310,則求解器服務(wù)器將從對應(yīng)條目取回隨機(jī)種子312并且使用這一隨機(jī)種 子值作為約束求解運算的初始種子。重放機(jī)制電路設(shè)計者通常需要復(fù)制用于約束求解器的給定應(yīng)用的先前解序列。例如,這可 以作為對電路設(shè)計的完整回歸測試的部分而發(fā)生,或者它可以是先前確定為激活已知設(shè)計 錯誤的孤立仿真運行。因此,用戶可能想要保存先前受約束的隨機(jī)輸入刺激序列和生成該 序列的種子以重建先前電路仿真運行。在本發(fā)明的實施例中,問題高速緩存300存儲多個重放序列314,其中相應(yīng)重放序 列314伴隨有解ID 316和外部狀態(tài)318。在這些實施例中,求解器服務(wù)器存儲它為它從相 應(yīng)求解器客戶機(jī)接收的約束而生成的解。在這樣做時,求解器服務(wù)器在問題高速緩存300 的重放序列314條目中按依次順序存儲這些解。解ID 316是與重放序列314條目對應(yīng)的 標(biāo)識符,求解器服務(wù)器用該標(biāo)識符來將重放序列與給定的求解器客戶機(jī)執(zhí)行匹配。外部狀 態(tài)318包括與可以改變值并且對給定的約束問題有影響的多個非隨機(jī)變量關(guān)聯(lián)的信息。在本發(fā)明的一些實施例中,求解器客戶機(jī)可以請求求解器服務(wù)器提供重放序列 314以重現(xiàn)先前約束求解應(yīng)用。在其它實施例中,求解器客戶機(jī)可以請求在相同約束求解 應(yīng)用中更早生成的重放序列314。例如,電路仿真可以請求求解器服務(wù)器提供在用于給定 DUV的回歸仿真期間的重放序列314或者甚至可以請求在相同電路仿真中更早生成的重放 序列314。變換機(jī)制圖4A圖示了根據(jù)本發(fā)明一個實施例的變換機(jī)制400。變換機(jī)制400將約束402變 換成一個或者多個不相交規(guī)范表示410。注意變換機(jī)制400包括用于將約束402分割成一 個或者多個不相交約束406的不相交機(jī)制404。另外,變換機(jī)制400也包括將不相交約束 406變換成規(guī)范表示410的歸約機(jī)制408。圖4B圖示了根據(jù)本發(fā)明一個實施例的不相交機(jī)制404。不相交機(jī)制404接收約束 402并且產(chǎn)生一個或者多個不相交約束406。如果約束從其它約束斷開并且與其它約束無 關(guān),則它是不相交約束,并且它代表單個鄰接問題空間。注意為了能夠?qū)⒓s束402分割成多 個不相交約束406,約束402需要是對多個不相交問題空間的描述(例如,如在圖4B的約束 402中所示的約束不相交)。圖4C圖示了根據(jù)本發(fā)明一個實施例的歸約機(jī)制408。在操作期間,歸約機(jī)制408 接收不相交約束406并且產(chǎn)生對應(yīng)規(guī)范表示410。歸約機(jī)制408通過對不相交約束執(zhí)行將 形式相似的約束變換成單個規(guī)范表示的一致的運算序列來產(chǎn)生對應(yīng)規(guī)范表示。為了產(chǎn)生規(guī) 范表示410,歸約機(jī)制408先通過將不相交約束406的運算順序轉(zhuǎn)換成規(guī)范形式來將不相交 約束406轉(zhuǎn)換成中間表示。接著,歸約機(jī)制408按預(yù)定順序(例如從左到右)遍歷中間表 示并且通過用變量名遞增序列(例如VI、V2…Vn)取代中間表示的變量名序列來產(chǎn)生規(guī)范 表示410。圖5呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的用于重用與約束求解運算關(guān)聯(lián)的信息的 過程進(jìn)行圖示的流程圖。系統(tǒng)通過從求解器客戶機(jī)接收約束來開始(操作502)。接著,系 統(tǒng)將約束分割成一個或者多個不相交約束(操作504)并且將不相交約束歸約成規(guī)范表示(操作506)。在本發(fā)明的一些實施例中,系統(tǒng)僅使用一個所得規(guī)范表示以求解約束。在本 發(fā)明的其它實施例中,系統(tǒng)求解多個規(guī)范表示并且在問題高速緩存中存儲元數(shù)據(jù)和/或它 們的解以供以后使用。為了解決規(guī)范表示,系統(tǒng)在問題高速緩存中搜尋與規(guī)范表示對應(yīng)的條目(操作 508)并且確定對應(yīng)條目是否存在(操作510)。如果是這樣,則系統(tǒng)從問題高速緩存中的對 應(yīng)條目中選擇求解器試探法(操作51幻。然后,系統(tǒng)通過使用所選求解器試探法來生成規(guī) 范表示的解(操作514)并且將解返回給求解器客戶機(jī)(操作522)。如果對應(yīng)條目在問題高速緩存中不存在,則系統(tǒng)在問題高速緩存中的新條目內(nèi)存 儲規(guī)范表示(操作516)。然后,系統(tǒng)通過使用求解器試探法來生成規(guī)范表示的解(操作 518)并且將求解器試探法與問題高速緩存中的新條目關(guān)聯(lián)(操作520)。最后,系統(tǒng)將解返 回給求解器客戶機(jī)(操作522)。圖6呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的擴(kuò)展圖5的操作518的用于生成規(guī)范約束 表示的解的過程進(jìn)行圖示的流程圖。系統(tǒng)通過從可用求解器試探法匯集中選擇求解器試探 法(操作602)來開始。然后,系統(tǒng)使用所選求解器試探法預(yù)定時間段以生成對給定規(guī)范表 示的解(操作604)。接著,系統(tǒng)確定是否找到解(操作606)。如果是這樣,則系統(tǒng)返回解 和用來生成該解的求解器試探法(操作608)。如果沒有找到解,則系統(tǒng)確定是否存在任何未用的求解器試探法(操作610)。如 果存在,則系統(tǒng)返回到操作602以選擇另一求解器試探法。如果不存在未用的求解器試探 法,則系統(tǒng)啟動錯誤處理程序(操作612)。在這一實施例的一種變形中,錯誤處理程序報告 錯誤。在另一變形中,錯誤處理程序?qū)⒁?guī)范表示標(biāo)注為不可解,從而可以忽略對求解類似約 束問題的以后嘗試。圖7圖示了根據(jù)本發(fā)明實施例的求解器服務(wù)器的計算機(jī)系統(tǒng)。計算機(jī)系統(tǒng)702包 括處理器704、存儲器706和存儲設(shè)備708。計算機(jī)系統(tǒng)702也耦合到顯示設(shè)備710。存儲 設(shè)備708存儲操作系統(tǒng)712和求解器服務(wù)器714。求解器服務(wù)器714包括接收機(jī)制716、變 換機(jī)制718和求解器720。在操作期間,求解器服務(wù)器714從存儲設(shè)備708加載到存儲器 706中并且由處理器704執(zhí)行。僅出于示例和描述的目的已經(jīng)呈現(xiàn)對本發(fā)明實施例的前文描述。本意并非讓它們 窮舉本發(fā)明或者使本發(fā)明限于公開的形式。因而,本領(lǐng)域技術(shù)人員將清楚許多修改和變形。 此外,本意并非讓上述公開內(nèi)容限制本發(fā)明。本發(fā)明的范圍由所附權(quán)利要求書限定。
權(quán)利要求
1.一種用于重用與針對問題域的約束求解運算關(guān)聯(lián)的信息的方法,所述方法包括從所述問題域接收用于約束問題的規(guī)范表示;在問題高速緩存中搜尋與所述規(guī)范表示對應(yīng)的條目;并且如果對應(yīng)條目在所述問題高速緩存中不存在,則在所述問題高速緩存中產(chǎn)生用于所述 規(guī)范表示的條目;否則,如果對應(yīng)條目存在于所述問題高速緩存中,則通過重用與所述問題高速緩存中 的所述對應(yīng)條目關(guān)聯(lián)的求解器試探法來生成所述規(guī)范表示的解。
2.根據(jù)權(quán)利要求1所述的方法,其中在所述問題高速緩存中產(chǎn)生用于所述規(guī)范表示的 條目包括在所述問題高速緩存中存儲所述約束問題的所述規(guī)范表示;從多個可用試探法中選擇求解器試探法;通過使用所述選擇的求解器試探法來生成所述規(guī)范表示的解,其中只要所述選擇的試 探法無法在預(yù)定時間段內(nèi)生成解,則系統(tǒng)選擇新的求解器試探法并且使用所述新的試探法 以生成所述規(guī)范表示的解;并且將所述選擇的求解器試探法與所述問題高速緩存中的所述規(guī)范表示條目關(guān)聯(lián)。
3.根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括監(jiān)視在生成規(guī)范表示的解時的 計算時間,并且在所述問題高速緩存中的所述對應(yīng)規(guī)范表示條目中存儲所述計算時間。
4.根據(jù)權(quán)利要求3所述的方法,其中所述方法還包括使用后臺過程來精化對求解器試 探法的選擇。
5.根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述方法的求解器服務(wù)器能夠執(zhí)行多個同時 線程,其中相應(yīng)線程與獨立約束問題關(guān)聯(lián)。
6.根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括將約束問題轉(zhuǎn)換成規(guī)范表示。
7.根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括通過在所述問題高速緩存中記錄 和保留用來第一次求解指定的規(guī)范表示的求解器試探法、由此允許當(dāng)在以后時間求解所述 指定的規(guī)范表示時使用相同試探法來提供用于所述規(guī)范表示的持久解。
8.根據(jù)權(quán)利要求7所述的方法,其中所述方法還包括通過在所述問題高速緩存中記錄 和保留用來第一次求解指定的規(guī)范表示的隨機(jī)種子、由此允許系統(tǒng)產(chǎn)生與求解個別規(guī)范表 示的順序無關(guān)的恒定解來為所述規(guī)范表示提供隨機(jī)穩(wěn)定性。
9.根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括記錄用于問題域的約束問題解 序列,并且為后續(xù)問題域重放所述解序列。
10.根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括跨與一個或者多個應(yīng)用關(guān)聯(lián)的 多個獨立問題域重用所述問題高速緩存的信息。
11.一種存儲指令的計算機(jī)可讀存儲介質(zhì),所述指令在由計算機(jī)執(zhí)行時使所述計算機(jī) 執(zhí)行一種用于重用與針對問題域的約束求解運算關(guān)聯(lián)的信息的方法,所述方法包括從所述問題域接收用于約束問題的規(guī)范表示;在問題高速緩存中搜尋與所述規(guī)范表示對應(yīng)的條目;并且如果對應(yīng)條目在所述問題高速緩存中不存在,則在所述問題高速緩存中產(chǎn)生用于所述 規(guī)范表示的條目;否則,如果對應(yīng)條目存在于所述問題高速緩存中,則通過重用與所述問題高速緩存中的所述對應(yīng)條目關(guān)聯(lián)的求解器試探法來生成所述規(guī)范表示的解。
12.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中在所述問題高速緩存中產(chǎn)生用 于所述規(guī)范表示的條目包括在所述問題高速緩存中存儲所述約束問題的所述規(guī)范表示;從多個可用試探法中選擇求解器試探法;通過使用所述選擇的求解器試探法來生成所述規(guī)范表示的解,其中只要所述選擇的試 探法無法在預(yù)定時間段內(nèi)生成解,系統(tǒng)選擇新的求解器試探法并且使用所述新的試探法以 生成所述規(guī)范表示的解;并且將所述選擇的求解器試探法與所述問題高速緩存中的所述規(guī)范表示條目關(guān)聯(lián)。
13.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括使用后臺過程 來精化對求解器試探法的選擇。
14.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中執(zhí)行所述方法的求解器服務(wù)器 能夠執(zhí)行多個同時線程,其中相應(yīng)線程與獨立約束問題關(guān)聯(lián)。
15.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括將約束問題轉(zhuǎn) 換成規(guī)范表示。
16.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括通過在所述問 題高速緩存中記錄和保留用來第一次求解指定的規(guī)范表示的求解器試探法、由此允許當(dāng)在 以后時間求解所述指定的規(guī)范表示時使用相同試探法來提供用于所述規(guī)范表示的持久解。
17.根據(jù)權(quán)利要求16所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括通過在所述問 題高速緩存中記錄和保留用來第一次求解指定的規(guī)范表示的隨機(jī)種子、由此允許系統(tǒng)產(chǎn)生 與求解個別規(guī)范表示的順序無關(guān)的恒定解來為所述規(guī)范表示提供隨機(jī)穩(wěn)定性。
18.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括記錄用于問 題域的約束問題解序列,并且為后續(xù)問題域重放所述解序列。
19.根據(jù)權(quán)利要求11所述的計算機(jī)可讀存儲介質(zhì),其中所述方法還包括跨與一個或者 多個應(yīng)用關(guān)聯(lián)的多個獨立問題域重用所述問題高速緩存的信息。
20.一種用于重用與針對問題域的約束求解運算關(guān)聯(lián)的信息的約束求解器服務(wù)器,包括接收機(jī)制,配置成從所述問題域接收用于約束問題的規(guī)范表示;問題高速緩存,配置成存儲用于約束問題的規(guī)范表示、存儲與針對所述規(guī)范表示的所 述約束求解運算關(guān)聯(lián)的元數(shù)據(jù)并且取回與所述規(guī)范表示對應(yīng)的條目;以及求解器機(jī)制,配置成通過使用選擇的求解器試探法來生成所述規(guī)范表示的解;其中如果所述問題高速緩存沒有包含與所述規(guī)范表示對應(yīng)的條目,則所述約束求解器 服務(wù)器在所述問題高速緩存中產(chǎn)生用于所述規(guī)范表示的條目;否則,如果所述問題高速緩存包含與所述規(guī)范表示對應(yīng)的條目,則所述求解器機(jī)制通 過重用與所述問題高速緩存中的所述對應(yīng)條目關(guān)聯(lián)的求解器試探法來生成所述規(guī)范表示 的解。
21.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中在所述問題高速緩存中產(chǎn)生用于 所述規(guī)范表示的條目包括在所述問題高速緩存中存儲所述約束問題的所述規(guī)范表示;從多個可用試探法中選擇求解器試探法;通過使用所述選擇的求解器試探法來生成所述規(guī)范表示的解,其中只要所述選擇的試 探法無法在預(yù)定時間段內(nèi)生成解,則系統(tǒng)選擇新的求解器試探法并且使用所述新的試探法 以生成所述規(guī)范表示的解;并且將所述選擇的求解器試探法與所述問題高速緩存中的所述規(guī)范表示條目關(guān)聯(lián)。
22.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠使用 后臺過程來精化對求解器試探法的選擇。
23.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠執(zhí)行 多個同時線程,其中相應(yīng)線程與獨立約束問題關(guān)聯(lián)。
24.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,還包括配置成將約束問題轉(zhuǎn)換成規(guī)范 表示的變換機(jī)制。
25.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠通過 在所述問題高速緩存中記錄和保留用來第一次求解指定的規(guī)范表示的求解器試探法、由此 允許當(dāng)在以后時間求解所述指定的規(guī)范表示時使用相同試探法來提供用于所述規(guī)范表示 的持久解。
26.根據(jù)權(quán)利要求25所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠通過 在所述問題高速緩存中記錄和保留用來第一次求解指定的規(guī)范表示的隨機(jī)種子、由此允許 所述約束求解器服務(wù)器產(chǎn)生與求解個別規(guī)范表示的順序無關(guān)的恒定解來為所述規(guī)范表示 提供隨機(jī)穩(wěn)定性。
27.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠在所 述問題高速緩存中記錄用于問題域的約束問題解序列并且為后續(xù)問題域重放所述解序列。
28.根據(jù)權(quán)利要求20所述的約束求解器服務(wù)器,其中所述約束求解器服務(wù)器能夠跨與 一個或者多個應(yīng)用關(guān)聯(lián)的多個獨立問題域重用所述問題高速緩存的信息。
全文摘要
本發(fā)明的一個實施例提供一種用于重用與針對問題域的約束求解運算關(guān)聯(lián)的信息的系統(tǒng)。該系統(tǒng)通過從問題域接收約束問題來開始。然后,該系統(tǒng)在問題高速緩存中搜尋與規(guī)范表示對應(yīng)的條目。如果對應(yīng)條目在問題高速緩存中不存在,則該系統(tǒng)在問題高速緩存中產(chǎn)生用于規(guī)范表示的條目。否則,如果對應(yīng)條目已經(jīng)存在于問題高速緩存中,則該系統(tǒng)通過重用與問題高速緩存中的對應(yīng)條目關(guān)聯(lián)的求解器試探法來生成規(guī)范表示的解。
文檔編號G06N5/02GK102084381SQ200980000255
公開日2011年6月1日 申請日期2009年7月13日 優(yōu)先權(quán)日2008年7月21日
發(fā)明者G·R·瑪圖拉納 申請人:新思科技有限公司