專利名稱:用于解決一類現(xiàn)實組合優(yōu)化問題的算法開發(fā)環(huán)境的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成的問題解決領(lǐng)域。更具體地,本發(fā)明涉及一種系統(tǒng),其 用于利用任何其他形式的啟發(fā)式或超啟發(fā)式搜索快速開發(fā)具有混合可能性 的遺傳算法,以解決組合優(yōu)化問題的特定類的現(xiàn)實應用。實現(xiàn)這種定制算法 的方法只需對編碼花很少的精力,卻交出高效解決給定類的問題的算法形式 的結(jié)果。在一種方式中,本發(fā)明涉及配置用于提供供應鏈管理的解決方案的遺傳算法(GA),但是應理解的是本發(fā)明并非僅限于該用途。
技術(shù)背景本說明書中的討論是由于發(fā)明人認識到某些現(xiàn)有技術(shù)的問題而產(chǎn)生。 在最近幾十年,現(xiàn)實情況中組合優(yōu)化的應用日益增多。經(jīng)常地,這些現(xiàn) 實情況問題對應于己在學術(shù)中被分類的多類組合優(yōu)化問題。隨著問題范圍的 擴大,這些問題的計算復雜度趨向于指數(shù)增長。這些問題屬于被稱之為 NP-hard的一類問題。NP-hardness使得這些優(yōu)化問題通過精確的窮舉方法或 確定性的算法是難以計算的。因此,出現(xiàn)很多基于啟發(fā)式和超啟發(fā)式的方法 以滿足為這些問題配置快速和高效的解決方案的需要。這些方法被分類為逼 進解決方法,且算法通常在本質(zhì)上是非確定性的。例子可包括進化計算、模 擬退火、禁忌搜索、神經(jīng)網(wǎng)絡、自適應貪婪方法,以及最近的諸如蟻群優(yōu)化 的群集智能方法。但是,為了利用這些算法的能力解決現(xiàn)實問題,通常需要花相當多的精 力來設計、實現(xiàn)和定制算法以適合問題領(lǐng)域的具體性質(zhì)。常規(guī)算法開發(fā)過程 往往需要大量的繁重且低效的低級代碼生成和修改??紤]到這些,越來越多 的人轉(zhuǎn)為開發(fā)平臺以使算法開發(fā)和問題解決過程更加容易。特別關(guān)心的是涉及進化算法的這類問題解決環(huán)境,所述進化算法已經(jīng)由于其普遍性和健壯性 而吸引了很多的注意。在美國專利No.6,112,126中,提出了一種自適應的面向?qū)ο蟮膬?yōu)化系統(tǒng), 其包括目標搜尋(goal-seeking)智能軟件對象。但是,本發(fā)明僅專用于解決 過程控制優(yōu)化。它對一般的問題解決沒有多少幫助。在美國專利No.6,263,352、美國專利No.6,086,617中,提出了Epogy過 程集成和設計優(yōu)化軟件以及遞階進化工程設計系統(tǒng)(HEEDS)軟件、具有包 括遺傳算法的各種優(yōu)化技術(shù)的問題解決環(huán)境。它們提供了友好用戶界面以研 究用于解決所提出的不同的優(yōu)化問題的各種優(yōu)化工具。這一類平臺促進了算 法設計過程并因此大大提高了解決問題的效率。但是,這些軟件工具實質(zhì)上 是模擬環(huán)境。雖然在這些環(huán)境下各種算法可以被配置和高效地執(zhí)行,但該執(zhí) 行依賴于整個系統(tǒng)。雖然是總控問題解決算法,但對于需要嵌入的實時解算 器的應用,這一類環(huán)境不提供配置高效獨立程序的靈活性。在美國專利 No.5,581,657中,在特定遺傳算法中,引入了分布計算技術(shù)以增強現(xiàn)有的優(yōu) 化技術(shù)解決問題的能力。但是,因為它實質(zhì)上仍是算法執(zhí)行者,不能滿足快 速生成獨立問題解決算法的需要。在美國專利No.6,286,017中,提出了一種幫助用戶快速生成獨立應用的 圖形環(huán)境。它包括由表格處理軟件(spreadsheet)管理的模塊庫,并采取其 他軟件重用技術(shù)。用戶能利用它提供的友好的圖形用戶界面(GUI)從庫中 獲得過程?;谒x的過程,自動生成獨立的應用。但是,該發(fā)明僅針對編 程事件。它不涉及任何算法設計知識。因此,當需要開發(fā)諸如超啟發(fā)法的復 雜算法時,它可能不滿足解決方法的需要。TOMLAB是MATLAB中的普通優(yōu)化環(huán)境。它實質(zhì)上是MATLAB工具 箱,其封裝了各種優(yōu)化過程,該過程包括類似遺傳算法的復雜的超啟發(fā)法。 它大概使用戶很容易獲得集成的過程和例程以建立源代碼形式的應用。但是,它不能自動生成源代碼且用戶必須處理功能編程語言,即MATLAB編 程語言。這對可能不熟悉MATLAB語言的用戶是個大障礙。而且,它需要 昂貴的第三方軟件環(huán)境,即MATLAB,的支持。進化算法的簡單規(guī)范(EASEA)是專用于進化算法(EA)規(guī)范的高級 腳本語言。它從公知的EA庫中獲取各種EA過程和例程GALib禾卩EO。 用戶用EASEA語言編寫.ez文件以配置進化算法。然后EASEA編譯器將.ez 文件編譯成C十+文件。然后所生成的0++文件被編譯并與對應的庫鏈接以產(chǎn) 生執(zhí)行原始.ez文件中指定的進化算法的可執(zhí)行文件。這樣,可避免算法開 發(fā)中最繁重的代碼生成工作。因此,可以顯著提高應用開發(fā)的效率。但是, EASEA以及其他類似的語言,即進化算法建模語言(EAML),仍然是一種 基于文本形式的語言,雖然它比任何功能編程語言具有更高的抽象度。這兩 種腳本語言都需要專門設計的編譯器來將腳本語言轉(zhuǎn)換成功能編程語言。而 且,普通用戶必須熟悉該語言的語法。本發(fā)明書中文檔、設備、行為或知識的任何討論都被包括以解釋本發(fā)明 的上下文。不應當認為是承認任何所述材料形成為部分現(xiàn)有技術(shù)的基礎或此 處的公開內(nèi)容和權(quán)利要求的優(yōu)先權(quán)日或之前的相關(guān)技術(shù)中的普通公知常識。發(fā)明內(nèi)容大體上,本發(fā)明提供了一種用于解決至少一個組合優(yōu)化問題的配置搜索 算法的過程組件的數(shù)據(jù)結(jié)構(gòu),以及使用所述結(jié)構(gòu)的方法和裝置。所述數(shù)據(jù)結(jié) 構(gòu)是具有與配置過程組件的方式相關(guān)聯(lián)的節(jié)點的樹。數(shù)據(jù)樹的遍歷對應于配置過程組件的步驟。通過遍歷算法而引導用戶逐節(jié)點地經(jīng)過樹結(jié)構(gòu),在每個節(jié)點在可用的選 項間做選擇。某些所述選項包括確定遍歷算法采取哪一路徑經(jīng)過樹結(jié)構(gòu)的選 項。這使通用的軟件系統(tǒng)成為可能,該軟件系統(tǒng)提供開放且友好的界面;使9用戶能夠根據(jù)解決方法而快速地配置進化算法并自動地優(yōu)化算法的配置以 解決一類組合優(yōu)化問題。所提到的這類問題是那些其解決方案可被表示為排列串結(jié)構(gòu)(permutation string structure)的問題。本發(fā)明的第一個具體表達是配置用于解決至少一個組合優(yōu)化問題的搜 索算法的一個或多個過程組件的一種方法,所述方法對每個過程組件使用代 表配置該過程組件的方式的對應數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括在樹結(jié)構(gòu)中被關(guān)聯(lián)到一起的多個節(jié)點,多個所述節(jié)點 代表將要做出的用于配置過程組件的相應選擇。所述方法包括通過遍歷算法遍歷樹結(jié)構(gòu)來配置所述過程組件,其中多個 所述節(jié)點依次被標記為當前節(jié)點,以及,在當前節(jié)點代表將要做出的用于配 置過程組件的選擇時,接收做出當前節(jié)點所代表的選擇的輸入。本發(fā)明的可替換點可以用所述方法中使用的數(shù)據(jù)結(jié)構(gòu)來表示。特別地,本發(fā)明的可替換表達是一種配置用于解決至少一個組合優(yōu)化問 題的搜索算法的過程組件所使用的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)結(jié)構(gòu)包括代表算 法的過程組件的可能配置的樹結(jié)構(gòu),所述樹結(jié)構(gòu)包括-代表算法的組件的主節(jié)點;起源于所述主根節(jié)點的一個或多個第一節(jié)點,每個第一節(jié)點是(i)代 表配置過程組件的一個或多個選項的變化節(jié)點(variationnode),或者(ii) 代表配置過程組件所需的一個或多個選擇的屬性節(jié)點(propertynode);一個或多個第二節(jié)點,每個第二節(jié)點起源于所述第一節(jié)點之一,其中如 果第二根節(jié)點起源于變化節(jié)點,所述第二節(jié)點代表對應選項之一,以及如果 第二根節(jié)點起源于屬性節(jié)點,所述第二節(jié)點代表選擇之一。本發(fā)明的可替換表達是一種配置用于解決組合優(yōu)化問題的搜索算法的 過程組件所使用的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)結(jié)構(gòu)包括代表算法的組件過程的 可能配置的樹結(jié)構(gòu),所述樹結(jié)構(gòu)包括在分層結(jié)構(gòu)中鏈接在一起的多個子樹; 每個子樹與過程組件的對應方面相關(guān)聯(lián),以及是以下之一與配置過程組件的對應方面的多個選項相關(guān)聯(lián)的變化子樹,或 與過程組件的對應方面所需的一個或多個選擇相關(guān)聯(lián)的屬性子樹。 在本發(fā)明的另一方面中提供一種在配置用于解決組合優(yōu)化問題的算法 中所使用的數(shù)據(jù)格式,其中所述數(shù)據(jù)格式包括樹結(jié)構(gòu),所述樹結(jié)構(gòu)包括-主根節(jié)點;起源于所述主根節(jié)點的至少一個第一根節(jié)點;起源于所述第一根節(jié)點的至少一個第二根節(jié)點,其中所述至少一個第二 根節(jié)點包括下列之一a) 所述第一根節(jié)點的變化;b) 指向所述第一根節(jié)點的一個或多個變化的節(jié)點;c) 所述第一根節(jié)點的每個變化所共有的屬性;d) 指向所述第一根節(jié)點的每個變化所共有的屬性的節(jié)點;e) 另一個第一根節(jié)點;f) 另一個第二根節(jié)點;g) NULL。在另一方面中,本發(fā)明提供一種配置用于生成解決至少一個組合優(yōu)化問 題的算法的啟發(fā)式搜索過程的至少一個過程組件的方法,所述至少一個過程 組件包括具有變化節(jié)點和屬性節(jié)點的樹結(jié)構(gòu),所述方法包括根據(jù)以下步驟遍 歷所述樹結(jié)構(gòu)-a) 選擇包含起源于所述樹的主根節(jié)點的根節(jié)點的子樹;b) 選擇起源于所述根節(jié)點的一個節(jié)點;c) 確定所選的一個節(jié)點是葉節(jié)點還是另一子樹的根節(jié)點;d) 如果所選的一個變化節(jié)點是另一子樹的根節(jié)點,對所述另一子樹重復步驟b)和C);e)如果所選的一個節(jié)點是葉節(jié)點,返回所述葉節(jié)點的值以配置過程組件;其中執(zhí)行步驟a)到e)以使得變化節(jié)點優(yōu)先于屬性節(jié)點。 優(yōu)選地,所述算法可包括遺傳算法和/或混合遺傳算法。 在另一方面中,本發(fā)明提供一種配置用于解決優(yōu)化問題的遺傳算法的方 法,所述方法包括步驟-a) 提供代表遺傳算法的各個可能的配置的初始的染色體群體;b) 基于適應度(fitness)函數(shù)評價染色體群體以指定群體的成員作為父代;c) 對父代執(zhí)行一個或多個遺傳操作以繁殖后代;d) 用后代和父代一起更新群體;e) 確定所更新的群體是否滿足結(jié)束條件;f) 重復步驟a)到e)直到滿足結(jié)束條件。在優(yōu)選方面中,本發(fā)明提供適于配置用于生成解決至少一個組合優(yōu)化問 題的算法的啟發(fā)式搜索過程的至少一個過程組件的設備,所述設備包括適于 根據(jù)預定的指令集操作的處理器裝置(means),結(jié)合有所述指令集的所述設 備適于執(zhí)行此處公開的方法。在另一優(yōu)選方面中,本發(fā)明提供一種計算機程序產(chǎn)品,該產(chǎn)品包括-計算機可用介質(zhì),該介質(zhì)包括包含在所述介質(zhì)上的計算機可讀程序代碼 和計算機可讀系統(tǒng)代碼,其用于在數(shù)據(jù)處理系統(tǒng)中配置用于生成解決至少一 個組合優(yōu)化問題的算法的啟發(fā)式搜索過程的至少一個過程組件,所述計算機 程序產(chǎn)品包括所述計算機可用介質(zhì)中的計算機可讀代碼,其用于執(zhí)行此處公開的方法 中的任何一個方法的方法步驟。本發(fā)明的優(yōu)選實施例使得本發(fā)明可以滿足總控解決方案提供者的需要 和挑戰(zhàn)。所述優(yōu)選實施例為開發(fā)者提供了平臺以通過集成的問題解決環(huán)境來 配置用于高效解決現(xiàn)實優(yōu)化問題的算法。不具有關(guān)于算法設計的很深的背景 知識和具有中等水平的編程技能的用戶或系統(tǒng)集成商,可使用該平臺配置和 生成混合有環(huán)境中提供的任何啟發(fā)法或超啟發(fā)法的遺傳算法。結(jié)果是基于很 高水平的用戶說明書而生成的獨立程序。通過將問題領(lǐng)域具體特征引入源代 碼,用戶需要很少的編碼精力就可定制生成的解決各種關(guān)心的問題的程序。 這樣,算法開發(fā)的效率得到了顯著的提高。本發(fā)明特別適用于這類具有排列解析結(jié)構(gòu)(solution structure)的優(yōu)化問題,因為很多現(xiàn)實問題的解決方案可 歸結(jié)為排列串。利要求中,形成本發(fā)明的說明的一部分。特別是,本發(fā)明的某些實施例提供了許多優(yōu)點和/或有益的結(jié)果,如下1、 用于設計和開發(fā)解決復雜優(yōu)化問題的高效算法的綜合問題解決環(huán)境。2、 所述環(huán)境與用于設計和配置混合遺傳算法的變量的開發(fā)平臺有關(guān)。3、 遺傳算法開發(fā)平臺致力于一類廣泛適用的組合優(yōu)化問題,由此解析 結(jié)構(gòu)可用排列串代表。4、 所述遺傳算法開發(fā)平臺還包括基于模塊的過程庫。5、 所述基于模塊的庫采用"左變化-右屬性"樹結(jié)構(gòu)的新的分層樹結(jié)構(gòu) 作為管理和組織過程模塊的方法。6、 所述遺傳算法開發(fā)平臺還包括用于配置混合遺傳算法的高級圖形用 戶界面。7、 所述圖形用戶界面實現(xiàn)了用于算法配置的樹結(jié)構(gòu)的可視化。8、 所述"左變化-右屬性"樹結(jié)構(gòu)還包括"左變化-右屬性"樹遍歷規(guī)則。 這種遍歷規(guī)則,與深度優(yōu)先樹遍歷規(guī)則一起,引導用戶通過沿著分層樹和子樹遍歷而完成算法的配置。9、 所述基于模塊的庫基于面向?qū)ο蟮臉?gòu)架。10、 源代碼生成器,其能基于用戶指定的配置來生成獨立程序,并且基 于面向?qū)ο蟮幕谀K的庫和以上樹結(jié)構(gòu)而被執(zhí)行。11基于目標搜尋的程序定制由源代碼生成器產(chǎn)生,以解決各種優(yōu)化問題。通過下面給出的詳細說明,本發(fā)明的其他適用范圍將變得明顯。但是應 理解,詳細說明和具體實施例雖然表明了本發(fā)明的優(yōu)選實施例,但僅通過示 例性方式給出,因為通過這些詳細說明,本發(fā)明的主旨和范圍中的各種改變 和修改對本領(lǐng)域技術(shù)人員而言是很顯然的。
通過參考結(jié)合附圖的優(yōu)選實施例的以下說明,相關(guān)領(lǐng)域技術(shù)人員可以更 好地理解本申請的其他公開內(nèi)容、目的、優(yōu)點和方面,其僅通過示例性的方式給出,且因此不是對本發(fā)明的限制,其中圖1顯示了遺傳算法(或混合遺傳算法)流程圖的一些可能的功能構(gòu)造, 由可被作為本發(fā)明的實施例的方法和裝置配置的搜索算法中的過程組件組 成。圖2顯示了本發(fā)明的一個實施例,其是組件"后代生產(chǎn)者"的分層樹結(jié)構(gòu)。圖3顯示了本發(fā)明的一個實施例,其是組件"個體操作"的樹結(jié)構(gòu)。 圖4顯示了本發(fā)明的一個實施例,其是組件"群體初始化"的樹結(jié)構(gòu)。 圖5顯示了本發(fā)明的一個實施例,其是組件"群體更新"的樹結(jié)構(gòu)。 圖6顯示了本發(fā)明的一個實施例,其是組件"群體評價"的樹結(jié)構(gòu)。 圖7顯示了本發(fā)明的一個實施例,其是組件"結(jié)束條件"的樹結(jié)構(gòu)。圖8示出了組件"后代生產(chǎn)者"的示例配置的流程。圖9顯示了根據(jù)結(jié)構(gòu)觀點而將任一遺傳算法分成三個組件。
具體實施方式
實用性本發(fā)明具有廣泛的實用性。其用作問題解決環(huán)境的效用的證明己實現(xiàn)為 具有工業(yè)相關(guān)性的應用。對本發(fā)明的基于排列的問題使用算法開發(fā)環(huán)境,生 成混合遺傳算法以及隨后集成到供應鏈管理工作流?;旌螱A作為計劃和調(diào) 度引擎以管理由一隊卡車將燃料分配到零售店(用于駕車者的加油站)。每個零售店提交針對補充燃料的種類和數(shù)量的訂單或需求。我們把全部計劃者稱為燃料燃料運送卡車調(diào)度系統(tǒng)(FTDS)。每輛卡車 具有有限的容量。從指定的倉庫或分配中心開始,它只能運載有限數(shù)量的燃 料以分派到給定區(qū)域中的各個站。優(yōu)化的主要目的是使分派成本最小,其通 常由總的運送距離或時間而定。FTDS幫助計劃人為燃料卡車生成一組路徑。 除了卡車容量的限制,通常有更多約束,如時間因素(在指定時間期限中遞 送)和服務優(yōu)先級,也需要考慮。由于本發(fā)明的優(yōu)選實施例,我們配置了混合遺傳算法并生成了對應的源 代碼。結(jié)合問題領(lǐng)域具體特征后,如卡車和站點信息、距離信息等,在相當 短的時間內(nèi)獲得了調(diào)度程序的第一個版本。利用常規(guī)的系統(tǒng)開發(fā)方法,算法 的編碼周期可能需要幾周或甚至幾個月。常規(guī)的算法開發(fā)過程通常需要花很多精力在低級代碼生成和修改。這是 繁重和低效的,且似乎不能跟上應用的數(shù)量以及多樣性的迅速增長,以及伴 隨著這一事實 一些問題領(lǐng)域的復雜度需要手工算法以獲得適度的可接受的 性能水平??紤]到這些,需要開發(fā)一個平臺以集成有關(guān)用于解決特定類的問 題的算法的設計和開發(fā)的資源。在本發(fā)明的實施例中,我們致力于具有排列解析結(jié)構(gòu)的這類優(yōu)化問題。這意味著問題的任何可能的解決方案可被編碼為 排列串。在本發(fā)明的優(yōu)選實施例中,典型的系統(tǒng)結(jié)合了用于配置解決適于所提到 的這類問題的優(yōu)化問題的解決方法的過程模塊。利用這些實施例,可以方便 地配置遺傳算法的基于啟發(fā)式的過程。圖1示出了 GA (或混合GA)流程圖的一些可能的配置。從圖中,GA 模塊中有6個組件。首先,"群體初始化"過程產(chǎn)生初始的染色體群體。然 后,在生成環(huán)中,基于適應度函數(shù)評價這些染色體。在大多數(shù)情況下,關(guān)于 群體的統(tǒng)計信息還需要通過"群體評價"過程模塊獲得。之后,個體的群體 被指定為父代。使用"后代生產(chǎn)者"過程(例如,交叉和/或克隆),父代繁 殖以創(chuàng)建后代的成員。雖然在GA中不是必須的,"個體操作"(例如變異和 /或局部搜索)經(jīng)常應用于改變或提高后代的這些現(xiàn)有成員的遺傳成分。最后, 遵循"群體更新"機制,所產(chǎn)生的后代和父代一起,組成了新的父代群體用 于進一步繁殖。重復此過程直到GA搜索收斂或滿足結(jié)束條件。模塊的每個組件與為用戶提供用于調(diào)節(jié)和測試算法的各個配置的選項 的一組屬性和性質(zhì)相關(guān)。以分層樹結(jié)構(gòu)管理和組織所有屬性和性質(zhì)。我們將 這一結(jié)構(gòu)稱為"左變化一右屬性"樹結(jié)構(gòu)。圖2表示了 "后代生產(chǎn)者"組件的樹結(jié)構(gòu)。它用于從用于后續(xù)繁殖操作 的父代生成后代個體。"后代生產(chǎn)者"的形式為虛線橢圓節(jié)點的左孩子變化 作為左子樹的根以表示其父代的變化,即"后代生產(chǎn)者"(例如交叉和克隆 等),而作為右孩子的虛線矩形框"屬性"是右子樹的根,表明"后代生產(chǎn) 者"的所有變化的共同屬性,如"父代選擇"。類似地,后續(xù)的子樹按相同 結(jié)構(gòu)而被管理和組織。例如,作為"后代生產(chǎn)者"的變化之一的"交叉"包 含變化,如"一致交叉"、"順序-l交叉"、"一點交叉"等等,組織在其左子 樹中。同時,所有這些變化具有一個共同特征,即,"交叉率(crossoverrate)",16用六邊形框表示的實數(shù)參數(shù)。因此,其被表示為"交叉"的右子樹中的節(jié)點。 注意,虛線框"變化"和"屬性"還以不同方式限定配置左和右子樹的規(guī)則。 對于"變化"子樹,用戶僅需選擇其一個孩子(即一個變化)并配置這個孩 子的對應子樹。對于"屬性"子樹,需要配置所有的孩子。當系統(tǒng)實現(xiàn)遍歷 算法時,遞歸地應用此規(guī)則以遍歷先前存在的樹結(jié)構(gòu),需要用戶在所有需要 從多個選項或者數(shù)值中進行選擇的點之處進行輸入。系統(tǒng)由此而指導用戶配 置可行的算法。本領(lǐng)域技術(shù)人員會認可,不難理解這一分層樹結(jié)構(gòu)可隨意容納其他用于 進行修飾的過程。過程可與現(xiàn)有的過程定位在相同水平,作為它們的兄弟。例如,其他交叉操作符,如部分匹配交叉(PMX),通過將它們定位為現(xiàn)有 "一致交叉"、"順序-l交叉"和"一點交叉"的兄弟,可以容易地引入系統(tǒng)。 使用與前述相同的樹結(jié)構(gòu)來管理它們對應的性質(zhì)和特征。因此,此結(jié)構(gòu)可提 供開放和易于升級的系統(tǒng)。注意,樹結(jié)構(gòu)可以以多種方式重新設計而不改變其重要性或有用性,且 不將樹結(jié)構(gòu)排除在本發(fā)明的范圍之外。例如,標記為"父代選擇"的節(jié)點的 屬性(右)子樹是空的("NULL"),表明不必選擇屬性。在本發(fā)明的范圍內(nèi) 設計樹結(jié)構(gòu)的另一技術(shù)中,標記為NULL的節(jié)點可從圖中省略。在設計樹結(jié) 構(gòu)的又一技術(shù)中,標記為"屬性"的節(jié)點也可省略。圖3示出了 "個體操作"組件的樹結(jié)構(gòu)。它是應用于現(xiàn)有個體以提高其 質(zhì)量或改變其結(jié)構(gòu)的一組過程。我們結(jié)合兩種形式的"個體操作""2-交換 局部搜索"和"變異"。結(jié)合了幾個局部搜索的變化如"禁忌搜索"以及兩 種形式的變異(擾亂變異和有窗變異)。如上所述,通過遵循"左變化-右屬 性"規(guī)則,可引入任何已建立的過程。圖4示出了 "群體初始化"組件的樹結(jié)構(gòu)。遺傳算法開始于將要被指定 為父代的初始群體。"群體初始化"過程負責生成該初始群體。在這個組件中,指定了群體大小(重要的GA參數(shù))。初始的個體群體的質(zhì)量能夠?qū)φ?個遺傳算法的性能具有顯著影響。因此, 一般應用某些類型的基于啟發(fā)法的 局部搜索以提高初始群體的質(zhì)量。本發(fā)明為用戶提供對初始的個體群體應用 "個體操作"的選項。注意,圖4中的條目100是"個體操作"的獨立實例。 其配置可不同于生成環(huán)(如果有的話)中"個體操作"的配置。我們在圖4 中省略這個子樹的結(jié)構(gòu),其已通過圖3的方式而被詳細表示。圖5示出了 "群體更新"框的樹結(jié)構(gòu)。其用于確定哪個后代應該被接受 到選擇池中用于進一步繁殖下一代。這三個方案被顯示為子樹以及每個方案 簡要解釋如下-PU_1:用一定數(shù)量的精英(精英數(shù)目)替換重疊群體。PU一2: —旦產(chǎn)生一定數(shù)量(更新間隔)的后代,僅來自父代的最好的 染色體和后代被接受并添加到選擇池中。PU一3:只接受比最差的現(xiàn)有父代好且不同于現(xiàn)有群體中的成員的孩子。 "精英數(shù)目"和"更新間隔"是屬性并分別被設置為PU一1和PU_2的 實數(shù)參數(shù)。圖6示出了"群體評價"框的樹結(jié)構(gòu)。它用于評價當前父代群體。因此, 用于評價個體適應度的"適應度函數(shù)"被封裝在這個組件中作為其屬性。此 外, 一些預處理,如"適應度換算"和"分類"經(jīng)常在繁殖開始之前應用于 父代群體。我們引入4種換算方法線性換算、E截斷、冪律換算和分級。 其中一些與實數(shù)參數(shù)相關(guān),實數(shù)參數(shù)被設置為與對應的換算方法相關(guān)的屬 性。圖7示出了"結(jié)束條件"框的樹結(jié)構(gòu)。其用于控制結(jié)束遺傳算法的模式。我們貫徹了三個準則"時間"、"代的最大數(shù)目"和"收斂"。時間準則當用戶定義的計算時間限制到達時結(jié)束遺傳算法,而"代的最大數(shù)目"準則當?shù)?代的數(shù)目到達用戶指定的代數(shù)時結(jié)束算法。"收斂"準則通過計算連續(xù)的解決質(zhì)量沒有任何提高的代的數(shù)目來檢測進化是否收斂。 一旦所述數(shù)目超過用 戶限定的值,認為進化過程已收斂并因此結(jié)束。利用由上述分層樹結(jié)構(gòu)管理的基于模塊的過程庫,用戶能夠自由地研究算法設計的各個方面。從圖2到圖7,顯示出,與被配置的算法相關(guān)的可能 "特征"被定位為對應樹中的葉節(jié)點。這表明,用戶確定算法的某一"特征" 的工作實際上是找出在對應樹中從根節(jié)點到特定葉節(jié)點的路徑的過程。因 此,配置完整算法的任務成為遍歷樹以找出從根節(jié)點開始到葉節(jié)點的一組路 徑的過程,遞歸地應用上述"左變化-右屬性"規(guī)則。在本發(fā)明中,應用深 度優(yōu)先遍歷模式。圖8示出了組件"后代生產(chǎn)者"的示例配置的流程。從根開始,它首先 遍歷"后代生產(chǎn)者"的變化(左)子樹。根據(jù)"左變化-右屬性"規(guī)則,僅 選擇一個變化,例如"交叉"。然后繼續(xù)遍歷對應的子樹("交叉")。按照深 度優(yōu)先規(guī)則(中序遍歷,LVR模式),它首先遍歷"交叉"的變化(左)子 樹,假設用戶選擇"一致"交叉,它到達第一葉節(jié)點,并繼續(xù)遍歷"交叉" 的屬性(右)子樹。與之相關(guān)的是實數(shù)參數(shù)"交叉率"。為"交叉率"指定 實數(shù)值參數(shù)之后,流程前進到第二葉節(jié)點并繼續(xù)遍歷"后代生產(chǎn)者"的屬性 (右)子樹。這里,只剩下"父代選擇"特征要被配置。為此,我們從遍歷 "父代選擇"的變化(左)子樹開始。假設用戶從"父代選擇"可用的三個 變化中選擇"競賽",它到達第三葉節(jié)點。因為"父代選擇"的屬性(右) 子樹是空的(NULL),這棵樹的遍歷和這個組件的配置完成。上述遍歷過程 覆蓋了從根節(jié)點到三個葉節(jié)點的三個路徑"一致"、"交叉率"和"競賽"。 這樣,用戶配置了可行的"后代生產(chǎn)者"實例,這是一種利用競賽父代選擇 方法和實數(shù)交叉率的一致交叉的形式。此算法的其他組件的配置可以類似地 進行以獲得完整的遺傳算法。注意,利用分層樹結(jié)構(gòu),系統(tǒng)開發(fā)者在配置算法的過程中僅通過圖形用戶界面參與高級用戶系統(tǒng)交互以處理具體問題領(lǐng)域。任何遺傳算法的變化可用流程圖表示,其基于上述的6個組件的框而得到。每個組件的配置可以用 樹結(jié)構(gòu)可視化實現(xiàn)。用這種方法,即使具有有限算法設計專業(yè)知識的一般用 戶都能通過非常高水平和直觀的圖形界面來配置和設計各種遺傳算法。這 樣,算法設計的效率大大提高。配置所需的遺傳算法后,用戶能使用本發(fā)明的代碼生成器基于他/她指 定的配置生成源代碼,例如,C+十源代碼文件。本發(fā)明采用面向?qū)ο蟮臉?gòu)架 來實現(xiàn)代碼生成功能。樹結(jié)構(gòu)中每個節(jié)點(除了 "變化"和"屬性"節(jié)點, 可認為其是附屬節(jié)點)被當作對象(即使對實數(shù)參數(shù),因為它可具有如范圍、 精度等屬性)并被實現(xiàn)為類。對樹中的任一對象,其屬性子樹成員可被表示 為類的成員變量。"變化"孩子可被實現(xiàn)為父代(基類)的子類。孩子還可 具有其自己的特征,即變化和/或?qū)傩?,可以被類似地設置為其超類(super class)和/或成員變量。從上述說明中,用戶配置信息被存儲在樹結(jié)構(gòu)中。優(yōu) 選實施例中的代碼生成器的基本原理是沿著由用戶配置限定的從根到葉節(jié) 點的路徑,以及然后按照.h文件和.cpp文件獲取并生成對應的對象Z類。所有 生成的文件構(gòu)成獨立程序。它可以看作用于解決各種現(xiàn)實問題的遺傳算法模 塊。如圖9所示,任何遺傳算法從結(jié)構(gòu)的觀點都可被分成3個組件遺傳表 示、遺傳操作和適應度函數(shù)。本發(fā)明的優(yōu)選實施例致力于基于排列的優(yōu)化問 題。自動地生成編碼為排列串的人工染色體。所有遺傳操作,如交叉和變異, 是專門為處理排列串而設計的。它們通常是與問題無關(guān)的,雖然不同操作可 導致因問題而異的性能。因此,通常花費大多數(shù)的編碼時間的遺傳操作的生 成也遵循用戶的高級說明書而被自動完成。僅適應度函數(shù)涉及問題的具體領(lǐng) 域信息,并因此是與問題相關(guān)的。適應度函數(shù)用于基于所討論的問題的具體 領(lǐng)域的知識來評價個體。它在指導GA研究整個解決前景中發(fā)揮很大作用。它對指導算法向最優(yōu)收斂也很重要。給定問題的具體領(lǐng)域信息可以只被存儲 在特別生成的類問題中。原則上,人們只需在所生成的遺傳算法模塊中手 工實現(xiàn)適應度函數(shù)以為解決特定領(lǐng)域的問題而定制它。注意,適應度函數(shù)的 空白模塊也被生成為源代碼占位符。用戶只需重寫它的函數(shù)體來為不同的問 題定制算法。這樣,避免了算法開發(fā)中最耗時的代碼生成工作。還最小化了 代碼修改和定制所耗的精力。它與上述算法設計的高級配置過程一起,顯著 提高了算法開發(fā)的效率。雖然已結(jié)合本發(fā)明的具體實施例描述了本發(fā)明,但應該理解為能做進一 步的修改。本申請意欲覆蓋本發(fā)明的任何變化用途或改編,所述改編大體上 遵循本發(fā)明的原理且包括脫離本公開內(nèi)容但屬于在本發(fā)明所屬的領(lǐng)域中的 已知的或慣例的實踐的范圍且可應用于上述本質(zhì)特征的那些改變。因為本發(fā)明可以在不脫離本發(fā)明的本質(zhì)特征的主旨的情況下被實現(xiàn)為 幾種形式,應理解除非指定,上述實施例并非用于限制本發(fā)明,而應在所附 權(quán)利要求所限定的本發(fā)明的主旨和范圍內(nèi)進行寬泛地理解。意欲將各種修改 和等價布置包括在本發(fā)明和所附權(quán)利要求的主旨和范圍中。因此,具體實施 例應被理解為可實踐本發(fā)明的原理的很多方式的示例。在以下的權(quán)利要求 中,裝置+功能句子意欲覆蓋執(zhí)行限定功能的結(jié)構(gòu),并且不僅是結(jié)構(gòu)的等價, 還有等價結(jié)構(gòu)。例如,雖然釘子和螺絲釘可能不是結(jié)構(gòu)等價物,因為釘子采 用圓柱形表面把木質(zhì)部分固定在一起,而螺絲釘采用螺旋狀表面把木質(zhì)部分 固定在一起,但在緊固木質(zhì)部分的環(huán)境中,釘子和螺絲釘是等價結(jié)構(gòu)。本說明書中所使用的"包括/包含"是用于指明規(guī)定的特征、整數(shù)、步 驟或組件的存在,但并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、 組件或其組合。因此,除非上下文清楚地要求,在說明和權(quán)利要求中,詞語 "包括"、"包含"等等應被理解為包含的意思,而不是排他或窮舉的意思;即,意思是"包括,但不限于"。
權(quán)利要求
1、一種配置用于解決至少一個組合優(yōu)化問題的搜索算法的一個或多個過程組件的方法,所述方法對每個過程組件使用代表配置該過程組件的方式的對應數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括在樹結(jié)構(gòu)中共同相關(guān)聯(lián)的多個節(jié)點,多個所述節(jié)點代表將要做出的配置該過程組件的相應選擇,所述方法包括通過遍歷算法遍歷所述樹結(jié)構(gòu)來配置所述過程組件,其中多個所述節(jié)點被依次標記為當前節(jié)點,以及,在當前節(jié)點代表將要做出的配置過程組件的選擇時,接收做出當前節(jié)點所代表的選擇的輸入。
2、 根據(jù)權(quán)利要求1所述的方法,其中所述樹結(jié)構(gòu)包括一個或多個變化 子樹,每個變化子樹與用于配置所述過程組件的方面的多個選項相關(guān)聯(lián)。
3、 根據(jù)權(quán)利要求2所述的方法,其中每個變化子樹包括(i)表明配 置所述過程組件的方面的多個選項的存在的變化節(jié)點,(ii)源于變化節(jié)點并 代表相應選項的多個節(jié)點;所述遍歷算法在當前節(jié)點是變化節(jié)點時,接收這樣的輸入選擇源于當 前節(jié)點的節(jié)點中的一個單獨節(jié)點,將該節(jié)點標記為新的當前節(jié)點。
4、 根據(jù)上述任一權(quán)利要求所述的方法,其中所述樹結(jié)構(gòu)包括一個或多 個屬性子樹,每個屬性子樹與過程組件的方面所需的一個或多個選擇相關(guān) 聯(lián)。
5、 根據(jù)權(quán)利要求4所述的方法,其中每個屬性子樹包括(0表明配置 所述組件的方面所需的一個或多個選擇的存在的屬性節(jié)點,(ii)源于屬性節(jié) 點并代表相應選擇的一個或多個節(jié)點;所述遍歷算法在當前節(jié)點是屬性節(jié)點時,使源于該屬性節(jié)點的所有節(jié)點 被依次標記為新的當前節(jié)點,并且在這些節(jié)點之一變?yōu)楫斍肮?jié)點時,接收做 出對應選擇的輸入。
6、 根據(jù)權(quán)利要求5所述的方法,當依賴于權(quán)利要求3時,其中在所述 當前節(jié)點是變化節(jié)點和過程節(jié)點都源于該當前節(jié)點的節(jié)點時,首先所述變化 節(jié)點被選作當前節(jié)點,以及接下來所述屬性節(jié)點被選作當前節(jié)點。
7、 根據(jù)上述任一權(quán)利要求所述的方法,其中所述算法包括下列之一 遺傳算法;或混合遺傳算法;所述算法通過生成初始的染色體群體,以及在連續(xù)的迭代中修改染色體 群體而進行操作。
8、 根據(jù)權(quán)利要求7所述的方法,其中至少一個所述過程組件是產(chǎn)生初 始的染色體群體的群體初始化過程。
9、 根據(jù)權(quán)利要求7所述的方法,其中至少一個所述過程組件是用于評 價所述群體的質(zhì)量的群體評價過程。
10、 根據(jù)權(quán)利要求7所述的方法,其中至少一個所述過程組件是用于通 過使用現(xiàn)有的染色體來生成新染色體的后代生產(chǎn)者過程。
11、 根據(jù)權(quán)利要求7所述的方法,其中至少一個所述過程組件是單獨在 染色體上執(zhí)行的操作。
12、 根據(jù)權(quán)利要求7所述的方法,其中至少一個所述過程組件是確定何 時結(jié)束算法的結(jié)束過程。
13、 一種適于配置用于解決至少一個組合優(yōu)化問題的搜索算法的至少一 個過程組件的設備,所述設備包括適于根據(jù)預定的指令集進行操作的處理器 裝置,結(jié)合有所述指令集的所述設備適于執(zhí)行上述任一權(quán)利要求所述的方 法。
14、 一種計算機程序產(chǎn)品,該產(chǎn)品包括計算機可用介質(zhì),該介質(zhì)包括包含在所述介質(zhì)上且計算機系統(tǒng)可讀的計 算機可讀程序代碼和計算機可讀系統(tǒng)代碼,以使所述計算機系統(tǒng)執(zhí)行根據(jù)權(quán) 利要求1至12中任一項的方法。
15、 一種用于配置解決至少一個組合優(yōu)化問題的搜索算法的過程組件的 數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)結(jié)構(gòu)包括代表所述算法的過程組件的可能配置的樹結(jié)構(gòu),所述樹結(jié)構(gòu)包括主節(jié)點,代表所述算法的組件;一個或多個第一節(jié)點,起源于主根節(jié)點,每個第一節(jié)點是(i)代表用 于配置過程組件的一個或多個選項的變化節(jié)點,或者(ii)代表配置過程組 件所需的一個或多個選擇的屬性節(jié)點;一個或多個第二節(jié)點,每個第二節(jié)點起源于所述第一節(jié)點之一,其中如 果第二根節(jié)點起源于變化節(jié)點,則所述第二節(jié)點代表對應選項之一,以及如 果第二根節(jié)點起源于屬性節(jié)點,則所述第二節(jié)點代表所述選擇之一。
16、 根據(jù)權(quán)利要求15所述的一種數(shù)據(jù)格式,其中所述第二節(jié)點中的至少一者是另一子樹的主節(jié)點,該子樹是與用于配置與所述第二節(jié)點相關(guān)聯(lián)的過程組件的方面的多個選項相關(guān) 聯(lián)的變化子樹,或與關(guān)聯(lián)于所述第二節(jié)點的過程組件的方面所需的一個或多個選擇相關(guān) 聯(lián)的屬性子樹。
17、 一種用于配置解決組合優(yōu)化問題的搜索算法的過程組件的數(shù)據(jù)結(jié) 構(gòu),其中所述數(shù)據(jù)結(jié)構(gòu)包括代表算法的過程組件的可能配置的樹結(jié)構(gòu),所述樹結(jié)構(gòu)包括以分層結(jié)構(gòu)鏈接在一起的多個子樹;每個子樹與所述過程組件的對應方面相關(guān)聯(lián),并且是下列之一與用于配置所述過程組件的對應方面的多個選項相關(guān)聯(lián)的變化子樹,或與所述過程組件的對應方面所需的一個或多個選擇相關(guān)聯(lián)的屬性子樹。
18、 根據(jù)權(quán)利要求17所述的數(shù)據(jù)結(jié)構(gòu),其中每個變化子樹包括(i)表明用于配置所述過程組件的方面的多個選項的存在的變化節(jié)點,(ii)源于所述變化節(jié)點并代表相應選項的多個節(jié)點。
19、 根據(jù)權(quán)利要求17或權(quán)利要求18所述的方法,其中每個屬性子樹包 括(0表明配置所述組件的方面所需的一個或多個選擇的存在的屬性節(jié)點,(ii)源于所述屬性節(jié)點并代表相應選擇的一個或多個節(jié)點。
20、 一種配置用于解決優(yōu)化問題的遺傳算法的方法,所述方法包括以下步驟a) 提供初始的染色體群體,該群體代表遺傳算法的各個可能的配置;b) 基于適應度函數(shù)來評價所述染色體群體以由此指定該群體的成員作 為父代;c) 對父代執(zhí)行一個或多個遺傳操作以繁殖后代;d) 用所述后代和所述父代一起更新所述群體;e) 確定所更新的群體是否滿足結(jié)束條件;f) 重復步驟a)到e)直到滿足所述結(jié)束條件。
21、 根據(jù)權(quán)利要求ll所述的方法,還包括在步驟a)之前執(zhí)行以下步驟: 通過權(quán)利要求1到12中任一項所述的方法來配置軟件,以執(zhí)行步驟a)到e) 中的一個或多個步驟。
22、 一種用于生成解決至少一個組合優(yōu)化問題的算法的方法,實質(zhì)上如 此處所公開的。
23、 一種用于生成解決至少一個組合優(yōu)化問題的算法的設備,實質(zhì)上如 此處所公開的。
24、 一種實質(zhì)上如此處所公開的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)代表用于配置搜 索過程的過程組件的選項。
全文摘要
本發(fā)明涉及用于一種用于解決一類組合優(yōu)化問題的算法開發(fā)環(huán)境。很多實際的現(xiàn)實應用可歸結(jié)為組合優(yōu)化問題。近年來,提出了用于解決這些問題的很多公知的算法。努力定制滿足專用于特定領(lǐng)域的應用的算法仍很重要。而且,用于代碼生成和修改的常規(guī)方法是冗長的和由此而低效的。為了滿足快速生成用于高效解決給定類的現(xiàn)實問題的算法的需要,本發(fā)明的實施例包括了用于管理過程模塊庫的分層樹(hierarchical tree)結(jié)構(gòu)?;趦?yōu)化的管理和面向?qū)ο蟮脑O計理念,用戶通過直觀的圖形用戶界面配置并生成遺傳算法(GA)。定制生成的GA的目標搜尋方法可以很容易被實現(xiàn)以解決各種優(yōu)化問題。這樣,顯著提高了算法開發(fā)的效率。
文檔編號G06N3/12GK101331505SQ200680046884
公開日2008年12月24日 申請日期2006年12月8日 優(yōu)先權(quán)日2005年12月13日
發(fā)明者徐一梁, 林明覺 申請人:新加坡科技勁力私人有限公司;南洋理工大學