本發(fā)明涉及具有一實(shí)體集合并滿(mǎn)足對(duì)應(yīng)的一組約束的計(jì)算機(jī)模型。
背景技術(shù):
在許多工業(yè)應(yīng)用中,解決約束系統(tǒng)和模型是有用的,諸如例如計(jì)算機(jī)輔助設(shè)計(jì)(computer-aided design,CAD)系統(tǒng),運(yùn)籌學(xué)(operations research)的問(wèn)題等。在現(xiàn)有的參數(shù)化CAD系統(tǒng)中,幾何模型通過(guò)幾何實(shí)體的一集合來(lái)表示。實(shí)體的所述集合的所述實(shí)體通過(guò)一組約束(其由一組約束等式代表)而相互關(guān)聯(lián)。因此,模型的一用戶(hù)修改實(shí)體理想地會(huì)導(dǎo)致相關(guān)實(shí)體的相應(yīng)修改以便滿(mǎn)足所述約束。這是由CAD系統(tǒng)軟件解決模型的約束方程完成的。例如,一正方形的模型可以由四個(gè)線段的實(shí)體來(lái)定義。這種模型的約束的示例可以包括:四個(gè)線段具有相等的長(zhǎng)度,兩個(gè)相交的線是垂直的,以及在線段的端點(diǎn)處的線段適當(dāng)?shù)幕ミB。當(dāng)用戶(hù)通過(guò)延長(zhǎng)線段來(lái)修改一特定線段時(shí),為了保持正方形的形狀,剩余的三個(gè)線段相應(yīng)地被延長(zhǎng)。
然而,在現(xiàn)有的參數(shù)化CAD系統(tǒng)中,隨著約束和實(shí)體的數(shù)量增加,求解約束方程所需的計(jì)算量急劇增加。因此,現(xiàn)有的參數(shù)化CAD系統(tǒng)在處理多于幾百個(gè)約束時(shí),無(wú)法不負(fù)面地影響CAD系統(tǒng)的速度和性能。這種設(shè)計(jì)限制導(dǎo)致用戶(hù)使用較小的模型,以模型的復(fù)雜性作為對(duì)CAD系統(tǒng)的速度和性能的妥協(xié)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明是一種方法和系統(tǒng),其用于提供用于確定具有實(shí)體集合并滿(mǎn)足一約束集合的一模型的配置的功能。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,提供:一種具有嵌入其上的計(jì)算機(jī)可讀代碼的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀代碼包括用于實(shí)現(xiàn)用于確定包括滿(mǎn)足一約束集合的實(shí)體的集合的一模型的配置的方法的程序代碼,其特征在于,所述方法包括:(a)提供所述實(shí)體的集合和所述約束集合,所述實(shí)體的集合由多個(gè)變量表示的,每個(gè)約束對(duì)應(yīng)于與所述多個(gè)變量的子集合互相關(guān)聯(lián)的至少一約束方程;(b)生成至少一樹(shù),所述至少一樹(shù)包括多個(gè)節(jié)點(diǎn),所述至少一樹(shù)包括一根節(jié)點(diǎn),所述根節(jié)點(diǎn)具有至少一子節(jié)點(diǎn),所述節(jié)點(diǎn)具有所述至少一個(gè)子節(jié)點(diǎn)定義為父節(jié)點(diǎn),所述節(jié)點(diǎn)缺少所述至少一子節(jié)點(diǎn)定義為葉節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述約束方程式的一子集合;(c)對(duì)于葉節(jié)點(diǎn)的一子集合,并行地解決以滿(mǎn)足每個(gè)所述葉節(jié)點(diǎn)的所述約束方程;(d)對(duì)于已滿(mǎn)足的所述子節(jié)點(diǎn)的約束方程的每個(gè)父節(jié)點(diǎn),基于已滿(mǎn)足的所述對(duì)應(yīng)子節(jié)點(diǎn)的所述約束方程,求解以滿(mǎn)足所述父節(jié)點(diǎn)的約束方程;(e)重復(fù)(d)直到所述根節(jié)點(diǎn)的所述約束方程已經(jīng)被滿(mǎn)足;(f)將所述每個(gè)父節(jié)點(diǎn)的已滿(mǎn)足的約束方程傳播到每個(gè)父節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn),從而確定滿(mǎn)足所述約束集合的模型的配置;和(g)輸出與所確定的配置的相對(duì)應(yīng)的實(shí)體。
可選地,所述方法還包括:(h)提供一顯示組織模塊;和(i)根據(jù)滿(mǎn)足的約束集合來(lái)組織顯示對(duì)應(yīng)于所確定的模型的配置的輸出實(shí)體。
可選地,求解以滿(mǎn)足每個(gè)所述子節(jié)點(diǎn)的約束方程包括:更新所述子節(jié)點(diǎn)的一狀態(tài)矢量;和(ii)生成對(duì)應(yīng)于所述更新的狀態(tài)矢量的一更新的統(tǒng)計(jì)矩陣。
可選地,更新每個(gè)所述子節(jié)點(diǎn)中的所述狀態(tài)矢量是基于第一配置與第二配置之間的差異,其中,在第一配置中,對(duì)應(yīng)于所述子節(jié)點(diǎn)的約束方程是不滿(mǎn)足的,在第二配置中,對(duì)應(yīng)于所述子節(jié)點(diǎn)的約束方程是滿(mǎn)足的。
可選地,滿(mǎn)足每個(gè)父節(jié)點(diǎn)的約束方程包括:(i)預(yù)測(cè)所述父節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn)的一狀態(tài)矢量,每個(gè)狀態(tài)矢量對(duì)應(yīng)于所述父節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn)的所述更新的狀態(tài)矢量;和(ii)成對(duì)應(yīng)于每個(gè)預(yù)測(cè)狀態(tài)矢量的一預(yù)測(cè)統(tǒng)計(jì)矩陣。
可選地,滿(mǎn)足每個(gè)父節(jié)點(diǎn)的約束方程還包括:(iii)將所述父節(jié)點(diǎn)的子節(jié)點(diǎn)的預(yù)測(cè)統(tǒng)計(jì)矩陣組合成一單一組合統(tǒng)計(jì)矩陣;(iv)產(chǎn)生對(duì)應(yīng)于所述組合統(tǒng)計(jì)矩陣的一組合狀態(tài)矢量;和(v)基于所述組合的統(tǒng)計(jì)矩陣和所述組合的狀態(tài)矢量來(lái)更新所述父節(jié)點(diǎn)的一狀態(tài)矢量。
可選地,傳播每個(gè)父節(jié)點(diǎn)的滿(mǎn)足的約束方程包括:(i)將所述父節(jié)點(diǎn)的所述更新的狀態(tài)矢量傳播到所述父節(jié)點(diǎn)的每個(gè)所述子節(jié)點(diǎn),以對(duì)所述父節(jié)點(diǎn)的每個(gè)所述子節(jié)點(diǎn)的更新的狀態(tài)矢量應(yīng)用一調(diào)整;和(ii)重復(fù)(i)直到所述葉節(jié)點(diǎn)的所述更新的狀態(tài)矢量被調(diào)整。
可選地,還包括:重復(fù)(c)-(f),直到滿(mǎn)足一第一精度條件。
可選地,所述重復(fù)是迭代的。
可選地,所述第一精度條件基于一殘差矢量。
可選地,所述實(shí)體是幾何實(shí)體。
可選地,所述幾何實(shí)體是二維度幾何實(shí)體。
可選地,所述幾何實(shí)體是三維度幾何實(shí)體。
可選地,所述方法還包括:(h)生成表示所述模型的一矩陣,所述矩陣具有至少第一和第二維度,所述矩陣的所述第一維度中的至少一個(gè)矢量中的每一個(gè)對(duì)應(yīng)于所述多個(gè)變量的一子集合,所述矩陣在所述第一維度為稀疏的(sparse),所述至少一個(gè)樹(shù)的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述矩陣的所述第一維度中的至少一個(gè)矢量。
可選地,所述模型是一非線性模型。
可選地,生成表示所述模型的所述矩陣包括:(i)在(b)之前,線性化所述非線性模型以產(chǎn)生一線性模型;和(ii)重復(fù)(c)-(f),直到滿(mǎn)足一第二精度條件。
可選地,所述重復(fù)是迭代的。
可選地,所述第二精度條件基于一殘差矢量。
可選地,所述矩陣是一順序地線性化矩陣。
可選地,生成所述至少一樹(shù)包括:(i)創(chuàng)建所述至少一個(gè)樹(shù)的一根節(jié)點(diǎn)并且將所述約束方程中的至少一個(gè)放置在所述根節(jié)點(diǎn)中;和(ii)將共享至少一個(gè)變量的約束方程和所述根節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn)中的根節(jié)點(diǎn)中的所述至少一個(gè)約束方程放置一起。
可選地,生成所述至少一樹(shù)還包括:(iii)將共享至少一個(gè)變量的約束方程和所述相應(yīng)子節(jié)點(diǎn)的附加的相應(yīng)的子節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn)中的根節(jié)點(diǎn)中的所述至少一個(gè)約束方程放置一起;(iv)重復(fù)(iii)直到每個(gè)約束方程被放置在所述至少一個(gè)樹(shù)的至少一個(gè)所述節(jié)點(diǎn)中。
可選地,所述模型具有至少一個(gè)自由度。
可選地,所述方法還包括:(h)接收作為用戶(hù)輸入,修改所述實(shí)體集合中的至少一個(gè)實(shí)體的指令;和(i)響應(yīng)于所述用戶(hù)輸入,求解以滿(mǎn)足所述約束方程集合,以確定所述模型的一新配置。
可選地,所述方法還包括:(j)輸出相對(duì)應(yīng)滿(mǎn)足所述約束集合的模型的配置的所述實(shí)體。
可選地,基于所述滿(mǎn)足的所述對(duì)應(yīng)子節(jié)點(diǎn)的約束方程是并行地被處理,進(jìn)而求解以滿(mǎn)足所述父節(jié)點(diǎn)的所述約束方程。
可選地,所述統(tǒng)計(jì)矩陣是協(xié)方差矩陣。
可選地,所述葉節(jié)點(diǎn)的子集合包括所有的所述葉節(jié)點(diǎn)。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,還提供:一種用于確定包括具有軟件指令的計(jì)算機(jī)中的實(shí)體集合和約束集合的模型的配置的系統(tǒng),所述實(shí)體的集合由多個(gè)變量表示,每個(gè)約束對(duì)應(yīng)于與所述多個(gè)變量相互關(guān)連的至少一約束方程的子集合,所述系統(tǒng)包括:(a)一計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理器和至少一用戶(hù)輸入設(shè)備,所述計(jì)算機(jī)系統(tǒng)被配置為:(i)經(jīng)由所述至少一輸入裝置接收用戶(hù)輸入以產(chǎn)生所述模型;(ii)生成至少一樹(shù),所述至少一樹(shù)包括多個(gè)節(jié)點(diǎn),所述至少一個(gè)樹(shù)包括一根節(jié)點(diǎn),所述根節(jié)點(diǎn)具有至少一子節(jié)點(diǎn),所述節(jié)點(diǎn)具有至少一個(gè)子節(jié)點(diǎn)定義為父節(jié)點(diǎn),所述節(jié)點(diǎn)缺少子節(jié)點(diǎn)定義為葉節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述約束方程集合的一子集合;(iii)對(duì)于葉節(jié)點(diǎn)的一子集合,并行地解決以滿(mǎn)足每個(gè)所述葉節(jié)點(diǎn)的所述約束方程;(iv)對(duì)于已滿(mǎn)足的所述子節(jié)點(diǎn)的約束方程的每個(gè)父節(jié)點(diǎn),基于已滿(mǎn)足的所述對(duì)應(yīng)子節(jié)點(diǎn)的所述約束方程,求解以滿(mǎn)足所述父節(jié)點(diǎn)的約束方程;(v)重復(fù)(iv),直到所述根節(jié)點(diǎn)的約束方程已經(jīng)被滿(mǎn)足;(vi)將每個(gè)父節(jié)點(diǎn)的已滿(mǎn)足的約束方程傳播到每個(gè)父節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn),從而確定滿(mǎn)足所述約束集合的模型的配置;和(vii)輸出與所確定的配置相對(duì)應(yīng)的實(shí)體。
可選地,所述計(jì)算機(jī)系統(tǒng)還包括至少一個(gè)顯示設(shè)備,并且所述計(jì)算機(jī)系統(tǒng)還被配置為:(viii)經(jīng)由所述至少一個(gè)顯示設(shè)備顯示所述確定的配置的所述輸出實(shí)體。
可選地,所述計(jì)算機(jī)系統(tǒng)還被配置為:(viii)接收用戶(hù)輸入以修改所述實(shí)體集合中的至少一個(gè)實(shí)體;和(ix)求解以滿(mǎn)足所述約束集合,以確定所述模型的一新配置。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,還提供:一種用于確定包括具有軟件指令的計(jì)算機(jī)中的實(shí)體集合和約束集合的模型的配置的系統(tǒng),所述實(shí)體的集合由多個(gè)變量表示,每個(gè)約束對(duì)應(yīng)于與所述多個(gè)變量相互關(guān)連的至少一約束方程的子集合,所述系統(tǒng)包括:(a)一計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括一存儲(chǔ)器至少一個(gè)處理器、至少一用戶(hù)輸入設(shè)備及至少一顯示顯示設(shè)備;及(b)一計(jì)算機(jī)生成的模型存儲(chǔ)在所述計(jì)算機(jī)系統(tǒng)的所述存儲(chǔ)器中,所述計(jì)算機(jī)系統(tǒng)被配置為:(i)經(jīng)由所述至少一輸入裝置接收用戶(hù)輸入以修改所述實(shí)體集合的至少一實(shí)體;(ii)生成至少一樹(shù),所述至少一樹(shù)包括多個(gè)節(jié)點(diǎn),所述至少一個(gè)樹(shù)包括一根節(jié)點(diǎn),所述根節(jié)點(diǎn)具有至少一子節(jié)點(diǎn),所述節(jié)點(diǎn)具有至少一個(gè)子節(jié)點(diǎn)定義為父節(jié)點(diǎn),所述節(jié)點(diǎn)缺少子節(jié)點(diǎn)定義為葉節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述約束方程集合的一子集合;(iii)對(duì)于葉節(jié)點(diǎn)的一子集合,并行地解決以滿(mǎn)足每個(gè)所述葉節(jié)點(diǎn)的所述約束方程;(iv)對(duì)于已滿(mǎn)足的所述子節(jié)點(diǎn)的約束方程的每個(gè)父節(jié)點(diǎn),基于已滿(mǎn)足的所述對(duì)應(yīng)子節(jié)點(diǎn)的所述約束方程,求解以滿(mǎn)足所述父節(jié)點(diǎn)的約束方程;(v)重復(fù)(iv),直到所述根節(jié)點(diǎn)的約束方程已經(jīng)被滿(mǎn)足;(vi)將每個(gè)父節(jié)點(diǎn)的已滿(mǎn)足的約束方程傳播到每個(gè)父節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn),從而確定滿(mǎn)足所述約束集合的模型的配置;(vii)輸出與所確定的配置相對(duì)應(yīng)的實(shí)體;和(viii)經(jīng)由所述至少一個(gè)顯示設(shè)備顯示所述確定的配置的所述輸出實(shí)體。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,還提供:一種用于確定包括滿(mǎn)足一約束集合的實(shí)體的集合的一模型的配置的方法,其特征在于,所述方法包括:(a)提供所述實(shí)體的集合和所述約束集合,所述實(shí)體的集合由多個(gè)變量表示的,每個(gè)約束對(duì)應(yīng)于與所述多個(gè)變量的子集合互相關(guān)聯(lián)的至少一約束方程;(b)生成至少一樹(shù),所述至少一樹(shù)包括多個(gè)節(jié)點(diǎn),所述至少一樹(shù)包括一根節(jié)點(diǎn),所述根節(jié)點(diǎn)具有至少一子節(jié)點(diǎn),所述節(jié)點(diǎn)具有所述至少一個(gè)子節(jié)點(diǎn)定義為父節(jié)點(diǎn),所述節(jié)點(diǎn)缺少所述至少一子節(jié)點(diǎn)定義為葉節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述約束方程式的一子集合;(c)對(duì)于葉節(jié)點(diǎn)的一子集合,并行地解決以滿(mǎn)足每個(gè)所述葉節(jié)點(diǎn)的所述約束方程;(d)對(duì)于已滿(mǎn)足的所述子節(jié)點(diǎn)的約束方程的每個(gè)父節(jié)點(diǎn),基于已滿(mǎn)足的所述對(duì)應(yīng)子節(jié)點(diǎn)的所述約束方程,求解以滿(mǎn)足所述父節(jié)點(diǎn)的約束方程;(e)重復(fù)(d)直到所述根節(jié)點(diǎn)的所述約束方程已經(jīng)被滿(mǎn)足;(f)將所述每個(gè)父節(jié)點(diǎn)的已滿(mǎn)足的約束方程傳播到每個(gè)父節(jié)點(diǎn)的相應(yīng)子節(jié)點(diǎn),從而確定滿(mǎn)足所述約束集合的模型的配置;和(g)輸出與所確定的配置的相對(duì)應(yīng)的實(shí)體。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,還提供:可以加載到通過(guò)網(wǎng)絡(luò)連接到一客戶(hù)端計(jì)算機(jī)的一服務(wù)器上的一計(jì)算機(jī)程序,使得運(yùn)行所述計(jì)算機(jī)程序的所述服務(wù)器構(gòu)成根據(jù)本說(shuō)明書(shū)中描述的任何實(shí)施例的系統(tǒng)中的一服務(wù)器。
根據(jù)本發(fā)明的教導(dǎo)的一個(gè)實(shí)施例,還提供:可以加載到通過(guò)網(wǎng)絡(luò)連接到一服務(wù)器的一計(jì)算機(jī)上的一計(jì)算機(jī)程序,使得運(yùn)行所述計(jì)算機(jī)程序的所述計(jì)算機(jī)構(gòu)成根據(jù)本說(shuō)明書(shū)中描述的任何實(shí)施例的系統(tǒng)中的一客戶(hù)端計(jì)算機(jī)。
【附圖說(shuō)明】
僅通過(guò)示例的方式,參考附圖來(lái)描述本發(fā)明,其中:
圖1是根據(jù)本發(fā)明的一實(shí)施例的用于執(zhí)行用于確定具有一實(shí)體集合并滿(mǎn)足對(duì)應(yīng)的一約束集合的模型的配置的程序的一流程圖;
圖2繪示具有多代的樹(shù)的示例;
圖3是根據(jù)本發(fā)明一實(shí)施例的一樹(shù)生成程序的流程圖;
圖4是根據(jù)本發(fā)明一實(shí)施例的解決滿(mǎn)足一子節(jié)點(diǎn)的約束方程的流程圖;
圖5是根據(jù)本發(fā)明一實(shí)施例的求解以滿(mǎn)足一父節(jié)點(diǎn)的約束方程的流程圖;
圖6是根據(jù)本發(fā)明一實(shí)施例的用于調(diào)整一子節(jié)點(diǎn)的已解決的約束方程的流程圖;
圖7A是用于執(zhí)行圖1的程序的一示例性的處理器的通常表述的示意圖;
圖7B是用于容納圖7A的處理器的一計(jì)算機(jī)系統(tǒng)的方塊圖。
圖8繪示出一幾何約束滿(mǎn)足問(wèn)題的示例;
圖9示出了表示圖8的所述幾何約束滿(mǎn)足問(wèn)題的方程的一線性化系統(tǒng)的一矩陣;
圖10A-10B示出從圖9的所述矩陣生成的一樹(shù);
圖11A-11D示出了對(duì)應(yīng)于圖10B的所述樹(shù)的節(jié)點(diǎn)的狀態(tài)矢量的統(tǒng)計(jì)矩陣;
圖12A-12C示出了對(duì)應(yīng)于圖10B的所述樹(shù)的節(jié)點(diǎn)的狀態(tài)矢量的預(yù)測(cè)統(tǒng)計(jì)矩陣;
圖13A-13B示出了對(duì)應(yīng)于圖10B的所述樹(shù)的節(jié)點(diǎn)的狀態(tài)矢量的組合統(tǒng)計(jì)矩陣;
圖14A-14B示出了對(duì)應(yīng)于圖10B的所述樹(shù)的節(jié)點(diǎn)的索引矩陣;
圖15A-15D示出了用于調(diào)整圖10B的所述樹(shù)的節(jié)點(diǎn)的狀態(tài)矢量的調(diào)整矩陣。
【具體實(shí)施方式】
本發(fā)明是一種用于提供用于確定具有一實(shí)體集合和一約束集合的模型的配置的功能的方法和系統(tǒng)。
參考附圖和相應(yīng)的描述,可以更好地理解根據(jù)本發(fā)明的方法和系統(tǒng)的原理和操作。
先前開(kāi)發(fā)的用于建模隨機(jī)程序的一種方法(稱(chēng)為多尺度自回歸估計(jì)(MAR估計(jì))),可以應(yīng)用于由具有唯一屬性的矩陣表示的線性方程組的求解系統(tǒng)。MAR估計(jì)是具有一復(fù)雜樹(shù)狀結(jié)構(gòu)的用于時(shí)間的卡爾曼濾波器的歸納。為了應(yīng)用MAR估計(jì)來(lái)求解這種線性方程系統(tǒng),所述隨機(jī)程序問(wèn)題用數(shù)值計(jì)算表示。然而,在MAR估計(jì)的全文中約束方程的實(shí)現(xiàn)不是直接的,并且依賴(lài)于上述矩陣的唯一屬性的識(shí)別。因此,盡管許多單獨(dú)的組件在其他領(lǐng)域中是已知的,但是這里描述的實(shí)施例不是這些組件的直接組合,而是相輔相成的技術(shù),其提供增強(qiáng)的結(jié)果和降低的計(jì)算復(fù)雜性和計(jì)算時(shí)間。
本文在此公開(kāi)的實(shí)施例適用于由一實(shí)體集合定義的各種模型,其滿(mǎn)足一約束集合,并且當(dāng)應(yīng)用于CAD系統(tǒng)時(shí)具有特定數(shù)值。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“實(shí)體”或“多個(gè)實(shí)體”通常指由至少一個(gè)變量表示的對(duì)象,其可以被設(shè)置和修改。例如在CAD系統(tǒng)中,實(shí)體是不同尺寸的幾何實(shí)體。二維幾何實(shí)體的示例包括但不限于線段,圓,橢圓,樣條,弧等。三維幾何實(shí)體的示例包括但不限于平面,球體,圓錐體,截頭體,立方體,圓柱體等。
在本文件的全文中,術(shù)語(yǔ)“約束”或“多個(gè)約束”通常是指對(duì)單一實(shí)體或在一實(shí)體組上的限制。對(duì)實(shí)體或?qū)嶓w組的約束由一個(gè)或多個(gè)約束方程表示,而實(shí)體由相應(yīng)的變量表示。每個(gè)約束方程提供與實(shí)體相對(duì)應(yīng)的變量的子集合之間的一相互關(guān)系。一旦設(shè)置了一模型的一約束,無(wú)論對(duì)模型的實(shí)體做出的修改如何,都應(yīng)所述滿(mǎn)足所述約束。
需要注意,一模型可以是完全約束的,過(guò)度約束的或不足約束的。這意味著約束方程的數(shù)量可以分別等于模型的自由度(即變量的數(shù)量),大于模型的自由度或小于所述模型的自由度。
需要注意,在某些系統(tǒng)中,約束方程可能彼此矛盾,因此,不能保持所述約束。因此,本文公開(kāi)的實(shí)施例涉及缺乏矛盾的約束方程的系統(tǒng)。此外,本文公開(kāi)的實(shí)施例涉及具有至少一個(gè)自由度的模型。
上述實(shí)體是在二維或三維空間中的對(duì)象,并且可以由笛卡爾坐標(biāo)系統(tǒng)表示,例如(x,y)或(x,y,z)。注意,所述實(shí)體的表示也可以通過(guò)使用極坐標(biāo)系來(lái)完成。使用極坐標(biāo)在滿(mǎn)足某些約束方面可能是有利的。例如,通過(guò)使用極坐標(biāo)來(lái)優(yōu)選地滿(mǎn)足限制一線段可以被定位的角度的約束。因此,在一優(yōu)選實(shí)施例中,所述實(shí)體由笛卡爾坐標(biāo)和極坐標(biāo)表示。因此,單個(gè)線段由六個(gè)變量表示:兩個(gè)x變量,兩個(gè)y變量,大小變量和角度變量。根據(jù)某些實(shí)施例,求解約束方程涉及選擇在解決所述方程中使用與一模型相關(guān)聯(lián)的變量集合。
在本文中,數(shù)學(xué)方程式和公式被呈現(xiàn)以便更好地說(shuō)明根據(jù)所呈現(xiàn)的實(shí)施例的方法和系統(tǒng)。在這樣的方程和公式中,矩陣由大寫(xiě)粗體字斜體字母(例如Q)表示。矢量由小寫(xiě)粗字斜體字母(例如q)表示。標(biāo)量由小寫(xiě)斜體字母(例如q)表示。矩陣和矢量的上標(biāo)表示矩陣和矢量的迭代或?qū)崿F(xiàn)。矩陣Q的轉(zhuǎn)置寫(xiě)為QT。矩陣Q的逆矩陣是Q-1
還要注意,如同可以用于實(shí)現(xiàn)本文所描述的實(shí)施例的高級(jí)編程語(yǔ)言中所常見(jiàn)的,本文描述的矢量和矩陣的索引從零開(kāi)始。
在詳細(xì)解釋本發(fā)明的至少一個(gè)實(shí)施例之前,應(yīng)當(dāng)理解,本發(fā)明不必將其應(yīng)用限于在下面的描述中闡述的部件和/或方法的結(jié)構(gòu)和布置的細(xì)節(jié),和/或在附圖和/或示例中示出。本發(fā)明能夠具有其他實(shí)施例或者以各種方式實(shí)踐或執(zhí)行。最初,在本說(shuō)明書(shū)中,參考的方向,例如上下,頂部和底部等。這些方向參考僅是示例性的,以說(shuō)明本發(fā)明及其實(shí)施例。
現(xiàn)在參考圖1,用于解決表示具有一實(shí)體集合并滿(mǎn)足對(duì)應(yīng)的一約束集合的一模型的方程的系統(tǒng)的程序10的示例性流程圖。解決一模型的方程的所述系統(tǒng)在本文中可互換地稱(chēng)為確定所述模型的配置或解決所述模型的約束方程。在步驟100中,提供所述實(shí)體集合和應(yīng)用于所述實(shí)體的對(duì)應(yīng)約束。所述實(shí)體和所述約束可以由用戶(hù)通過(guò)用戶(hù)輸入設(shè)備提供或者從存儲(chǔ)器模塊加載,如圖7A和7B所討論的。
如先前在CAD系統(tǒng)的文中提到的,幾何模型由一幾何實(shí)體集合表示。在優(yōu)選配置中,所述幾何實(shí)體可以以各種方式配置,在對(duì)應(yīng)滿(mǎn)足的所述實(shí)體的約束。典型的幾何實(shí)體和約束由一非線性方程系統(tǒng)表示,其中非線性方程系統(tǒng)表示置于一組實(shí)體上的一個(gè)或多個(gè)約束。
這樣的非線性系統(tǒng)可以更容易地表示為約束矢量方程F(z)=y(tǒng),其中F(z)是矢量函數(shù),z是矢量變量,描述所述模型的幾何實(shí)體,y是約束非線性方程組的“測(cè)量矢量“。K長(zhǎng)度的可變矢量z具有分量z0,z1,…,zk-1。類(lèi)似地,N長(zhǎng)度測(cè)量矢量y具有分量y0,y1,…,yN-1。
最典型地,通過(guò)首先線性化所述非線性方程來(lái)產(chǎn)生對(duì)應(yīng)于所述非線性系統(tǒng)的一近似線性系統(tǒng)來(lái)求解這種非線性方程組。在步驟102中,所述非線性方程組被線性化以產(chǎn)生一線性方程的系統(tǒng)。一優(yōu)選的線性化方法是基于順序線性化的迭代方法。因此,所述矢量函數(shù)F(z)可以表示如下:
F(z)=F(z0)+A0(z-z0)+… (1)
矢量z0表示用于第一迭代步驟的所述線性近似的一初始猜測(cè)。矩陣A0是在z0處估計(jì)的矢量函數(shù)F(z)的偏導(dǎo)數(shù)的一矩陣,A0的第i行和第j列可以表示如下:
優(yōu)選地,A0是具有N行和K列的一二維度矩陣。在優(yōu)選實(shí)施例中,A0的所述行對(duì)應(yīng)于所述模型的所述約束方程,A0的所述列對(duì)應(yīng)于所述模型的所述變量。
由于方程的所述非線性系統(tǒng)被線性化,在所述第一迭代步驟上,不是求解非線性方程組F(z)=y(tǒng)的z,而是求解所述線性系統(tǒng)A0z=y(tǒng)0。
忽略表達(dá)式(1)中的非線性項(xiàng),矢量y0可以表示為:
y0=y(tǒng)-F(z0)+A0z0 (3)
注意,方程組A0z=r0通??梢员華0z=y(tǒng)0更方便求解,其中r0是所述初始猜測(cè)矢量z0的殘差矢量。
因此,殘差矢量r0可以表示如下:
r0=A0z0–y0=F(z0)–y (4)
如果矢量z是A0z=r0的解,則A0z=y(tǒng)0的解z1由z0和z的差給出,即z1=z0-z。
隨后,在第二線性化迭代步驟中,提供z1作為初始猜測(cè)。因此,對(duì)于迭代k+1,要求解的線性系統(tǒng)是Akz=y(tǒng)k,
其中矩陣Ak是在zk處估計(jì)的矢量函數(shù)F(z)的偏導(dǎo)數(shù)的矩陣,類(lèi)似于等式(2)中的A0。具體地,等式(2)可以推廣為
類(lèi)似第一非線性迭代,當(dāng)忽略等式(1)的非線性項(xiàng)時(shí),矢量yk可表示為yk=y(tǒng)-F(zk)+Akzk。因此,不是求解Akz=y(tǒng)k,而是求解方程組Akz=rk,其中rk是所述矢量zk的殘差矢量。因此,所述殘差矢量rk可以表示如下:
rk=Akzk-yk=F(zk)-y (5)
持續(xù)連續(xù)線性化方法的迭代,直到殘差矢量rk的范數(shù)夠小能提供一期望的精度。
如隨后將描述的,由Akz=y(tǒng)k表示的所述近似的線性方程組的所述解的計(jì)算復(fù)雜度通過(guò)使用特定結(jié)構(gòu)的一矩陣Ak而減少。
為了方便起見(jiàn),將參考矩陣A來(lái)討論矩陣A0,A1,A2等的集合的一般結(jié)構(gòu)和性質(zhì)。如本文所述的解決所述約方程統(tǒng)的本方法利用所述矩陣A的若干屬性。
需要理解所述A是一稀疏矩陣(sparse matrix)。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“稀疏矩陣”通常是指其中矩陣的大多數(shù)元素為零的矩陣。在本實(shí)施例的所述特定矩陣中,所述矩陣A是逐行稀疏的。換句話說(shuō),沿著A的每行的大多數(shù)元素是零。例如,在許多典型的CAD模型中,用于表示所述實(shí)體的變量的總數(shù)在數(shù)千到數(shù)十萬(wàn)的數(shù)量級(jí)上。然而,用于表示所述方程組的每個(gè)方程的變量的數(shù)量通常小于10。這對(duì)應(yīng)于具有數(shù)千列的矩陣,而每行具有小于10個(gè)的非零元素。
如隨后將描述的,A的行稀疏性允許使用遠(yuǎn)小于A的維度的矩陣來(lái)求解所述線性方程組。由于對(duì)于矩陣的典型操作涉及計(jì)算復(fù)雜的操作,例如,逆矩陣,使用減小維度的矩陣顯著降低計(jì)算復(fù)雜度。
注意,雖然所述矩陣A0,A1,A2等的元素的值可以不同,但是所述矩陣的一般結(jié)構(gòu)和稀疏度從所述線性化步驟102的迭代到迭代保持相同。這意味著,所述矩陣的非零元素的位置從迭代到迭代是維持的。
還要注意,雖然如上所述的方法屬于具有由在步驟102中執(zhí)行迭代線性化的一非線性方程組表示屬于模型的實(shí)體和約束,但是其他實(shí)施例是可能的,其中所述模型的實(shí)體和約束具有固有的線性關(guān)系,因此不需要如步驟102中所述的線性化。
為了便于利用前述矩陣的所述稀疏性質(zhì),矩陣A表示為樹(shù)或包括多個(gè)樹(shù)的一座森林。
如圖1所示,在步驟104中示出了作為一個(gè)樹(shù)或一座森林的所述相關(guān)矩陣的表示。如隨后將更詳細(xì)地描述的,將所述矩陣表示為一個(gè)樹(shù)或樹(shù)的集合有助于高效,精確和減少計(jì)算復(fù)雜性地求解所述近似線性方程組。
現(xiàn)在參考圖2,一個(gè)樹(shù)20的一個(gè)例子。所述樹(shù)20包括多個(gè)節(jié)點(diǎn)210A,220A-220B,230A-230E和240A-240D。所述樹(shù)20的節(jié)點(diǎn)由多個(gè)分支250A-250B,260A-260E和270A-270D連接。所述樹(shù)20的節(jié)點(diǎn)包括一根節(jié)點(diǎn)210A和多個(gè)子節(jié)點(diǎn)220A-220B,230A-230E和240A-240D。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“根節(jié)點(diǎn)”通常是指一樹(shù)的所有其他節(jié)點(diǎn)從其下降的節(jié)點(diǎn)。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“子節(jié)點(diǎn)”或“多個(gè)子節(jié)點(diǎn)”通常指的是從所述根節(jié)點(diǎn)直接或間接下降的節(jié)點(diǎn)。
在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“父節(jié)點(diǎn)”通常指一子節(jié)點(diǎn)從其直接下降的所述節(jié)點(diǎn)。例如,所述子節(jié)點(diǎn)220A的所述父節(jié)點(diǎn)是所述根節(jié)點(diǎn)210A,所述子節(jié)點(diǎn)240C的所述父節(jié)點(diǎn)是所述節(jié)點(diǎn)230D。注意每個(gè)子節(jié)點(diǎn)只有一個(gè)父節(jié)點(diǎn)。相反,每個(gè)父節(jié)點(diǎn)可以具有多個(gè)子節(jié)點(diǎn)。例如,節(jié)點(diǎn)230D具有兩個(gè)子節(jié)點(diǎn):所述子節(jié)點(diǎn)240C和所述子節(jié)點(diǎn)240D。在本說(shuō)明書(shū)的全文中,所述術(shù)語(yǔ)“葉節(jié)點(diǎn)”通常指的是缺少子節(jié)點(diǎn)的一節(jié)點(diǎn)。例如,所述節(jié)點(diǎn)230B-230C,230E和240A-240D并且是所述葉節(jié)點(diǎn)。顯而易見(jiàn),所述根節(jié)點(diǎn)缺少一父節(jié)點(diǎn)。
應(yīng)所述顯而易見(jiàn)的是,所述樹(shù)20的命名約定和結(jié)構(gòu)大體類(lèi)似于人類(lèi)家譜樹(shù)的命名約定和結(jié)構(gòu),并且用于描一樹(shù)的節(jié)點(diǎn)之間的關(guān)系的命名約定通常類(lèi)似于用于描述家譜的成員之間的關(guān)系。
在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“同級(jí)節(jié)點(diǎn)”通常是指共享一父節(jié)點(diǎn)的節(jié)點(diǎn)。例如,所述節(jié)點(diǎn)240A和240B是同級(jí)節(jié)點(diǎn)。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“祖父節(jié)點(diǎn)”通常是指作為一子節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)的一節(jié)點(diǎn)。例如,所述節(jié)點(diǎn)240A的祖父節(jié)點(diǎn)是所述節(jié)點(diǎn)220A。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“孫節(jié)點(diǎn)”通常指作為一子節(jié)點(diǎn)的一子節(jié)點(diǎn)的一節(jié)點(diǎn)。例如,所述節(jié)點(diǎn)240A是所述根節(jié)點(diǎn)220A的孫節(jié)點(diǎn),并且所述節(jié)點(diǎn)230B是所述根節(jié)點(diǎn)210A的孫節(jié)點(diǎn)。
根據(jù)上述定義,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),對(duì)于曾祖父母,曾曾祖父母等的類(lèi)似定義應(yīng)當(dāng)是顯而易見(jiàn)的。在本說(shuō)明書(shū)的全文中,術(shù)語(yǔ)“祖先節(jié)點(diǎn)”或“祖先”通常是指另一節(jié)點(diǎn)直接或間接從其下降的一節(jié)點(diǎn)。例如,所述根節(jié)點(diǎn)210A是所述節(jié)點(diǎn)220A-220B,230A-230E和240A-240D中的每一個(gè)的一祖先節(jié)點(diǎn),并且所述節(jié)點(diǎn)220B是所述節(jié)點(diǎn)230D,230E,240C和240D的一祖先節(jié)點(diǎn)。
顯然,所述生成的樹(shù)具有固有的世代結(jié)構(gòu),其中最舊世代的節(jié)點(diǎn)位于所述樹(shù)的頂部,最新世代的節(jié)點(diǎn)位于所述樹(shù)的底部。因此,隨著從所述樹(shù)的頂部(即,根節(jié)點(diǎn))朝向所述樹(shù)的底部進(jìn)行進(jìn)展,所述節(jié)點(diǎn)的世代變得更年輕。類(lèi)似地,隨著從樹(shù)的底部朝向樹(shù)的頂部進(jìn)行進(jìn)展,節(jié)點(diǎn)的世代變得更老。參考所述樹(shù)20的示例更好地理解所生成的樹(shù)的世代結(jié)構(gòu)。
繼續(xù)參考圖2,所述樹(shù)20具有四代的節(jié)點(diǎn)。一第一代的節(jié)點(diǎn)210優(yōu)選地僅包括位于所述樹(shù)結(jié)構(gòu)的頂部的唯一所述根節(jié)點(diǎn)210A。第二代的節(jié)點(diǎn)220優(yōu)選地包括第一代的所述節(jié)點(diǎn)210是父節(jié)點(diǎn)的所有所述子節(jié)點(diǎn)。在所述樹(shù)20的示例中,第二代的節(jié)點(diǎn)220包括所述節(jié)點(diǎn)220A-220B。第三代的節(jié)點(diǎn)230優(yōu)選地包括第二代的所述節(jié)點(diǎn)220是父節(jié)點(diǎn)的所有所述子節(jié)點(diǎn)。在所述樹(shù)20的示例中,第三代的所述節(jié)點(diǎn)230包括所述節(jié)點(diǎn)230A-230D。第四代的所述節(jié)點(diǎn)240優(yōu)選地包括第三代的所述節(jié)點(diǎn)230是父節(jié)點(diǎn)的所有所述子節(jié)點(diǎn)。在所述樹(shù)20的示例中,第四代的所述節(jié)點(diǎn)240包括所述節(jié)點(diǎn)240A-240D。
在步驟104中生成或等效地建構(gòu)的所述樹(shù)的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于類(lèi)似一線性方程組的一行或多行的一個(gè)約束方程或多個(gè)約束方程。
以這樣的方式生成樹(shù),使得所述樹(shù)滿(mǎn)足若干必要條件以及若干優(yōu)選條件。必要的條件提供了程序的收斂,這將在下面更詳細(xì)地描述。因此,一個(gè)這樣的必要條件要求對(duì)應(yīng)于一特定節(jié)點(diǎn)和所述特定節(jié)點(diǎn)的所述父節(jié)點(diǎn)的約束方程是線性獨(dú)立的。
此外,以下兩個(gè)必要條件對(duì)應(yīng)于樹(shù)的結(jié)構(gòu)。與樹(shù)的結(jié)構(gòu)相對(duì)應(yīng)的第一必要條件要求為如果在一特定節(jié)點(diǎn)和所述特定節(jié)點(diǎn)的一祖先中是用于表示對(duì)應(yīng)于一實(shí)體的一變量,則在所述祖先節(jié)點(diǎn)和所述特定節(jié)點(diǎn)之間的中間節(jié)點(diǎn)中也是用所述相同的變量表示。例如,如果在所述葉節(jié)點(diǎn)240A和所述根節(jié)點(diǎn)210A中是用一變量表示,則優(yōu)選地,在所述節(jié)點(diǎn)220A和230A中也是用所述相同的變量表示。
關(guān)于樹(shù)結(jié)構(gòu)的第二必要條件要求為從兩個(gè)不同分支下降的兩個(gè)節(jié)點(diǎn)中表示的任何變量也被作為從所述兩個(gè)節(jié)點(diǎn)之間的直到并包括兩個(gè)節(jié)點(diǎn)的共同祖先的所有父節(jié)點(diǎn)之用。例如,如果一變量出現(xiàn)在所述節(jié)點(diǎn)240A和230C中,則優(yōu)選地,所述相同的變量會(huì)出現(xiàn)在所述節(jié)點(diǎn)230A和220A中。在另一示例中,假設(shè)一變量出現(xiàn)在所述節(jié)點(diǎn)240A和240C中,則優(yōu)選地,所述相同的變量會(huì)出現(xiàn)在所述節(jié)點(diǎn)230A,220A,230D,220B和210A中。
關(guān)于優(yōu)選條件,優(yōu)選樹(shù)包括相對(duì)大量的分支。因此,更多數(shù)量的分支允許并行執(zhí)行多個(gè)節(jié)點(diǎn)上的計(jì)算。并行計(jì)算技術(shù)(例如,多核處理器和云計(jì)算系統(tǒng))的出現(xiàn)有助于利用這種優(yōu)選的樹(shù)結(jié)構(gòu)。
此外,優(yōu)選地,樹(shù)被構(gòu)造為使得除了滿(mǎn)足上述必要條件之外,每個(gè)節(jié)點(diǎn)表示相對(duì)少數(shù)量的約束方程。在最優(yōu)選的形式中,每個(gè)節(jié)點(diǎn)表示單一一個(gè)約束方程。優(yōu)選地,每個(gè)節(jié)點(diǎn)中的變量的數(shù)量相對(duì)較小(而樹(shù)中的節(jié)點(diǎn)的數(shù)量可以相對(duì)較多)。所述優(yōu)選條件還有助于降低如前所述的計(jì)算復(fù)雜度。
每個(gè)節(jié)點(diǎn)中相對(duì)較小數(shù)量的變量允許使用減小尺寸的矩陣,以便降低計(jì)算復(fù)雜度。如前所述,在典型的CAD模型中,用于表示方程組中的每個(gè)約束方程的變量的數(shù)量通常小于10。因此,用于矩陣運(yùn)算的所述矩陣,在特定的逆矩陣中是小于10x10的矩陣。
假設(shè)每個(gè)節(jié)點(diǎn)中的變量的最大數(shù)目小于一固定數(shù)目d,則使用程序10求解方程組的計(jì)算復(fù)雜度近似為因此,計(jì)算復(fù)雜度隨著方程組中的方程的數(shù)量線性地增加。因此,隨著約束方程的數(shù)量N的增長(zhǎng),存在計(jì)算復(fù)雜度的線性O(shè)(N)增長(zhǎng)。
注意,上述計(jì)算復(fù)雜度的估計(jì)是在不考慮計(jì)算的并行化的情況下完成的。在所述樹(shù)的不同分支上的計(jì)算可以并行進(jìn)行。對(duì)于大多數(shù)常規(guī)樹(shù),例如二元樹(shù),分支的最大長(zhǎng)度可以近似為O(log(N)),因此對(duì)于這樣的樹(shù),復(fù)雜度的增長(zhǎng)大約為O(log(N))。
現(xiàn)在參考圖3是根據(jù)步驟104用于生成一樹(shù)的一樹(shù)生成程序30的非限制性示例性流程圖。所述樹(shù)生成程序30是用于生成滿(mǎn)足上述條件的樹(shù)的程序的示例。注意,可以存在滿(mǎn)足上述條件的用于生成樹(shù)的其他方法,并且程序30僅是用于樹(shù)生成的示例性程序。
程序30的結(jié)果是將所述矩陣A的約束方程放置在所述生成的樹(shù)的節(jié)點(diǎn)處。為了說(shuō)明程序30的目的,約束方程由小寫(xiě)的黑體斜體字下劃線字母(例如e)表示。
生成的樹(shù)的節(jié)點(diǎn)由小寫(xiě)斜體下標(biāo)字母表示。在下面的示例中,所有節(jié)點(diǎn)只包含一個(gè)約束方程。為了方便,特定節(jié)點(diǎn)和放置在所述特定節(jié)點(diǎn)中的方程共享相同的索引值。例如,如果第一方程e0被放置在所述根節(jié)點(diǎn)中,則根節(jié)點(diǎn)被表示為s0。
所述方程包括對(duì)應(yīng)于矩陣A的行的一下標(biāo)。一方程的變量集合由大寫(xiě)粗體斜體下劃線字母(例如W)表示。與第i個(gè)方程ei對(duì)應(yīng)的變量集合由Wi表示。作為簡(jiǎn)化符號(hào),一節(jié)點(diǎn)的所述方程可以寫(xiě)為所述方程變量的函數(shù),如ei(Wi)。
如前所述,在一優(yōu)選實(shí)施例中,所述方程對(duì)應(yīng)于所述矩陣A0,A1,A2等的行,一般稱(chēng)為矩陣A?;叵胨鼍仃嘇具有N行和K列,其中N是約束方程的數(shù)量,K是變量的數(shù)量。短語(yǔ)“將一方程放入一節(jié)點(diǎn)”或“將一方程放置在節(jié)點(diǎn)中”是指將一約束方程與一特定節(jié)點(diǎn)相關(guān)聯(lián)的動(dòng)作。注意,一節(jié)點(diǎn)的所述變量集合可以可互換地稱(chēng)為一節(jié)點(diǎn)的變量的一矢量或者一節(jié)點(diǎn)的“狀態(tài)矢量”。
在步驟302中,創(chuàng)建一新樹(shù)。在步驟304中,在步驟302中創(chuàng)建的所述樹(shù)中創(chuàng)建一根節(jié)點(diǎn),并且將一約束方程放置在所述根節(jié)點(diǎn)中。注意,來(lái)自矩陣的任何方程可以在步驟304中被放置在所述根節(jié)點(diǎn)中。假設(shè)一方程ei(Wi)被放置在步驟304中創(chuàng)建的所述根節(jié)點(diǎn)中,則下一步驟306是確定是否存也可以放置在所述根節(jié)點(diǎn)中其他方程。
如果存在具有所述變量Wi集合的其他特定方程,其中Wi是Wj的一子集合,或者Wj是Wi的一子集合,則與變量集合Wj相關(guān)聯(lián)的所述方程被放置在與任何額外變量對(duì)應(yīng)于其他特定方程的所述根節(jié)點(diǎn)中。
隨后,檢查剩余的約束方程是否有任何后續(xù)的方程與所述根節(jié)點(diǎn)共享任何變量。這樣的方程集合被稱(chēng)為集合G。如果G不為空的(即,存在與所述根節(jié)點(diǎn)共享一些變量的至少一個(gè)其他方程),所述根節(jié)點(diǎn)的一子節(jié)點(diǎn)伴隨共享的變量用于創(chuàng)建與所述方程之一,并且所述方程被放置在所述根節(jié)點(diǎn)的所述子節(jié)點(diǎn)中。所述子節(jié)點(diǎn)的創(chuàng)建和放置所述約束方程在所述根節(jié)點(diǎn)的所述子節(jié)點(diǎn)中在步驟310中完成。隨后,類(lèi)似于步驟306,利用所述子節(jié)點(diǎn)的變量的子集合條件檢查集合G的剩余方程集合。在步驟312中,滿(mǎn)足所述子集合條件的所述集合G的任何方程被加到所述子節(jié)點(diǎn)。注意,如果G是空的,則所述樹(shù)生成程序30檢查是否所有等式都在所述樹(shù)中表示。在判定步驟308中檢查集合G是否為空。
一旦在步驟312中滿(mǎn)足所述子集合條件的所有約束方程已經(jīng)被加到所述特定子節(jié)點(diǎn),則所述根節(jié)點(diǎn)的更多子節(jié)點(diǎn)可以被創(chuàng)建。步驟314檢查在所述集合G中是否存在沒(méi)有被先前創(chuàng)建的子節(jié)點(diǎn)所表示的更多方程。如果存在,則創(chuàng)建所述根節(jié)點(diǎn)的新子節(jié)點(diǎn),并且將G中的方程之一放置在所述新子節(jié)點(diǎn)中。這等效于檢查在與所述根節(jié)點(diǎn)共享變量的集合G中是否存在任何更多的方程。如果沒(méi)有更多這樣的方程,則已經(jīng)創(chuàng)建所述根節(jié)點(diǎn)的所有子節(jié)點(diǎn),并且程序30繼續(xù)到創(chuàng)建所述根節(jié)點(diǎn)的多個(gè)子節(jié)點(diǎn)的所述子節(jié)點(diǎn)。
步驟316類(lèi)似于步驟308。然而,每個(gè)所述子節(jié)點(diǎn)的一新集合G被創(chuàng)建。因此,對(duì)于每個(gè)子節(jié)點(diǎn),如果對(duì)應(yīng)的所述集合G不為空的(即,存在與所述根節(jié)點(diǎn)共享一些變量的至少一個(gè)其他方程),則所述子節(jié)點(diǎn)的一子節(jié)點(diǎn)被創(chuàng)建(步驟310),并且具有共享變量的方程的其中一被放置在所述子節(jié)點(diǎn)的所述子節(jié)點(diǎn)中。這樣,重復(fù)步驟308-314,直到創(chuàng)建所述根節(jié)點(diǎn)的所有子節(jié)點(diǎn)的子節(jié)點(diǎn),并且在每個(gè)節(jié)點(diǎn)中放置所有相關(guān)聯(lián)的方程(即,所有世代的節(jié)點(diǎn)已經(jīng)具有所有關(guān)聯(lián)方程已經(jīng)被創(chuàng)建并放置在每個(gè)節(jié)點(diǎn)中)。
注意,在相關(guān)集合G為空的任何點(diǎn),所述程序移動(dòng)到步驟318。在步驟318中,檢查所述矩陣的所述約束方程以便放置在所述樹(shù)先前創(chuàng)建的節(jié)點(diǎn)中的任一個(gè)中。如果所述矩陣的所有方程被視為所述樹(shù)的節(jié)點(diǎn),則程序30移動(dòng)到最終步驟320。然而,如果不是所有方程都與創(chuàng)建一新樹(shù)有關(guān)系(步驟302),并且為了一新樹(shù)重復(fù)后續(xù)步驟304-318。這導(dǎo)致所述方程組被表示為一森林的樹(shù)。注意,森林的每個(gè)樹(shù)可以被獨(dú)立地處理,并且這樣可以降低計(jì)算復(fù)雜度。
作為步驟302-318的結(jié)果,可以構(gòu)造為不滿(mǎn)足全部上述提及所有必要條件的樹(shù)。具體地,特定節(jié)點(diǎn)和所述特定節(jié)點(diǎn)的祖先的方程變量不一定在所有中間節(jié)點(diǎn)的方程中。此外,放置在從兩個(gè)不同分支下降的兩個(gè)節(jié)點(diǎn)中的方程變量可以不被放置在兩個(gè)節(jié)點(diǎn)之間的所有父節(jié)點(diǎn)中,直到且包括兩個(gè)節(jié)點(diǎn)的共同祖先。上述情況在下文中稱(chēng)為“沖突”。沖突在步驟320中處理。
因此,如果在任何中間節(jié)點(diǎn)中不存在一特定節(jié)點(diǎn)中和所述特定節(jié)點(diǎn)的祖先的一方程變量,則將所述變量添加到這樣的中間節(jié)點(diǎn)的狀態(tài)矢量。同樣地,如果在兩個(gè)節(jié)點(diǎn)之間的直到并包括兩個(gè)節(jié)點(diǎn)的共同祖先的任何父節(jié)點(diǎn)中不存在來(lái)自?xún)蓚€(gè)不同分支的兩個(gè)節(jié)點(diǎn)中的一方程變量,則將所述變量添加到狀態(tài)矢量這樣的節(jié)點(diǎn)。
注意,步驟320中的碰撞處理是強(qiáng)力方法,其在某些情況下可能是理想的。然而,可能出現(xiàn)這樣如在步驟320中描述的沖突的處理可能導(dǎo)致大量的變量被添加到樹(shù)的多代中的節(jié)點(diǎn)的情況。在這種情況下,其他碰撞處理方法可能是優(yōu)選的,以避免增加的計(jì)算復(fù)雜性。
如前所述,在步驟104中,相關(guān)矩陣被表示為樹(shù)或包括多個(gè)樹(shù)的森林。表示矩陣的樹(shù)的數(shù)量是矩陣的結(jié)構(gòu)的函數(shù)。具體地,樹(shù)的數(shù)目是與實(shí)體和約束相關(guān)的約束方程的函數(shù),如參考樹(shù)生成程序30所討論的。
這里要注意,由于如前所述,線性化矩陣的一般結(jié)構(gòu)和稀疏度不會(huì)在步驟102的迭代到迭代之間改變,所以在步驟104中生成樹(shù)或森林需要僅執(zhí)行一次。然而,與所述實(shí)體相關(guān)聯(lián)的所述變量的數(shù)值從步驟102的迭代到迭代之間改變,并且因此,在步驟104中生成的所述樹(shù)或多個(gè)樹(shù)的所述節(jié)點(diǎn)對(duì)應(yīng)于由矩陣A0,A1,A2等表示的線性方程組的行中的元素。這在決定步驟103中表示。在步驟102的第一線性化迭代之后,所述樹(shù)尚未生成,并且因此根據(jù)步驟104生成樹(shù)。在步驟102中,隨后的線性化迭代所述樹(shù)已經(jīng)生成,并且同樣地,跳過(guò)樹(shù)生成的步驟104。
雖然在步驟102中未明確示出,但是線性化處理還包括所述線性化方程組的歸一化。典型地,歸一化涉及將所述初始猜測(cè)矢量除以一特定值,優(yōu)選地,所述特定值是所述初始猜測(cè)矢量的值的最大絕對(duì)值。這確保了所述初始猜測(cè)矢量的值在-1和1之間。作為歸一化的結(jié)果,基于歸一化的線性化矩陣的計(jì)算值產(chǎn)生不會(huì)放大到大數(shù)目而導(dǎo)致準(zhǔn)確率以及存儲(chǔ)器分配問(wèn)題的結(jié)果。注意,前面提到的歸一化技術(shù)只是多種歸一化技術(shù)中的一種,其可以用于保持所得到的計(jì)算值不至于變得非常大。
如前所述,實(shí)施例是可能的,其中所述模型的所述實(shí)體和所述約束具有一固有的線性關(guān)系,并且因此不需要如步驟102中所述的線性化。然而,可以有益于使固有的線性模型歸一化,并且如,類(lèi)似于上述的歸一化在這樣的實(shí)施例中也是優(yōu)選的。
使用在步驟104中操作生成的所述樹(shù)結(jié)構(gòu)求解所述近似線性方程組的方法通過(guò)滿(mǎn)足所述葉節(jié)點(diǎn)的一子集合的所述約束方程并逐漸滿(mǎn)足所述父節(jié)點(diǎn)的所述約束方程,直到滿(mǎn)足所述根節(jié)點(diǎn)的所述約束方程。一旦滿(mǎn)足根節(jié)點(diǎn)的約束方程,從根節(jié)點(diǎn)開(kāi)始的每個(gè)滿(mǎn)足節(jié)點(diǎn)的解通過(guò)樹(shù)的每個(gè)子節(jié)點(diǎn)向下傳播到葉節(jié)點(diǎn)。
再次參考圖1,滿(mǎn)足所述樹(shù)的所述節(jié)點(diǎn)的所述約束方程的步驟。除非另有明確說(shuō)明,這些步驟如同在圖2的樹(shù)20所描述。如前所述,所述樹(shù)的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于至少一個(gè)約束方程,并且類(lèi)似地,所述矩陣的至少一行表示所述線性方程組。
從所述葉節(jié)點(diǎn)的一子集合開(kāi)始,在步驟106中求解所述葉節(jié)點(diǎn)的所述子集合中的每個(gè)節(jié)點(diǎn)的所述約束方程。其中求解一節(jié)點(diǎn)的所述約束方程的程序可以可互換地稱(chēng)為求解以滿(mǎn)足一節(jié)點(diǎn)的所述約束方程,求解一節(jié)點(diǎn)或者在一節(jié)點(diǎn)上執(zhí)行“測(cè)量更新”。
在優(yōu)選但非限制性的實(shí)施,所述葉節(jié)點(diǎn)的子集合包括所有葉節(jié)點(diǎn),并且最優(yōu)選地等于所有葉節(jié)點(diǎn)的集合。在所述樹(shù)20的示例中,葉節(jié)點(diǎn)的優(yōu)選子集合包括節(jié)點(diǎn)240A-240D,230B-230C和230E。顯然,葉節(jié)點(diǎn)可以并行求解,減少了求解整個(gè)方程組的計(jì)算時(shí)間。
一旦滿(mǎn)足葉節(jié)點(diǎn)子集合的每個(gè)節(jié)點(diǎn)的約束方程,則任務(wù)是基于所述相應(yīng)子節(jié)點(diǎn)的測(cè)量更新,來(lái)滿(mǎn)足所述對(duì)應(yīng)父節(jié)點(diǎn)的約束方程。一相應(yīng)的父節(jié)點(diǎn)可以在父節(jié)點(diǎn)的所有子節(jié)點(diǎn)已經(jīng)被求解之后被求解。這在步驟108中執(zhí)行。注意,可以并行地求解所有對(duì)應(yīng)的子節(jié)點(diǎn)已經(jīng)被求解的父節(jié)點(diǎn)集合。在所述樹(shù)20的示例中,在步驟108中要解決的所述父節(jié)點(diǎn)是所述父節(jié)點(diǎn)230A和230D。注意,基于對(duì)應(yīng)所述子節(jié)點(diǎn)的所述測(cè)量更新來(lái)滿(mǎn)足父節(jié)點(diǎn)的約束方程的求解可互換地稱(chēng)為基于對(duì)應(yīng)所述子節(jié)點(diǎn)的測(cè)量更新來(lái)執(zhí)行對(duì)父節(jié)點(diǎn)的解的一預(yù)測(cè)。換句話說(shuō),基于所述子節(jié)點(diǎn)(葉節(jié)點(diǎn))240A-240B的解來(lái)預(yù)測(cè)所述父節(jié)點(diǎn)230A的解。使用所述父節(jié)點(diǎn)的預(yù)測(cè)解作為求解父節(jié)點(diǎn)的基礎(chǔ)。
應(yīng)所述顯而易見(jiàn)的是,在步驟106和108中從所有葉節(jié)點(diǎn)開(kāi)始并且進(jìn)展到下一代的節(jié)點(diǎn)所描述的解決所述樹(shù)的所述節(jié)點(diǎn)的程序。注意,一旦解決了一特定父節(jié)點(diǎn)的所有子節(jié)點(diǎn),就可以解決所述特定父節(jié)點(diǎn)。因此,等待不是所述特定父節(jié)點(diǎn)的子節(jié)點(diǎn)被解決是不需要的。
重復(fù)步驟108直到所述樹(shù)的所述根節(jié)點(diǎn)被求解。因此,在每次執(zhí)行步驟108之后,判定步驟109是基于所述根節(jié)點(diǎn)是否已被求解,以執(zhí)行確定后續(xù)步驟。如果所述根節(jié)點(diǎn)尚未求解,則重復(fù)步驟108。如果所述根節(jié)點(diǎn)已經(jīng)被求解,則程序10移動(dòng)到步驟110。
執(zhí)行步驟106,108和109的處理可以統(tǒng)稱(chēng)為在樹(shù)的節(jié)點(diǎn)上執(zhí)行一“精細(xì)到粗略更新”。因此,在所述“精細(xì)到粗略更新”中,沿著所述樹(shù)移動(dòng)的方向是從所述樹(shù)的所述葉節(jié)點(diǎn)到所述樹(shù)的所述根節(jié)點(diǎn)。步驟110可以被稱(chēng)為執(zhí)行一“粗略到精細(xì)更新”。因此,在所述“粗略到精細(xì)更新”中,沿所述樹(shù)的移動(dòng)方向是從所述根節(jié)點(diǎn)到所述葉節(jié)點(diǎn)。
在步驟110中,所述根節(jié)點(diǎn)的解被向下傳播到所述樹(shù)中的每個(gè)子節(jié)點(diǎn)。所述根節(jié)點(diǎn)的解用于校正或等效地調(diào)整所述根節(jié)點(diǎn)的所述子節(jié)點(diǎn)的解。所述根節(jié)點(diǎn)的所述子節(jié)點(diǎn)的所述調(diào)整解被用于調(diào)整所述根節(jié)點(diǎn)的所述孫子節(jié)點(diǎn)的解。繼續(xù)傳播,直到所有葉節(jié)點(diǎn)的解被調(diào)整。在所述樹(shù)20的示例中,所述根節(jié)點(diǎn)210A的解用于調(diào)整所述節(jié)點(diǎn)220A-220B的解。繼而,所述節(jié)點(diǎn)220A的所述調(diào)整解被用于調(diào)整所述節(jié)點(diǎn)230A-230C的解。類(lèi)似地,所述節(jié)點(diǎn)220B的調(diào)整解被用于調(diào)整所述節(jié)點(diǎn)230D-230E的解。最后,所述節(jié)點(diǎn)230A和230D的調(diào)整解被用于分別調(diào)整所述節(jié)點(diǎn)240A-240B和240C-240D的解。應(yīng)所述顯而易見(jiàn)的是,所述根節(jié)點(diǎn)的解通過(guò)所述樹(shù)的每個(gè)子節(jié)點(diǎn)傳播,直到到達(dá)所有葉節(jié)點(diǎn)。
現(xiàn)在參考圖4和圖5,示例性程序40和50的流程圖是用于執(zhí)行步驟106和108。如前所述,步驟106的結(jié)果是求解所述葉節(jié)點(diǎn)的一子集合,優(yōu)選地,是求解所有葉節(jié)點(diǎn)的子集合。因此,程序40在步驟106中對(duì)這些葉節(jié)點(diǎn)執(zhí)行測(cè)量更新,以及如同在步驟108中基于所述更新的子節(jié)點(diǎn)對(duì)所述樹(shù)的父節(jié)點(diǎn)的后續(xù)測(cè)量更新。在此處描述程序40的步驟僅對(duì)于一單個(gè)節(jié)點(diǎn)s。除非另有明確說(shuō)明,并且將通過(guò)其類(lèi)比來(lái)理解程序40,對(duì)所有剩余的節(jié)點(diǎn)執(zhí)行程序40。所述程序40和50基于對(duì)應(yīng)于每個(gè)節(jié)點(diǎn)的計(jì)算的矩陣和矢量被描述。因此,對(duì)于給定一節(jié)點(diǎn)s,對(duì)應(yīng)于所述節(jié)點(diǎn)s的矩陣M被寫(xiě)為M(s)。類(lèi)似地,對(duì)應(yīng)于所述節(jié)點(diǎn)s的矢量b被寫(xiě)為b(s)。此外,程序40和50的所述計(jì)算矩陣是統(tǒng)計(jì)矩陣。在本文件的全文中,術(shù)語(yǔ)“統(tǒng)計(jì)矩陣”通常是指提供關(guān)于從其導(dǎo)出矩陣的矢量的元素的統(tǒng)計(jì)信息的矩陣。換句話說(shuō),第i行和第j列中的矩陣元素表示關(guān)于從其導(dǎo)出矩陣的矢量的第i個(gè)和第j個(gè)元素的統(tǒng)計(jì)信息。在特別優(yōu)選的實(shí)施例中,所述統(tǒng)計(jì)矩陣是協(xié)方差矩陣,并且因此,第i行和第j列中的統(tǒng)計(jì)信息表示從中導(dǎo)出協(xié)方差矩陣的矢量的第i個(gè)和第j個(gè)元素之間的協(xié)方差。
注意,在本文的后續(xù)部分中,具有下標(biāo)2(例如,Q2和q2)的矩陣和矢量用于執(zhí)行先前提到的生成更新的矩陣和矢量的測(cè)量更新。所得到的更新的矩陣和矢量由沒(méi)有任何下標(biāo)的矩陣和矢量表示,并且用于執(zhí)行先前提到的生成預(yù)測(cè)的矩陣和矢量的預(yù)測(cè)。所得到的預(yù)測(cè)矩陣和矢量由具有下標(biāo)1的矩陣和矢量表示(例如,Q1和q1)。
在步驟402中,每個(gè)節(jié)點(diǎn)s在執(zhí)行程序40后生成一“測(cè)量矩陣”C(s)。通過(guò)選擇與所述節(jié)點(diǎn)s的約束方程對(duì)應(yīng)的線性化矩陣的多個(gè)行,從而從所述線性化矩陣A獲得所述測(cè)量矩陣,其中去除對(duì)應(yīng)于未包括在所述節(jié)點(diǎn)s中的變量的所有列。
通常,每個(gè)節(jié)點(diǎn)的測(cè)量矩陣具有大小m乘p的大小,其中m是對(duì)應(yīng)于所述節(jié)點(diǎn)s的約束方程的數(shù)量,并且p是包括在所述節(jié)點(diǎn)s中的變量的數(shù)量。如果m等于1,則p等于對(duì)應(yīng)于所述節(jié)點(diǎn)s的行中的非零實(shí)體的數(shù)目。
在步驟404中,計(jì)算一“測(cè)量創(chuàng)新”矢量V(s)。所述矢量V(s)是以對(duì)應(yīng)于被寫(xiě)為y(s)的所述節(jié)點(diǎn)s的測(cè)量輸出矢量y的分量的部分為基礎(chǔ)。顯然,y(s)的大小為m乘1。所述矢量V(s)也是以所述節(jié)點(diǎn)s的一狀態(tài)矢量x2(s)的部份為基礎(chǔ)。所述狀態(tài)矢量x2(s)的大小為p乘1。所述狀態(tài)矢量x2(s)表示所述節(jié)點(diǎn)s在一給定時(shí)刻的解。如前所述,由于程序10包括將所述樹(shù)從葉節(jié)點(diǎn)上升到根節(jié)點(diǎn),并且隨后將所述樹(shù)從根節(jié)點(diǎn)降到葉節(jié)點(diǎn),所以所述節(jié)點(diǎn)的狀態(tài)矢量是動(dòng)態(tài)的。在程序10結(jié)束時(shí)的狀態(tài)矢量的值是所述節(jié)點(diǎn)的最終解。在決定步驟414中,對(duì)不論對(duì)一葉節(jié)點(diǎn)或一父節(jié)點(diǎn)執(zhí)行程序40的所述決定都會(huì)被創(chuàng)造。如步驟416所示,如果程序40是對(duì)葉節(jié)點(diǎn)執(zhí)行,則狀態(tài)矢量x2(s)是一全零矢量。如步驟418所示,如果程序40是對(duì)父節(jié)點(diǎn)執(zhí)行,則狀態(tài)矢量x2(s)是一計(jì)算矢量。所述計(jì)算狀態(tài)矢量是由程序50所計(jì)算,如隨后將描述的。
所述矢量v(s)表示如下
v(s)=y(tǒng)(s)–C(s)x2(s) (6)
顯然,v(s)的大小也為m乘1。所述創(chuàng)新矢量v(s)基本上是一誤差矢量,其描述了一滿(mǎn)足所述節(jié)點(diǎn)s的約束方程的配置和一不滿(mǎn)足所述節(jié)點(diǎn)s的約束方程的配置之間的差異。
在步驟406中計(jì)算與v(s)對(duì)應(yīng)的一統(tǒng)計(jì)矩陣,最優(yōu)選地是一協(xié)方差矩陣。所述協(xié)方差矩陣v(s)可以表示如下:
其中P2(s)是狀態(tài)矢量x2(s)的一統(tǒng)計(jì)矩陣,最優(yōu)選地是一協(xié)方差矩陣。類(lèi)似于所述狀態(tài)矢量,所述矩陣P2(s)的值取決于決定步驟414。如果程序40執(zhí)行在葉節(jié)點(diǎn)上,則矩陣P2(s)是單位矩陣(也在步驟416中示出)。如果程序40執(zhí)行在父節(jié)點(diǎn)上,則矩陣P2(s)是一計(jì)算的矩陣(也在步驟418中示出)。通過(guò)程序50計(jì)算的所述所計(jì)算的矩陣P2(s)會(huì)在隨后描述。
所述矩陣P2(s)的大小為p乘p。在本文件的全文中,術(shù)語(yǔ)“單位矩陣”通常是指具有相等數(shù)目的行和列的矩陣,其中沿著主對(duì)角線的元素等于1,所有其他元素等于0。所述矩陣R(s)是大小為m乘m的一統(tǒng)計(jì)矩陣。最優(yōu)選地,R(s)是當(dāng)執(zhí)行程序40時(shí)的“測(cè)量噪聲”的協(xié)方差矩陣。所述矩陣R(s)優(yōu)選地是乘以一噪聲因子δ的m乘m的單位矩陣。所述噪聲因子δ是設(shè)計(jì)參數(shù),并且優(yōu)選地是基于對(duì)所述近似線性方程組的最終解的期望精度的部份來(lái)進(jìn)行選擇。優(yōu)選地,δ的數(shù)量級(jí)大約是所需精度的一半數(shù)量級(jí)。所述精度是所述殘差矢量r的大小的一直接結(jié)果。例如,如果殘差矢量r具有優(yōu)選地小于10-14的數(shù)量級(jí),則噪聲因子δ優(yōu)選地選擇為大約10-7。顯然,矩陣v(s)的大小也為m乘m。
繼續(xù)參考圖4,在步驟406之后,在步驟408中計(jì)算一“增益矩陣”K(s)。所述增益矩陣K(s)可以表示如下:
其中V-1(s)是V(s)的逆矩陣。所述增益矩陣K(s)的大小為p乘m。在步驟410中,基于增益矩陣K(s),去計(jì)算一更新的狀態(tài)矢量x(s)。所述更新的狀態(tài)矢量x(s)具有與初始狀態(tài)矢量x2(s)相同的大小,一般大小是p乘1。所述更新的狀態(tài)矢量x(s)可以表示如下:
x(s)=x2(s)+K(s)v(s) (9)
最后,在步驟412中,計(jì)算得到對(duì)應(yīng)于所述更新的狀態(tài)矢量x(s)的一更新的協(xié)方差矩陣P(s)。矩陣P(s)可以表示如下:
P(s)=(I–K(s)C(s))P2(s (10)
其中矩陣I是p乘p的單位矩陣。顯而易見(jiàn)地,所述更新的協(xié)方差矩陣P(s)的大小為p乘p。
作為程序40的結(jié)果,通過(guò)計(jì)算更新的狀態(tài)矢量x(s)和更新的協(xié)方差矩陣P(s)來(lái)求解所述葉節(jié)點(diǎn)。如隨后將討論的,這些更新的矢量和矩陣用于預(yù)測(cè)所述葉節(jié)點(diǎn)的所述父節(jié)點(diǎn)和其他子節(jié)點(diǎn)的所述父節(jié)點(diǎn)的解。
現(xiàn)在參考圖5,示出用于執(zhí)行步驟108的程序的示例性程序50。類(lèi)似于程序40,本文在此處描述已經(jīng)解決了所述父節(jié)點(diǎn)s的所有子節(jié)點(diǎn)的一單個(gè)父節(jié)點(diǎn)s的程序50。假設(shè)所述父節(jié)點(diǎn)s具有已由程序40更新的q個(gè)子節(jié)點(diǎn)。出于本文的目的,父節(jié)點(diǎn)s的子節(jié)點(diǎn)被稱(chēng)為子節(jié)點(diǎn)s1,s2,s3…sq。程序50的目的是基于由程序40產(chǎn)生的更新的狀態(tài)矢量x(s1),x(s2)…x(sq)來(lái)預(yù)測(cè)所述父節(jié)點(diǎn)s的狀態(tài)矢量x1(s1),x1(s2),x1(s3)…x1(sq)。所述預(yù)測(cè)狀態(tài)矢量的大小為p乘1,其中p是對(duì)應(yīng)于父節(jié)點(diǎn)s的變量的數(shù)量。
在步驟502中,確定所述預(yù)測(cè)狀態(tài)矢量x1(s1),x1(s2),x1(s3)…x1(sq)的索引。為了確定預(yù)測(cè)狀態(tài)矢量的索引,編譯所述父節(jié)點(diǎn)s和每個(gè)子節(jié)點(diǎn)s1,s2,s3…sq共有的變量的索引列表。在一非限制性實(shí)現(xiàn),每個(gè)預(yù)測(cè)狀態(tài)矢量都被初始化為全零矢量。查看父節(jié)點(diǎn)s的變量,所述子節(jié)點(diǎn)s1中的每個(gè)父變量的索引位置被回傳,并將其輸入到所述子節(jié)點(diǎn)s1的索引預(yù)測(cè)狀態(tài)矢量中。此程序繼續(xù)對(duì)所述剩馀子節(jié)點(diǎn)s2,s3…sq執(zhí)行。基于在步驟502中確定的索引,在步驟504確定所述預(yù)測(cè)的狀態(tài)矢量x1(s1),x1(s2),x1(s3)…x1(sq)。
參考圖2,描述確定上述預(yù)測(cè)狀態(tài)矢量的一示例。假設(shè)父節(jié)點(diǎn)s對(duì)應(yīng)于節(jié)點(diǎn)230A。在所述示例中存在兩個(gè)子節(jié)點(diǎn),并且因此q=2。子節(jié)點(diǎn)s1和s2分別對(duì)應(yīng)于子節(jié)點(diǎn)240A和240B。假設(shè)可變矢量x的長(zhǎng)度為12??勺兪噶縳可以寫(xiě)為x=(x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10x11)。進(jìn)一步假設(shè)父節(jié)點(diǎn)s對(duì)應(yīng)于變量(x5 x11 x10),而子節(jié)點(diǎn)s1對(duì)應(yīng)于變量(x6 x8 x10 x11),子節(jié)點(diǎn)s2對(duì)應(yīng)于變量(x7 x9 x10 x11)。使用父節(jié)點(diǎn)s和子節(jié)點(diǎn)s1之間的共享變量的位置來(lái)構(gòu)造預(yù)測(cè)狀態(tài)矢量x1(s1)。父節(jié)點(diǎn)s的第0位置的變量不出現(xiàn)在子節(jié)點(diǎn)s1中。這樣,x1(s1)的第0個(gè)位置保持為零。父節(jié)點(diǎn)的第一位置中的變量出現(xiàn)在子節(jié)點(diǎn)s1的第3位置。因此,x1(s1)的第一位置對(duì)應(yīng)于x1(s1)的第三位置。父節(jié)點(diǎn)的第二位置的變量出現(xiàn)在子節(jié)點(diǎn)s1的第二位置。因此,x1(s1)的第二位置對(duì)應(yīng)于x1(s1)的第二位置。因此,預(yù)測(cè)狀態(tài)矢量x1(s1)可寫(xiě)為
x1(s1)=(0,x(s1)(3),x(s1)(2))。
可以對(duì)預(yù)測(cè)狀態(tài)矢量x1(s2)執(zhí)行相同的處理,其也產(chǎn)生與x1(s1)相同的預(yù)測(cè)狀態(tài)矢量。
繼續(xù)參考圖5,對(duì)應(yīng)在步驟506中產(chǎn)生的預(yù)測(cè)狀態(tài)矢量的統(tǒng)計(jì)矩陣,最優(yōu)選為協(xié)方差矩陣。特別地,所述協(xié)方差矩陣P1(x1(s1))對(duì)應(yīng)于協(xié)方差矩陣對(duì)應(yīng)于x1(s1),所述協(xié)方差矩陣P1(x1(s2))對(duì)應(yīng)于協(xié)方差矩陣對(duì)應(yīng)于x1(s2),以此類(lèi)推。所生成的預(yù)測(cè)協(xié)方差矩陣自然地落入從步驟412的子節(jié)點(diǎn)更新的協(xié)方差矩陣P(s1),P(s2),P(s3)…P(sq)中。對(duì)于一給定的子節(jié)點(diǎn),例如子節(jié)點(diǎn)s1,將與子節(jié)點(diǎn)和父節(jié)點(diǎn)s的公共變量相對(duì)應(yīng)的行和列放置在與父節(jié)點(diǎn)s1和子節(jié)點(diǎn)公共的變量的索引列表相對(duì)應(yīng)的預(yù)測(cè)協(xié)方差矩陣P1(x1(s1))中。所述預(yù)測(cè)協(xié)方差矩陣P1(x1(s1))除了沿著主對(duì)角線的元素被設(shè)置為1,所有其他元素為零。
回憶上面x1(s1)的索引矢量為(0 3 2)的例子。因此,P1(x1(s1))是一3乘3的矩陣。在一非限制性實(shí)現(xiàn)中,將P1(x1(s1))初始化為全部都是零的一3乘3矩陣。更新的協(xié)方差矩陣P(s1)的適當(dāng)元素是從索引矢量外積(0 3 2)T(0 3 2)為P1(x1(s1))所選擇。結(jié)果,P1(x1(s1))的第0行中的所有元素等于零。除了具有索引(0,0)的元素被設(shè)置為1之外,P1(x1(s1))的第0列中的所有元素等于零。P1(x1(s1))的第1行和第1列中的元素等于P(s1)的第3行和第3列中的元素。P1(x1(s1))的第1行和第2列中的元素等于P(s1)的第3行和第2列中的元素。P1(x1(s1))的第2行第1列的元素與P(s1)的第2行第3列的元素相同。P1(x1(s1))的第2行和第2列中的元素等于P(s1)的第2行和第2列中的元素。
在步驟508中,將在步驟506中預(yù)測(cè)的子節(jié)點(diǎn)s1,s2,s3…sq的協(xié)方差矩陣組合成被寫(xiě)為P2(s)的父節(jié)點(diǎn)s的一單個(gè)協(xié)方差矩陣。所述矩陣P2(s)是在程序40中描述的相同矩陣。然而,從步驟508得到的矩陣是用于更新一父節(jié)點(diǎn)而不是所述葉節(jié)點(diǎn)的一矩陣。因此,所述組合矩陣用作步驟404的輸入。所述組合協(xié)方差矩陣可以表示如下:
在子節(jié)點(diǎn)(i=1、2、3...q)的索引上執(zhí)行求和。
在步驟510中,將在步驟504中預(yù)測(cè)的子節(jié)點(diǎn)s1,s2,s3…sq的狀態(tài)矢量組合成被寫(xiě)為x2(s)的父節(jié)點(diǎn)s的一單個(gè)狀態(tài)矢量。所述矢量x2(s)與程序40中描述的矢量相同。然而,從步驟510得到的矢量是用于更新一父節(jié)點(diǎn)而不是所述葉節(jié)點(diǎn)的一矢量。因此,所述組合狀態(tài)矢量用作步驟404的輸入。所述組合狀態(tài)矢量可以表示如下:
在子節(jié)點(diǎn)(i=1、2、3...q)的索引上執(zhí)行求和。
如前所述,重復(fù)步驟108直到所述根節(jié)點(diǎn)已經(jīng)被求解。一旦所述根節(jié)點(diǎn)已經(jīng)被解決,則所述根節(jié)點(diǎn)的解被向下傳播到所述樹(shù)中的每個(gè)子節(jié)點(diǎn)(步驟110)。
令表示所述根節(jié)點(diǎn)s0的狀態(tài)矢量。所述根節(jié)點(diǎn)s0的更新的狀態(tài)矢量從所述根節(jié)點(diǎn)傳播到所述樹(shù)的每個(gè)子節(jié)點(diǎn)。傳播調(diào)整所述根節(jié)點(diǎn)的子節(jié)點(diǎn)的預(yù)測(cè)狀態(tài)矢量。一旦調(diào)整了所述根節(jié)點(diǎn)的子節(jié)點(diǎn),則對(duì)所述根節(jié)點(diǎn)的子節(jié)點(diǎn)的子節(jié)點(diǎn)執(zhí)行相同的處理,直到所有葉節(jié)點(diǎn)都被調(diào)整。
現(xiàn)在參考圖6,其是如步驟110中描述的用于執(zhí)行傳播程序的示例性程序60的一流程圖。假設(shè)節(jié)點(diǎn)s1,s2,s3…sm是所述根節(jié)點(diǎn)s0的子節(jié)點(diǎn)。在步驟604中,對(duì)于父節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn),將一調(diào)整因子應(yīng)用于從步驟504獲得的預(yù)測(cè)狀態(tài)矢量x1(s1),x1(s2),x1(s3)…x1(sm)以及所述程序40中產(chǎn)生的所述更新的狀態(tài)矢量x(s1),x(s2),x(s3)…x(sm)。對(duì)于一子節(jié)點(diǎn)si而言,一調(diào)整后的狀態(tài)矢量可以表示為:
其中矩陣J(si)是更新的協(xié)方差矩陣P(si)和預(yù)測(cè)協(xié)方差矩陣P1(si)的逆矩陣的一函數(shù)。具體地,每個(gè)矩陣J(si)可以表示如下:
其中矩陣F(si)是一索引矩陣。在一非限制性實(shí)現(xiàn)中,當(dāng)且僅當(dāng)節(jié)點(diǎn)si的狀態(tài)矢量的第i個(gè)索引和節(jié)點(diǎn)si的父節(jié)點(diǎn)的狀態(tài)矢量的第j個(gè)索引對(duì)應(yīng)一共享變量時(shí),矩陣F(si)的第i行和第j列中的元素才等于1。所述矩陣F(si)的所有其他元素基本上為零。
矩陣J(si)可以被認(rèn)為是一置換矩陣或一調(diào)整矩陣,其基于子節(jié)點(diǎn)si和子節(jié)點(diǎn)si的父節(jié)點(diǎn)之間的共享變量來(lái)置換預(yù)測(cè)協(xié)方差矩陣P1(si)的元素。顯而易見(jiàn)的,矩陣J(si)在步驟604之前在步驟602中被計(jì)算。
對(duì)給定父節(jié)點(diǎn)(被初始化為根節(jié)點(diǎn))的子節(jié)點(diǎn)重復(fù)步驟602和604,直到父節(jié)點(diǎn)的子節(jié)點(diǎn)的所有狀態(tài)矢量都已被調(diào)整。這在決定步驟606中被描繪。一旦父節(jié)點(diǎn)的子節(jié)點(diǎn)的所有狀態(tài)矢量都已被調(diào)整,則程序60向下移動(dòng)一世代,如步驟610所示。注意,如果葉節(jié)點(diǎn)的所有狀態(tài)矢量都已被調(diào)整,則程序60必須在所述樹(shù)的最新一世代的節(jié)點(diǎn)處執(zhí)行步驟602和604,并且因此在步驟604完成時(shí)不能向下移動(dòng)另一世代。這意味著所述樹(shù)的節(jié)點(diǎn)的所有狀態(tài)矢量已經(jīng)被調(diào)整。一旦葉節(jié)點(diǎn)的狀態(tài)矢量都已經(jīng)被調(diào)整,則程序60結(jié)束。在判定步驟608中描述檢查葉節(jié)點(diǎn)的狀態(tài)矢量是否已被調(diào)整。節(jié)點(diǎn)的經(jīng)調(diào)整的狀態(tài)矢量提供近似的線性方程組的解。
回想所得到的最終解的精度基于部分噪聲因子δ。如果最終解的精度不滿(mǎn)足精度條件,則重復(fù)步驟106-110。通過(guò)判決步驟111來(lái)描述。通常通過(guò)計(jì)算一新的殘差矢量并從新的殘差矢量中減去所得到的最終解來(lái)完成。所得到最終的減法差通常被歸一化。因此,所述程序是基于近似線性方程組的解進(jìn)行迭代的。在用于CAD系統(tǒng)的程序10的某些示例性非限制性實(shí)現(xiàn)中,迭代的數(shù)量通常在2-5次迭代的范圍內(nèi)。
一旦滿(mǎn)足所得到的線性精度條件(步驟111),檢查對(duì)非線性方程組的最終解的精度?;叵肷鲜鼋馐怯迷诰€性近似中的第一迭代步驟的解。這樣,如果非線性方程組的殘差的精度不滿(mǎn)足一精度條件,則重復(fù)步驟102-111。這在判定步驟124中示出。在用于CAD系統(tǒng)的程序10的某些示例性非限制性實(shí)現(xiàn)中,用于線性近似的迭代步驟的數(shù)量在2-4次迭代步驟的范圍內(nèi)。因此,程序10優(yōu)選地以雙重迭代程序被實(shí)現(xiàn),其中線性化步驟的迭代具有2-5次子迭代。
所有迭代的完成導(dǎo)致滿(mǎn)足應(yīng)用于實(shí)體的約束的模型的一配置。這樣,對(duì)應(yīng)于實(shí)體的變量被生成用于輸出。在用于CAD系統(tǒng)的程序10的非限制性實(shí)現(xiàn)中,這需要輸出所有實(shí)體的變量的更新值。
現(xiàn)在參考圖7A,是被配置為實(shí)現(xiàn)根據(jù)本發(fā)明的求解方程組的示例性系統(tǒng)70的高階部分框圖。系統(tǒng)(處理系統(tǒng))70包括處理器702(一個(gè)或多個(gè))和四個(gè)示例性存儲(chǔ)器設(shè)備:一隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)704,一只讀存儲(chǔ)器(read-only memory,ROM)706,大容量存儲(chǔ)設(shè)備(硬盤(pán))708和閃存710,全部通信都通過(guò)一公共總線712。它們都經(jīng)由如本領(lǐng)域中已知的,處理和存儲(chǔ)器可以包括存儲(chǔ)軟件和/或固件和/或任何計(jì)算機(jī)硬件組件的任何計(jì)算機(jī)可讀介質(zhì),包括但不限于現(xiàn)場(chǎng)可編程邏輯陣列(FPLA)組件、硬連線邏輯組件、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)組件和專(zhuān)用集成電路(ASIC)組件中的一個(gè)或多個(gè)。任何指令集架構(gòu)可以在處理器702中使用,包括但不限于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)架構(gòu)和/或復(fù)雜指令集計(jì)算機(jī)(CISC)架構(gòu)。在大容量存儲(chǔ)設(shè)備708上顯示一模塊(處理模塊)714,但是,對(duì)于本領(lǐng)域技術(shù)人員顯而易見(jiàn)的是,所述模塊714可以位于任何存儲(chǔ)器設(shè)備上。
大容量存儲(chǔ)設(shè)備708是承載用于實(shí)現(xiàn)本文所述的求解方法的計(jì)算機(jī)可讀代碼的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的非限制性示例。這種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的其他示例包括只讀存儲(chǔ)器,例如承載這種代碼的光盤(pán)(CDs)。
系統(tǒng)70可以具有存儲(chǔ)在存儲(chǔ)器設(shè)備上的一操作系統(tǒng),ROM可以包括用于系統(tǒng)的啟動(dòng)代碼,并且處理器可以被配置用于執(zhí)行所述啟動(dòng)代碼以將操作系統(tǒng)加載到RAM 704,執(zhí)行操作系統(tǒng)以將計(jì)算機(jī)可讀代碼復(fù)制到RAM 704并執(zhí)行所述代碼。
網(wǎng)絡(luò)連接720提供通往和來(lái)自系統(tǒng)70的通信。通常,一單個(gè)網(wǎng)絡(luò)連接向本地和/或遠(yuǎn)程網(wǎng)絡(luò)上的其他設(shè)備提供包括虛擬連接的一個(gè)或多個(gè)鏈路。或者,系統(tǒng)70可以包括多于一個(gè)網(wǎng)絡(luò)連接(未示出),每個(gè)網(wǎng)絡(luò)連接提供到其他設(shè)備和/或網(wǎng)絡(luò)的一個(gè)或多個(gè)鏈路。系統(tǒng)70可以被實(shí)現(xiàn)為分別通過(guò)網(wǎng)絡(luò)連接到一客戶(hù)端或一服務(wù)器的一服務(wù)器或一客戶(hù)端。
本文所公開(kāi)的實(shí)施例可以被提供為計(jì)算機(jī)程序產(chǎn)品或軟件,其可以包括其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì)(或計(jì)算機(jī)可讀介質(zhì)),其可以用于對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行編程,例如示例,系統(tǒng)70,以執(zhí)行根據(jù)本文公開(kāi)的實(shí)施例的處理。在涉及CAD系統(tǒng)的實(shí)施例中,計(jì)算機(jī)程序產(chǎn)品或軟件可以被實(shí)現(xiàn)為用于現(xiàn)有CAD軟件程序的一插件。
注意,如圖7B所示,系統(tǒng)70可以被實(shí)現(xiàn)為包括一顯示器72、一用戶(hù)輸入設(shè)備74和一顯示組織模塊76的一計(jì)算機(jī)系統(tǒng)700的一部分。顯示器72可以是用于顯示從系統(tǒng)70輸出的數(shù)據(jù)的任何合適類(lèi)型的顯示器,包括但不限于計(jì)算機(jī)監(jiān)視器和LCD屏幕。用戶(hù)輸入設(shè)備74可以是適于允許用戶(hù)向系統(tǒng)70提供命令的任何類(lèi)型的設(shè)備,包括但不限于鍵盤(pán)和鼠標(biāo)。或者,系統(tǒng)70可以被實(shí)現(xiàn)為包括顯示器72,輸入用戶(hù)設(shè)備74和顯示組織模塊76的獨(dú)立計(jì)算機(jī)系統(tǒng)。
經(jīng)由用戶(hù)輸入設(shè)備74提供給系統(tǒng)70的命令的類(lèi)型允許一用戶(hù)指示系統(tǒng)70執(zhí)行包括但不限于生成模型、修改模型、保存模型和加載模型的動(dòng)作。這樣,用戶(hù)可以生成一模型和對(duì)應(yīng)的實(shí)體和約束。隨后,用戶(hù)可以修改實(shí)體,導(dǎo)致相關(guān)實(shí)體基于約束方程的解被適當(dāng)?shù)卣{(diào)整。此外,所生成的模型可以存儲(chǔ)在諸如閃存710的存儲(chǔ)器中,并且可以隨后從存儲(chǔ)器加載,使用戶(hù)能夠經(jīng)由用戶(hù)輸入設(shè)備74進(jìn)行修改和操縱。
如前所述,在完成所有迭代之后,生成實(shí)體的變量用于輸出。如步驟116所示,顯示組織模塊76組織輸出用于顯示的實(shí)體。將組織的輸出實(shí)體提供給顯示器72以供用戶(hù)可視化。對(duì)應(yīng)于步驟114提供顯示組織模塊76。輸出實(shí)體可選地存儲(chǔ)到一第三方設(shè)備或經(jīng)由一第三方顯示設(shè)備顯示。
為了更好地解釋本文呈現(xiàn)的實(shí)施例,提供了用于求解二維幾何實(shí)體的一系統(tǒng)的一示例。所提供的示例的目的是更詳細(xì)地示出用于求解方程組的程序10中的步驟。注意,實(shí)體的變量?jī)?yōu)選地是浮點(diǎn)數(shù)據(jù)類(lèi)型,并且最優(yōu)選地是雙精度數(shù)據(jù)類(lèi)型。為了方便起見(jiàn),這里描述的示例中的許多變量和矩陣的值僅示出四個(gè)小數(shù)位,其中在幾個(gè)例外表示出更大的小數(shù)精度。在所提供的示例中,噪聲因子δ被選擇為具有10-8的量級(jí)。
現(xiàn)在參考圖8所示,第一線段L1和第二線段L2。線段實(shí)體L1和L2由一單個(gè)約束,即垂直性。如圖8所示,線段L1由笛卡爾坐標(biāo)中的兩個(gè)端點(diǎn)定義:P0(10,7.5)和P1(17.5,12.5)。類(lèi)似地,線段L2由笛卡爾坐標(biāo)中的兩個(gè)端點(diǎn)定義:P2(20,10)和P3(25,5)。應(yīng)當(dāng)顯而易見(jiàn)的是,在線段的初始配置中,線段不垂直。
基于上述實(shí)體,生成一可變矢量。初始矢量包括八個(gè)變量:P0(x0,y0),P1(x1,y1),P2(x2,y2)以及P3(x3,y3)。如同前述,通過(guò)使用笛卡爾坐標(biāo)和極坐標(biāo)的組合更容易地解決垂直性約束。因此,每個(gè)線段有一(長(zhǎng)度)以及角度。線段L1具有大小d0(9.0139)和角度a0(0.5880)。線段L2具有大小d1(7.0711)和角度a1(-0.7854)。這為兩個(gè)實(shí)體產(chǎn)生了總共十二個(gè)變量。實(shí)體被表示為以下非線性方程組:
x1=x0+d0cos a0 (15)
y1=y(tǒng)0+d0sin a0 (16)
x3=x2+d1cos a1 (17)
y3=y(tǒng)2+d1sin a1 (18)
添加垂直性約束將一第五方程添加到上述方程系統(tǒng)中。垂直性約束可以表示如下:
a1-a0=-π/2 (19)
變量z的矢量表示為
z=(x0 y0 x1 y1 d0 a0 x2 y2 x3 y3 d1 a1)=(z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10z11)。
變量的初始值用作初始猜測(cè)矢量z0,并且如此寫(xiě)為:
z0=(10 7.5 17.5 12.5 9.0139 0.5880 20 10 25 5 7.0711 -0.7854)。
如前所述,通過(guò)除以初始猜測(cè)矢量(在本示例中為25)的值的最大絕對(duì)值來(lái)實(shí)現(xiàn)歸一化。歸一化得到以下矢量:
z0=(0.4 0.3 0.7 0.5 0.3606 0.5880 0.8 0.4 1.0 0.2 0.2828 -0.7854)。
請(qǐng)注意,角度變量未歸一化。
使用表達(dá)式(2)的結(jié)果來(lái)生成矩陣A0以線性化上述歸一化的非線性方程。生成的矩陣A0在圖9中示出。結(jié)果,獲得一具有十二個(gè)變量的五個(gè)線性方程的系統(tǒng)。注意,矩陣A0被認(rèn)為是類(lèi)似行稀疏的,因?yàn)榍八男芯哂兴膫€(gè)非零元素,并且最后一行具有兩個(gè)非零元素。如應(yīng)所述顯而易見(jiàn)的,初始輸出矢量y0由下式給出:y0=(0.1176 -0.1764 0.1571 0.1571 1.5708)Т。所得到的殘差矢量是r0=(0 0 0 0 -0.19739555984988089)Т。
參考圖10A和10B中,程序30用于構(gòu)造樹(shù)1000。為了簡(jiǎn)化,將A0的第0行中的方程放置在根節(jié)點(diǎn)s0中。沒(méi)有其他方程被放置在根節(jié)點(diǎn)中。根節(jié)點(diǎn)中的方程表示為e0(z0 z2 z4z5)。方程e1(z1 z3 z4 z5)和e4(z5 z11)與根節(jié)點(diǎn)的變量共享共享變量。這樣,方程e1(z1 z3 z4z5)和e4(z5 z11)分別放置在子節(jié)點(diǎn)s1和s4中。節(jié)點(diǎn)s1沒(méi)有任何子節(jié)點(diǎn)。節(jié)點(diǎn)s4具有兩個(gè)子節(jié)點(diǎn):s2和s3。方程e2(z6 z8 z10 z11)和e3(z7 z9 z10 z11)分別放置在節(jié)點(diǎn)s2和s3中。
顯而易見(jiàn)的,節(jié)點(diǎn)s2,s3和s4存在一沖突。由于變量z10出現(xiàn)在子節(jié)點(diǎn)s2,s3的方程中,但不出現(xiàn)在父節(jié)點(diǎn)中,所以變量被添加到父節(jié)點(diǎn)s4,如圖5所示。根據(jù)先前描述的樹(shù)生成程序30的步驟320。顯然,葉節(jié)點(diǎn)是節(jié)點(diǎn)s1,s2和s3。
在完成樹(shù)1000的構(gòu)造之后,執(zhí)行程序40的步驟以更新葉節(jié)點(diǎn)s1,s2和s3。去除了A0的第二行的零是節(jié)點(diǎn)s2的測(cè)量矩陣C(s2),并且可以表示為C(s2)=(-1 1 -0.7071 -0.2)。
使用方程(6)-(10)計(jì)算以下矩陣和矢量:x2(s2)=(0 0 0 0),y(s2)=0,v(s2)=0,V(s2)=2.5400+δ,K(s2)=(-0.3937 0.3937 -0.2784 -0.0787)T,及x(s2)=(0 0 0 0)。矩陣P(s2)如圖11A所示。節(jié)點(diǎn)s3的計(jì)算產(chǎn)生與上面的節(jié)點(diǎn)s2相同的矢量和矩陣。
針對(duì)節(jié)點(diǎn)s1.進(jìn)行類(lèi)似的計(jì)算。節(jié)點(diǎn)s1的測(cè)量矩陣是去除了零的A0的第一行,并且可以表示為C(s1)=(-1 1 -0.5547 -0.3)。
使用方程(6)-(10),計(jì)算以下矩陣和矢量:x2(s1)=(0 0 0 0),y(s1)=0,v(s1)=0,V(s1)=2.3977+δ,K(s1)=(-0.4171 0.4171 -0.2313 -0.1251)T和x(s1)=(0 0 0 0)。矩陣P(s1)如圖11B所示。執(zhí)行程序50的步驟以預(yù)測(cè)狀態(tài)矢量和協(xié)方差矩陣。由于更新后的狀態(tài)矢量x(s2)和x(s3)是零矢量,預(yù)測(cè)狀態(tài)矢量x1(s2)=(0 0 0)和x2(s3)=(0 0 0)。預(yù)測(cè)的協(xié)方差矩陣P1(x1(s2))和P1(x1(s3))是相同的,并且在圖12A中所示。
使用方程(11)和(12),計(jì)算出節(jié)點(diǎn)s4的組合協(xié)方差矩陣和組合狀態(tài)矢量。因此,x2(s4)=(0 0 0)。組合的協(xié)方差矩陣P2(s4)在圖13A中示出。
現(xiàn)在,執(zhí)行程序40的步驟以更新節(jié)點(diǎn)s4。節(jié)點(diǎn)s4的測(cè)量矩陣可以表示為C(s4)=(-1 1 0)。
使用方程(6)-(10),計(jì)算以下矩陣和矢量:y(s4)=-0.19734、v(s4)=-0.1974、K(s4)=(0.5098 -0.4901 0)T、以及x(s4)=(-0.1006 0.0968 0)。矩陣P(s4)如圖11C所示。因?yàn)镻(s4)的前兩行幾乎相等,矩陣P(s4)被示為具有更高的小數(shù)精度以強(qiáng)調(diào)矩陣P(s4)幾乎是奇異(singular)的事實(shí)。然而,矩陣P(s4)不是奇異的,因此可以計(jì)算逆矩陣。
矩陣P(s4)的非奇異性以及所有這樣的更新的協(xié)方差矩陣皆是由于將在說(shuō)明書(shū)的后續(xù)部分中說(shuō)明的噪聲因子δ所導(dǎo)致。
執(zhí)行程序50的步驟以基于節(jié)點(diǎn)s1去預(yù)測(cè)狀態(tài)矢量和協(xié)方差矩陣。由于更新的狀態(tài)矢量x(s1)是零矢量,所以預(yù)測(cè)狀態(tài)矢量x1(s1)=(0 0 0)。預(yù)測(cè)協(xié)方差矩陣P1(x1(s1))如圖12B所示。
類(lèi)似地,執(zhí)行程序50的步驟以基于節(jié)點(diǎn)s4來(lái)預(yù)測(cè)狀態(tài)矢量和協(xié)方差矩陣。由于更新的狀態(tài)矢量x(s4)是非零的,所以得到的預(yù)測(cè)狀態(tài)矢量x1(s4)=(0 0 0 -0.1006)。預(yù)測(cè)協(xié)方差矩陣P1(x1(s4))如圖12C所示。
使用方程(11)和(12),計(jì)算出根節(jié)點(diǎn)s0的組合協(xié)方差矩陣和組合狀態(tài)矢量。因此,組合狀態(tài)矢量x2(s0)被計(jì)算為x2(s0)=(0 0 0.0071 -0.0987)。組合的協(xié)方差矩陣P2(s0)在圖13B中示出。
最后,執(zhí)行程序40的步驟以更新根節(jié)點(diǎn)s0。節(jié)點(diǎn)s0的測(cè)量矩陣可以寫(xiě)為C(s0)=(-1 1 -0.8321 0.2)。
使用方程(6)-(10),計(jì)算以下矩陣和矢量:y(s0)=0、v(s0)=0、V(s0)=2.6325+δ、K(s0)=(-0.3799 0.3799 -0.2774 0.0475)T以及矩陣P(s0)如圖11D所示。
在這個(gè)階段,根節(jié)點(diǎn)s0已經(jīng)被更新,并且將所有節(jié)點(diǎn)的更新的狀態(tài)矢量傳播到葉節(jié)點(diǎn)的程序可以開(kāi)始。因此,執(zhí)行程序60的步驟以便于上述傳播。
最初,根節(jié)點(diǎn)s0的更新的狀態(tài)矢量被傳播到子節(jié)點(diǎn)s1和s4。如前所述,基于子節(jié)點(diǎn)和父節(jié)點(diǎn)的公共索引來(lái)確定矩陣F(s1)和F(s4)。矩陣F(s1)和F(s4)個(gè)別如圖14A和14B所示。
使用方程(14),去計(jì)算矩陣J(s1)和J(s4)個(gè)別如圖15A和15B所示。
使用方程(13),調(diào)整后的狀態(tài)矢量可以表示為
為了方便起見(jiàn)沒(méi)有表示出調(diào)整后的狀態(tài)矢量的計(jì)算。調(diào)整后的狀態(tài)矢量被傳播到葉節(jié)點(diǎn)s2和s3。利用方程(14),計(jì)算出所述矩陣J(s2)和J(s3)個(gè)別如圖15C和15D所示。
最后,使用方程(13),去計(jì)算調(diào)整狀態(tài)矢量以及所述計(jì)算產(chǎn)生以及
從被解出的狀態(tài)矢量and中收集變量的所有數(shù)值,顯而易見(jiàn)的,矢量z1=(-0.00975255962702836 0.014628839440542553 0.00975255962702836 -0.014628839440542553 0 -0.097525596757911864 -0.0099869961553971376 -0.00998699615539715 0.0099869961553971376 0.00998699615539715 0 0.099869962053321423)。取歸一化的初始猜測(cè)矢量z0和z1之間的差產(chǎn)生z=(0.40975255962702839 0.28537116055945744 0.69024744037297159 0.51462883944054261 0.3605551275463989 0.68552820030547934 0.80998699615539715 0.40998699615539719 0.99001300384460289 0.19001300384460287 0.282842712474619 -0.88526812545076972)。
計(jì)算新的殘差矢量產(chǎn)生r=(0.000000000097525584830115974 0.00000000014628834255070444 0.0000000000998700011578535 0.000000000099869973402277878 -0.0000000010386473903167825)。
新殘差矢量的范數(shù)是10-9的數(shù)量級(jí),如前所述,其不如典型CAD系統(tǒng)所期望的那樣準(zhǔn)確。因此,選擇判決步驟111的“否”分支,從而重復(fù)步驟106和108。重復(fù)步驟106和108產(chǎn)生具有10-18數(shù)量級(jí)范數(shù)的新殘差矢量,如前所述,其具有對(duì)于大多數(shù)典型CAD系統(tǒng)而言足夠的精度。
回想上述解是基于對(duì)非線性方程組的線性近似的第一次迭代,計(jì)算非線性方程組的殘差矢量的范數(shù)。因此,這種矢量的范數(shù)在10-3的數(shù)量級(jí),其不如大多數(shù)典型CAD系統(tǒng)所期望的那樣準(zhǔn)確。因此,選擇決定步驟124的“否”分支,因此重復(fù)步驟106和108(可以跳過(guò)步驟104,因?yàn)闃?shù)1000已經(jīng)被生成)。對(duì)非線性方程組的線性近似的第二迭代產(chǎn)生大約10-10的數(shù)量級(jí)的殘差矢量范數(shù),其仍可能不如期望的那樣精確。因此,再次選擇判定步驟124的“否”分支,因此重復(fù)步驟106和108。對(duì)非線性方程組的線性近似的第三迭代產(chǎn)生大約10-17的數(shù)量級(jí)的殘差矢量范數(shù),其落在許多典型的CAD系統(tǒng)的典型的期望精度內(nèi)。因此,選擇決定步驟124的“是”分支,結(jié)束程序10的計(jì)算步驟。
如前所述,噪聲因子δ是優(yōu)選地基于程序10的部分期望精度選擇的一設(shè)計(jì)參數(shù)。注意,,由程序40計(jì)算的更新的協(xié)方差矩陣是由于選擇的噪聲因子的值,才被保持為非奇異矩陣。如先前參考圖11C中的矩陣P(s4)所提及的,矩陣可以是近乎奇異的。事實(shí)上,如果選擇太小的噪聲因子值,則更新的協(xié)方差矩陣將變?yōu)槠娈惖?,?dǎo)致程序10在一單次迭代之后結(jié)束。
注意,盡管如上所述的程序涉及用于確定具有應(yīng)用于CAD系統(tǒng)的幾何實(shí)體的模型的配置的示例性實(shí)施例,但是其他實(shí)施例也是可能的,其中實(shí)體是非幾何實(shí)體。這樣的實(shí)施例在各種工業(yè)應(yīng)用中是有價(jià)值的,并且在運(yùn)籌學(xué)問(wèn)題中可能特別有價(jià)值。這種可應(yīng)用的運(yùn)籌學(xué)問(wèn)題的示例是位置選擇。這樣的運(yùn)籌學(xué)問(wèn)題涉及諸如倉(cāng)庫(kù)等的設(shè)施的位置,以向一客戶(hù)集合提供需求。對(duì)于每個(gè)客戶(hù),存在從設(shè)施位置供應(yīng)客戶(hù)的相關(guān)成本。位置選擇問(wèn)題的目標(biāo)是選擇建立設(shè)施的位置的子集合,然后將每個(gè)客戶(hù)分配給設(shè)施,以便降低總成本。因此,這種問(wèn)題的限制確保了所有客戶(hù)都從一個(gè)設(shè)施提供,并防止任何客戶(hù)被分配到缺少設(shè)施的位置。
可應(yīng)用的運(yùn)籌學(xué)問(wèn)題的其他示例包括但不限于機(jī)器生產(chǎn)工業(yè)中的作業(yè)調(diào)度問(wèn)題,汽車(chē)制造排序問(wèn)題,車(chē)輛路線問(wèn)題以及用于航空旅行的乘務(wù)組。
另外,本文描述的程序在用于資源分配的工業(yè)優(yōu)化問(wèn)題中可能特別有價(jià)值,例如,通過(guò)一管路網(wǎng)絡(luò)將氣體從多個(gè)來(lái)源分布到多個(gè)消費(fèi)者。在這樣的資源分布問(wèn)題中,氣體可以在網(wǎng)絡(luò)中的每個(gè)消費(fèi)者點(diǎn)處重新分布。因此,這種問(wèn)題的約束由氣體的再分布來(lái)限定。這樣的問(wèn)題還可以使用依賴(lài)于大矩陣的逆矩陣的線性規(guī)劃單純方法來(lái)解決。具有n行和n列的一矩陣的逆矩陣可以被認(rèn)為是求解n個(gè)方程組,每個(gè)方程組具有n個(gè)變量和n個(gè)方程。因此,上述資源分布問(wèn)題可以通過(guò)直接應(yīng)用本文描述的程序以反轉(zhuǎn)單純方法所需的矩陣來(lái)解決。
應(yīng)當(dāng)理解,上述描述僅旨在用作示例,并且在如所附權(quán)利要求所限定的本發(fā)明的范圍內(nèi),許多其它實(shí)施例是可能的。