亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基因表達(dá)式編程算法的制作方法

文檔序號:6405059閱讀:333來源:國知局
專利名稱:基因表達(dá)式編程算法的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及基因算法。
背景技術(shù)
在應(yīng)用科學(xué)與工程中,廣泛使用這樣的算法,其將實驗數(shù)據(jù)擬合到一個或多個變量的線性方程或其它預(yù)先確定的函數(shù)。在將數(shù)據(jù)擬合到預(yù)先確定的函數(shù)時,確定該預(yù)先確定的函數(shù)的參數(shù)(例如,系數(shù)),其先驗為未知的。在將數(shù)據(jù)擬合到函數(shù)時,確定這些參數(shù),其可能代表理論常數(shù)(例如,電子質(zhì)量),或者僅僅是刻畫現(xiàn)象的經(jīng)驗值。在這樣的情形中,由人基于技術(shù)知識或已有證據(jù)選擇擬合數(shù)據(jù)的適當(dāng)函數(shù)。例如,相關(guān)領(lǐng)域的專家可能知道特定類型的數(shù)據(jù)由特定數(shù)學(xué)函數(shù)描述。對哪種數(shù)學(xué)函數(shù)描述哪種類型的函數(shù)的發(fā)現(xiàn)來自于科學(xué)與工程的艱苦過程。
類似地,在統(tǒng)計學(xué)領(lǐng)域,可將統(tǒng)計數(shù)據(jù)擬合到適當(dāng)?shù)姆植己瘮?shù),例如高斯分布,或二項式分布,以確定測量數(shù)據(jù)的平均值與方差。對于擬合任何給定數(shù)據(jù)集的適當(dāng)分布函數(shù)的選擇基于這樣的考慮,即與每種類型的分布相關(guān)聯(lián)的隨機(jī)偏差類型是否對應(yīng)于刻畫收集到的數(shù)據(jù)的隨機(jī)偏差。換言之,選擇基本上是統(tǒng)計學(xué)技術(shù)人員的工作。
特定統(tǒng)計包試圖協(xié)助統(tǒng)計學(xué)家,其自動地嘗試將數(shù)據(jù)集擬合到預(yù)先確定的分布函數(shù)集,并選擇最好地擬合數(shù)據(jù)的分布函數(shù)。
在上述情形中,擬合數(shù)據(jù)的函數(shù)是預(yù)先確定的,并且,通過猜想或從頭開始推導(dǎo)來發(fā)現(xiàn)全新的可以應(yīng)用到新類型的數(shù)據(jù)的函數(shù),仍然是科學(xué)家或工程師的任務(wù)。換言之,發(fā)現(xiàn)數(shù)學(xué)函數(shù)的工作留給了人類智力。
人工智能的領(lǐng)域包括基因算法的子領(lǐng)域。在基因算法領(lǐng)域中,試圖模仿基因在進(jìn)化生物學(xué)中的角色,以計算工程或其它問題的解。在基因算法中,一群假定的解以模仿達(dá)爾文進(jìn)化論的方式“進(jìn)化”。
基因算法的領(lǐng)域包括稱為基因編程的研究領(lǐng)域。在基因編程中,涉及的群體包括自身為程序的個體。在基因編程中,基于其在執(zhí)行時解決特定問題的能力判斷每個個體程序的適合度。
基因編程被用于進(jìn)行“符號回歸”。在符號回歸中,試圖通過使用基因編程來取代人類智力,以發(fā)現(xiàn)最佳地描述數(shù)據(jù)集的數(shù)學(xué)表達(dá)式。在基于基因編程的符號回歸中進(jìn)化的個體程序代表數(shù)學(xué)方程,其基于一個或多個自變量的輸入值給出因變量的值。
主要的現(xiàn)有技術(shù)的基因編程算法以LISP編程語言實現(xiàn),由實現(xiàn)者判斷其特別適宜于此任務(wù)。在這樣的算法中,使用LISP編程語言中的S表達(dá)式構(gòu)造來代表數(shù)學(xué)表達(dá)式。在進(jìn)行進(jìn)化的過程中,直接操作這些S表達(dá)式,其扮演進(jìn)化的群體成員的角色。這些現(xiàn)有技術(shù)的方法的一個局限是沒有限制群體中的數(shù)學(xué)表達(dá)式的大小,導(dǎo)致所謂“表達(dá)式膨脹”,其中群體內(nèi)的數(shù)學(xué)表達(dá)式不適當(dāng)?shù)刈兇?。這些現(xiàn)有技術(shù)的方法的另一個局限是這些膨脹的表達(dá)式傾向于過擬合到基因編程算法用以檢查數(shù)學(xué)表達(dá)式正確性的數(shù)據(jù)。過擬合意味著表達(dá)式非常接近地符合數(shù)據(jù),包括數(shù)據(jù)中的測量誤差,而不符合來自同一來源的額外數(shù)據(jù),其之后被用于檢查表達(dá)式的正確性。還一個局限是諸如Java、或C++等現(xiàn)代程序語言不支持S表達(dá)式構(gòu)造,而這些語言被首選地用在科學(xué)與工程編程中。
符號回歸使用的另一種類型的基因算法是基因表達(dá)式編程(GEP)。在基因表達(dá)式編程中,表達(dá)式以符號串表示,其中每個符號表示數(shù)學(xué)表達(dá)式的一個記號(例如,操作數(shù)、操作符)。使用基因表達(dá)式編程時,要出現(xiàn)在基因編程算法正在尋找的表達(dá)式中的常數(shù)的值可能不能事先得知。因此,GEP算法可能不得不創(chuàng)建這樣的程序,其在給定的常數(shù)(例如,零和一)的有限集合上進(jìn)行不定數(shù)目的操作。后一必要性增大了基因表達(dá)式編程算法收斂的時間,并且也不必要地增大了找到的解程序的大小。而且,既然基因表達(dá)式編程算法產(chǎn)生的表達(dá)式被限制為有限大小,為獲取所需常數(shù)所必需的操作可能消耗最大表達(dá)式大小的主要部分,并限制其它所需的操作符與變量可獲得的部分。
在基因表達(dá)式編程中,執(zhí)行多種模仿群體進(jìn)化中涉及的自然過程的行動。這包括一點與兩點交換與突變(crossover and mutation)。這些過程涉及交換點的隨機(jī)選擇與在(染色體)表達(dá)的表示中替換已有記號(操作數(shù)或操作符)的新記號的隨機(jī)選擇。由于其隨機(jī)本性,在基因表達(dá)式編程的情形中,這些對于進(jìn)化適應(yīng)而言重要的操作可能,不幸地,導(dǎo)致句法上不正確的表達(dá)式(程序)。對于候選的解決方案而言,這句法上的不正確是不合適的,并可能產(chǎn)生基因表達(dá)式編程算法中的程序執(zhí)行錯誤。


圖1是算法流程圖的第一部分,該算法遵照本發(fā)明的優(yōu)選實施例進(jìn)化數(shù)學(xué)表達(dá)式表示群體。
圖2是開始于圖1的流程圖的第二部分。
圖3顯示用于存儲數(shù)學(xué)表達(dá)式表示群體的矩陣,該群體由圖1-2中顯示的方法進(jìn)化。
圖4是算法流程圖,該算法遵照本發(fā)明的優(yōu)選實施例驗證數(shù)學(xué)表達(dá)式表示的語法。
圖5是操作符與操作數(shù)數(shù)組,其包括數(shù)學(xué)表達(dá)式表示。
圖6是索引數(shù)組,其表示圖5中顯示的數(shù)組。
圖7是圖1中顯示的方法要確定的假定數(shù)學(xué)表達(dá)式。
圖8是圖7中顯示的數(shù)學(xué)表達(dá)式的近似,其包括基于素數(shù)的常數(shù)。
圖9是表示圖8中顯示的方程的樹形圖。
圖10是電腦框圖,該電腦用于遵照本發(fā)明的優(yōu)選實施例執(zhí)行圖1、2與4中顯示的算法。
具體實施例方式
圖1是算法100的流程圖的第一部分,該算法遵照本發(fā)明的優(yōu)選實施例進(jìn)化數(shù)學(xué)表達(dá)式表示群體,圖2是開始于圖1的流程圖的第二部分。圖1、2中顯示的算法100是基因表達(dá)式編程(GEP)類型的基因算法(GA)?;蛩惴?00用于確定良好地符合數(shù)據(jù)的數(shù)學(xué)表達(dá)式。該數(shù)據(jù)可包括一或多組相關(guān)聯(lián)的自變量與因變量的值。根據(jù)要搜尋的數(shù)學(xué)表達(dá)式的特性,可能有一個或多個自變量。
參照圖1,在步驟102,讀入要用的操作符與操作數(shù)的列表。該列表可保存于配置文件中。對于許多技術(shù)領(lǐng)域而言,在步驟102讀入的操作符中包括加法、減法、乘法、與除法是適宜的。在許多技術(shù)領(lǐng)域中,包括三角函數(shù)操作符,例如正弦、余弦、正切,以及反三角函數(shù)操作符,例如反正弦、反余弦、反正切,也是適宜的。注意操作符可根據(jù)其操作的操作數(shù)的數(shù)目分類。也可包括其它類型的函數(shù)。MAX函數(shù)接受兩個操作數(shù)或數(shù)學(xué)子表達(dá)式作為參數(shù),評估兩個參數(shù),并返回較大的參數(shù)的值。也可包括互補(bǔ)的MIN函數(shù)。
還可包括另一種類型的操作數(shù),其類似于編程中的流控結(jié)構(gòu),也就是IF{子表達(dá)式一<=子表達(dá)式二}THEN{子表達(dá)式三}ELSE{子表達(dá)式四}(簡稱為IF操作符)。后者對于發(fā)現(xiàn)分段定義的函數(shù)是有用的。注意IF操作符接受四個參數(shù),用于不等式條件的第一與第二子表達(dá)式,滿足該條件時執(zhí)行的第三子表達(dá)式,以及不滿足該條件時計算的第四子表達(dá)式。
包含基于經(jīng)常在特定領(lǐng)域中出現(xiàn)的特定函數(shù)的操作符可能是適宜的。例如,如果要將算法100施加于神經(jīng)網(wǎng)絡(luò)領(lǐng)域,包括基于S形函數(shù)的操作符可能是適宜的。
表I包括可在步驟102中讀入的操作符的示例性的列表。在表I中,第一列指示操作符名稱,第二列指示操作符類型,其等價于操作符作為自變量接受的操作數(shù)的數(shù)目,第三列為值保留(其不適用于操作符,因此在表I中沒有值),第四列給出與每個操作符相關(guān)聯(lián)的成本,該成本為每個操作符增加數(shù)學(xué)表達(dá)式復(fù)雜度的測度,第五列為引用操作符的索引。
表I

在步驟102中讀入的操作數(shù)包括常數(shù)與自變量。下面的表II包括在步驟102中讀入的操作數(shù)的示例性的列表。表II中列的標(biāo)識與表I中相同。表II中的索引號繼續(xù)了始于表I的索引號序列。
表II的第一行(索引號為行17)包括Pi,包括它是因為經(jīng)驗顯示它經(jīng)常出現(xiàn)在與科學(xué)和工程問題相關(guān)的數(shù)學(xué)表達(dá)式中而包括進(jìn)來的。也可在表II中包括在許多領(lǐng)域中重要的其它適宜的常數(shù)(例如,自然對數(shù)基,e)或適用于特定研究領(lǐng)域的常數(shù)(例如普朗克常數(shù)),如果認(rèn)為它們有機(jī)會出現(xiàn)在要搜尋的數(shù)學(xué)表達(dá)式中的話。表II的其后的行(索引18)包括零操作數(shù)。包括零允許算法100通過,比如說,將子表達(dá)式乘以零,來有效率地關(guān)閉算法100正在進(jìn)化的數(shù)學(xué)表達(dá)式的某些部分,而不擾亂該數(shù)學(xué)表達(dá)式。基因表達(dá)式編程對于操作符與操作數(shù)在數(shù)學(xué)表達(dá)式表示中的順序敏感。根據(jù)另一種實施例,在步驟102中讀入的操作符中間包括uno()函數(shù)。uno()函數(shù)返回其自變量而不作改變。包括uno()函數(shù)允許GEP算法使由群體成員表示的數(shù)學(xué)表達(dá)式的某些部分停止活動,而不擾亂該群體成員。停止活動的部分在后繼操作中可通過交換或突變來激活。
表II的下一行(索引19)包括數(shù)一(1)。一在實數(shù)系統(tǒng)中具有特殊地位,這是因為任何整數(shù)或有理數(shù)可通過將一相加或除以一的和數(shù)來分別形成。因此,向算法100提供一,原則上允許算法100在需要時在要生成的數(shù)學(xué)表達(dá)式中生成任何數(shù)目的前述類型。
表I與II包括原始材料,算法100使用該原始材料來確定數(shù)學(xué)表達(dá)式。表I與II的內(nèi)容(實踐中可使用數(shù)組或其它數(shù)據(jù)結(jié)構(gòu)來表示該內(nèi)容)將被用于生成數(shù)學(xué)表達(dá)式表示的初始群體,并將從進(jìn)行突變操作中提取(draw from)。
表II的下一組行(索引20-42)包括一系列素數(shù)。通過將兩個或更多個素數(shù)相乘、相加、相除與相減,子表達(dá)式可生成多個數(shù),這比僅使用數(shù)一生成同樣的數(shù)要相對簡單。因此,在表中包括素數(shù)序列傾向于減少算法100為找尋描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式所需的世代(generation)數(shù)目,也傾向于減少找到的數(shù)學(xué)表達(dá)式的復(fù)雜度。
要包含在由算法100生成的數(shù)學(xué)表達(dá)式中的自變量可在文件中標(biāo)識,該文件包括用于評估由GEP算法100生成的程序的擬合性的訓(xùn)練數(shù)據(jù)。一種用于訓(xùn)練數(shù)據(jù)和包含與該數(shù)據(jù)相關(guān)聯(lián)的自變量的標(biāo)識的標(biāo)準(zhǔn)文件格式被稱作是學(xué)術(shù)數(shù)據(jù)挖掘研究文件格式或ARFF。表II中的最后兩項——X和Y是示例性的自變量。表II中的自變量的數(shù)目對應(yīng)于實際數(shù)據(jù)中的自變量的數(shù)目,算法100為該數(shù)據(jù)搜尋數(shù)學(xué)表達(dá)式。對于特定問題,可能只有一個自變量,或者超過兩個自變量。
表II

再次參照圖1,在下一步驟104中,為生成N個數(shù)學(xué)表達(dá)式表示(群體成員)的群體,對于該N個表示中的每一個,隨機(jī)地從步驟102(例如顯示于圖1、2中的)中讀入的操作數(shù)與操作符列表中選擇K個元素的集合圖3顯示用于存儲數(shù)學(xué)表達(dá)式表示群體的矩陣300,該群體在步驟104(圖2)中生成并由圖1-2中顯示的算法進(jìn)化。優(yōu)選地,將步驟104中生成的每個群體成員保存為行或列(圖3中顯示為行)。矩陣的元素寫作PA(l,m),其中行索引l指定群體成員,而列索引m指定每個群體成員內(nèi)的第m元素。(PA代表群體數(shù)組。)因此,矩陣300的每一行是包括數(shù)學(xué)表達(dá)式表示的數(shù)組。在此初始階段,每個表達(dá)式的語法有待檢驗。矩陣300的矩陣元素包括(根據(jù)表I與II的第五列)對應(yīng)于特定操作符或操作數(shù)的索引號??蓪⒕仃?00看作數(shù)組集,每個數(shù)組表示一群體成員。由于編程語言通常被設(shè)計為高速地執(zhí)行矩陣處理操作(例如行拷貝、元素交換),要在數(shù)學(xué)表達(dá)式表示群體上進(jìn)行的操作(例如選擇、交換、突變)得到推動和加速(也就是具有減小的計算成本),這是因為數(shù)學(xué)表達(dá)式表示群體由數(shù)組集,例如,由矩陣300來表示。
圖5顯示操作符與操作數(shù)的數(shù)組500,其包括數(shù)學(xué)表達(dá)式表示。圖5闡釋了在矩陣300(圖3)的每一行中引用的操作符與操作數(shù)序列。圖6是索引數(shù)組600,其表示圖5中顯示的數(shù)組。如圖6所示,操作數(shù)與操作符以索引集表示,該索引集(通過表I與II)對應(yīng)于圖5中顯示的操作符與操作數(shù)序列。也就是說,說明性的數(shù)組500中出現(xiàn)的每個操作符或操作數(shù)實際上由數(shù)組600與矩陣300內(nèi)的索引號代表。數(shù)組600內(nèi)存儲的索引是操作符或操作數(shù)的密碼子(codon)。矩陣300(圖3)包括圖6中作為行顯示的類型數(shù)組的編號N。注意每個群體成員由矩陣300(圖3)的行表示,且數(shù)組500(圖5)與600(圖6)在基因算法100執(zhí)行期間可包括超過為組成句法上正確的數(shù)學(xué)表達(dá)式所需要的數(shù)量的元素。盡管如此,位于數(shù)組500、600的末尾的多余的元素被攜帶到后繼操作中,并可通過交換操作或突變而變?yōu)閿?shù)學(xué)表達(dá)式的一部分。
再次參照圖1,下一框106是循環(huán)的頂部,該循環(huán)連續(xù)地檢查每個新的群體成員(矩陣300的行)的語法,以確定其是否代表有效的數(shù)學(xué)表達(dá)式。在步驟108,檢查數(shù)學(xué)表達(dá)式表示的語法。在步驟108中遵照本發(fā)明的優(yōu)選實施例執(zhí)行的過程的細(xì)節(jié)在下面參照圖4進(jìn)行詳細(xì)描述???12是決定框,其結(jié)果取決于在步驟108檢查的語法是否正確。如果語法不正確,則算法100分支到步驟110,在這里重新生成群體成員(數(shù)學(xué)表達(dá)式表示)??赏ㄟ^隨機(jī)地重新選擇操作數(shù)與操作符來重新生成群體成員。作為可供選擇的另一種替代方案,可(例如隨機(jī)地)修改群體成員,以改正語法。在步驟110后,算法100返回到步驟108。如果在框112確定在步驟108中檢查的數(shù)學(xué)表達(dá)式的語法是正確的,則算法繼續(xù)到框114。在框114中,確定是否還有群體成員需要檢查。如果是這樣,則算法100返回到步驟106,并且其后處理下一個群體成員。如果已檢查所有群體成員,則算法100繼續(xù)到步驟116。
在步驟116,為群體中(例如,數(shù)組300中,圖3)表示的數(shù)學(xué)表達(dá)式計算第一擬合性測度。第一擬合性測度涉及群體中表示的數(shù)學(xué)表達(dá)式的復(fù)雜性。按照第一擬合性測度,較大的復(fù)雜性等于減少的擬合性。第一擬合性測度涉及對被表示的數(shù)學(xué)表達(dá)式與操作符和操作數(shù)相關(guān)聯(lián)的成本求和。與操作符和操作數(shù)相關(guān)聯(lián)的成本由表I與II的第四列給出。遵照本發(fā)明的優(yōu)選實施例,第一擬合性測度通過下面的方程計算方程1FMi=AvgCostAvgCost+Costi]]>其中,F(xiàn)Mi是第i個群體成員(數(shù)學(xué)表達(dá)式)的第一(關(guān)于擬合性的)擬合性測度,Costi是與第i個表達(dá)式的操作符相關(guān)聯(lián)的成本的和,AvgCost是群體中的成本Costi的和的平均值。
與每個操作符相關(guān)聯(lián)的成本在表1的第四列給出。注意第一擬合性測度FMi始終在零到一之間。方程1也可用于為群體的后繼世代計算第一擬合性測度。
再次參照圖1,在步驟118,將每個群體成員(例如矩陣300的行)轉(zhuǎn)化為可執(zhí)行程序,該程序?qū)崿F(xiàn)該群體成員內(nèi)表示的數(shù)學(xué)表達(dá)式。
圖7顯示圖1中顯示的方法要決定的假定數(shù)學(xué)表達(dá)式700,圖8顯示圖7中顯示的數(shù)學(xué)表達(dá)式700的近似800。圖7中顯示的表達(dá)式700中出現(xiàn)的常數(shù)在圖8中顯示的表達(dá)式800中使用素數(shù)與一來近似。圖8中顯示的表達(dá)式800對應(yīng)于圖5、6中顯示的數(shù)組中包括的數(shù)學(xué)表達(dá)式表示。圖9是表示圖8中顯示的方程的樹形圖900。圖9也有助于理解圖8中顯示的表達(dá)式800同圖5、6中顯示的數(shù)學(xué)表達(dá)式表示之間的對應(yīng)關(guān)系。通過從數(shù)組500的左邊開始,并在構(gòu)建樹形圖900時遵循廣度優(yōu)先規(guī)則,從圖5中顯示的數(shù)組構(gòu)造樹形圖900。樹形圖900反映關(guān)于操作順序的普通規(guī)則。
遵照本發(fā)明的優(yōu)選實施例,算法100使用現(xiàn)代的面向?qū)ο蟮木幊陶Z言寫成。優(yōu)選地,每個密碼子(操作數(shù)或操作符)的基本信息封裝在類的實例中。下面顯示了稱為codon(密碼子)的Java類的原型,該類適宜于封裝每個操作數(shù)或操作符的基本信息。優(yōu)選地,codon類包含用于表I與II的五列中列出的每個條目(也就是名稱、類型、值、成本與索引)的實例變量。為表I與II的每一行生成codon類的實例。
<pre listing-type="program-listing"><![CDATA[public class Codon{public String Name;//密碼子名稱public intType;//操作元素的數(shù)目//=3 IF(if...then...else...//=2操作符{+,-,*,/,...}//=1函數(shù) {sqrt,sigmoid,...}//=0常數(shù) {1,2,3,5,...}//=-1變量public intIndex;//用于快速處理的位置索引public double Cost;//要應(yīng)用的密碼子的成本public double Value;//常數(shù)與變量類型的密碼子的值}]]></pre>使用codon類的實例作為基本構(gòu)建元件來生成可執(zhí)行程序,該程序編碼由群體成員表示的數(shù)學(xué)表達(dá)式。codon類的實例可用在節(jié)點類的實例中,該節(jié)點類的實例還包含額外信息(實例變量),包括父節(jié)點引用與子節(jié)點引用。節(jié)點類的實例可用在表達(dá)式樹類中,該表達(dá)式樹類為整個數(shù)學(xué)表達(dá)式保存結(jié)構(gòu)信息。表達(dá)式樹類的實例中的信息包括表達(dá)式樹結(jié)構(gòu),例如如圖9中圖形化地表示的那樣。
再次參照圖1,在步驟120中,使用一個或多個測試數(shù)據(jù)集執(zhí)行步驟118中生成的可執(zhí)行程序。測試數(shù)據(jù)可以,比如說,包括若干個相關(guān)聯(lián)的自變量與因變量集,其通過(例如在試驗或調(diào)查的情況下)觀察收集到。在步驟118中執(zhí)行程序時,將自變量值作為程序參數(shù)使用,并將在步驟118執(zhí)行的程序的輸出與相關(guān)聯(lián)的因變量值的值進(jìn)行對比。例如,在搜尋近似匹配兩個變量的函數(shù)的數(shù)學(xué)表達(dá)式時,將使用多個(Xj,Yj,Zj)形式的數(shù)據(jù)集,其中Xj與Yj是自變量,而Zj是因變量。每個集內(nèi)的自變量Xj、Yj作為程序參數(shù),并將每個程序執(zhí)行的輸出與相關(guān)聯(lián)的Zj進(jìn)行比較。在面向?qū)ο蟮木幊陶Z言實現(xiàn)中,該實現(xiàn)包含表達(dá)式樹類,該樹類具有對節(jié)點類的引用,該節(jié)點類引用codon類,程序執(zhí)行相當(dāng)于對前述表達(dá)式樹類的實例求值。
在步驟122,使用在步驟122中獲得的輸出計算第二擬合性測度,該測度基于每個群體成員表示的數(shù)學(xué)表達(dá)式擬合一個或多個測試數(shù)據(jù)集的程度。優(yōu)選地,第二擬合性測度基于由下面的方程2給出的擬合性的原始均方根(RMS)測度方程2RMSi=1M&Sigma;j=1M(zj-PROGi(Xj1,Xj2,Xj3,...XjL))2]]>其中,Zj是第j個測試數(shù)據(jù)集中的因變量值;Xj1,Xj2,Xj3,...XjL是第j個測試數(shù)據(jù)集中的自變量值集合;L是因變量的數(shù)目;PROGi表示第i個程序,其實現(xiàn)由第i個群體成員表示的數(shù)學(xué)表達(dá)式;M是測試數(shù)據(jù)集的數(shù)目;和RMSi是第i個程序的擬合性的原始均方根測度的值。
優(yōu)選地,使用下面的方程3來調(diào)節(jié)由方程2給出的原始RMS擬合度的尺度,以導(dǎo)出第二擬合性測度方程3SMi=AvgRMSAvgRMS+RMSi]]>其中,AvgRMS是一個世代上的RMSi的平均值。
在使用方程三為后繼世代中的群體成員求值第二擬合性測度時,優(yōu)選地,使用前面世代中AvgRMS的最低值,如果它比當(dāng)前時代的AvgRMS值低的話。在使用方程一為群體成員求值第一擬合性測度時,使用到目前為止具有最低的AvgRMS值的世代的AvgRMS。第二擬合性測度SMi的值介于零到一之間。
在步驟124,計算考慮了第一擬合性測度與第二擬合性測度的總的擬合性測度。優(yōu)選地,使用下面的方程4計算總的擬合性測度。
方程4Fi=(1-p)·SMi+p·FMi其中,F(xiàn)i是第i個程序的總的擬合性測度,該程序?qū)崿F(xiàn)由第i個群體成員表示的函數(shù)的數(shù)學(xué)表達(dá)式;和p是吝嗇權(quán)重因子(parsimony weighting factor),其確定在總的擬合性測度中要給予第一(關(guān)于成本的)擬合性測度的權(quán)重。
遵照使用算法100的優(yōu)選模式,吝嗇權(quán)重因子p被初始地設(shè)置為零,并在獲取擬合性的原始均方根測度的低值之后設(shè)置為有限值。吝嗇權(quán)重因子優(yōu)選地為正數(shù),其小于0.2,并且更優(yōu)選地,小于0.1,使得不會以第二(關(guān)于擬合性的)擬合性測度為代價而給予第一(關(guān)于成本的)擬合性測度不適當(dāng)?shù)臋?quán)重。當(dāng)設(shè)置為有限值時,吝嗇權(quán)重因子優(yōu)選地至少是0.05。通過在總的擬合性測度中包括第一(關(guān)于成本的)擬合性測度,減小了算法100找到的數(shù)學(xué)表達(dá)式的大小。包括第一關(guān)于成本的擬合性測度也傾向于消除過擬合測試數(shù)據(jù)集的數(shù)學(xué)表達(dá)式。
參照圖2,顯示了算法100的第二部分???26是決定框,其結(jié)果取決于是否滿足擬合度標(biāo)準(zhǔn)。優(yōu)選地,測試的擬合度標(biāo)準(zhǔn)是這樣的標(biāo)準(zhǔn),即總的擬合性測度(包括第一與第二擬合性測度)超過總擬合度門限。如果滿足擬合度標(biāo)準(zhǔn),則算法100繼續(xù)步驟130,在這里輸出最佳群體成員。如果沒有滿足擬合度標(biāo)準(zhǔn),則算法100繼續(xù)框128。如果滿足總的擬合性測度,但吝嗇權(quán)重因子被設(shè)置為零,則在步驟126將不會判定已滿足擬合度標(biāo)準(zhǔn)。
在框128,確定是否已超過世代限制。上面給出的討論解決了施行于初始群體(也就是在步驟104中生成的群體)的步驟,然而,如下面余下的討論將澄清的那樣,算法100遞歸地操作,使得對于后繼世代中的每一世代將到達(dá)框128。優(yōu)選地,施加世代限制,以限制基因算法100可能遞歸地生成的世代的數(shù)目。世代限制用于控制計算機(jī)資源的消耗以及算法100的運行時間。如果達(dá)到世代限制,則算法100進(jìn)行到步驟130,在這里輸出最佳群體成員。作為可供選擇的另一種替代方案,在停止的情形中可隨機(jī)地打亂群體,并繼續(xù)執(zhí)行。如果沒有超過世代限制,算法100繼續(xù)框132。
框132是另一個決定框,其結(jié)果取決于是否已獲得對測試數(shù)據(jù)的好的擬合??赏ㄟ^比較當(dāng)前世代的擬合性的最低原始均方根測度和RMS門限來判定是否已獲得好的擬合。如果在框132判定已獲得好的擬合,則算法100繼續(xù)步驟134,在這里增加吝嗇權(quán)重因子。在步驟134,優(yōu)選地,在一個步驟中將吝嗇權(quán)重因子從零變?yōu)橛邢拗?。在步驟134之后,算法繼續(xù)步驟136。如果在步驟132中判定尚未獲得好的擬合,則算法直接進(jìn)行到步驟136。
在步驟136,從當(dāng)前群體選擇群體成員,以在后繼世代中復(fù)制。優(yōu)選地,至少一部分被選擇以進(jìn)行復(fù)制的群體成員是被基于其擬合度選擇的。遵照本發(fā)明的優(yōu)選實施例,使用隨機(jī)殘留法來選擇群體成員以進(jìn)行復(fù)制。在隨機(jī)殘留法中,選擇每個群體成員的至少特定數(shù)目Ii份拷貝,以在后繼世代中進(jìn)行復(fù)制。數(shù)目Ii由下面的方程給出方程5Ii=Trunc(N*Fi&Sigma;i=1NFi)]]>其中,N是每個世代中的群體成員的數(shù)目;和Trunc是截斷函數(shù)。
方程5中的截斷函數(shù)內(nèi)的量的分?jǐn)?shù)部分被用于確定每個群體成員是否有(超出由方程五確定的拷貝數(shù)目的)任何額外的拷貝將在后繼世代中進(jìn)行復(fù)制。如下使用前述分?jǐn)?shù)部分。生成介于零到一之間的隨機(jī)數(shù)。如果前述分?jǐn)?shù)部分超過該隨機(jī)數(shù),則向后繼世代添加第i個群體成員的額外的拷貝。調(diào)解使用隨機(jī)數(shù)與數(shù)目Ii的分?jǐn)?shù)部分生成的選擇數(shù)目,使得后繼群體維持成員總數(shù)N。
使用上面描述的隨機(jī)殘留法導(dǎo)致主要基于擬合度,同時具有一定程度的隨機(jī)性,來選擇群體成員以進(jìn)行復(fù)制。后一種選擇方法模擬生物系統(tǒng)中的自然選擇。
在步驟138,進(jìn)行交換操作??蛇M(jìn)行一或兩點或兩種類型的交換操作。在進(jìn)行交換操作時,隨機(jī)地配對群體成員(矩陣300的行)??墒褂脝蝹€交換概率或分立的交換概率,以決定是否進(jìn)行一與兩點交換操作。對于每種類型的交換操作,并且對于每對群體成員,生成介于零到一之間的隨機(jī)數(shù)。如果該隨機(jī)數(shù)小于交換概率,則進(jìn)行交換操作,如果該隨機(jī)數(shù)大于交換操作,則群體成員對保持不變??墒褂锰娲桨竵泶_定是否進(jìn)行交換操作。如果確定要在一對群體成員之間進(jìn)行一點交換操作,則隨機(jī)地選擇交換點。其后,兩個群體成員(矩陣300的行)中在該交換點之后的全部元素(密碼子)在兩行之間進(jìn)行交換。如果確定要在兩個群體成員之間進(jìn)行兩點交換操作,則隨機(jī)地選擇兩點,交換群體成員(矩陣300的行)中在這兩點之間的元素。通過將每個群體表示為索引數(shù)組集(更優(yōu)選地,索引矩陣),有可能使用快速數(shù)組處理操作(例如,選擇拷貝)來進(jìn)行交換操作。
在步驟140,進(jìn)行突變操作。如在自然生物系統(tǒng)中那樣,突變發(fā)生的速率相對地低(相對于交換)。在算法100中,突變的速率由突變概率參數(shù)控制。為決定每個群體成員是否要突變,生成隨機(jī)數(shù)并比較其與突變概率。如果為給定群體成員生成的隨機(jī)數(shù)小于突變概率,則指定該給定的群體成員突變。在進(jìn)行突變時,隨機(jī)地選擇群體成員的元素,并將其替換為操作數(shù)或操作符,該操作數(shù)或操作符從在步驟102中讀入的操作符或操作數(shù)中隨機(jī)地選擇。
在步驟142,進(jìn)行旋轉(zhuǎn)操作。為決定每個群體成員(數(shù)組)是否要被旋轉(zhuǎn),生成隨機(jī)數(shù)并將其與旋轉(zhuǎn)概率進(jìn)行比較。如果為給定群體成員生成的隨機(jī)數(shù)小于旋轉(zhuǎn)概率,則指定旋轉(zhuǎn)該群體成員。為進(jìn)行旋轉(zhuǎn),隨機(jī)地選擇指定的群體成員數(shù)組的位置,并將數(shù)組循環(huán)地向左移動,以將指定位置的密碼子帶到數(shù)組最前面。
步驟142之后,算法返回到步驟框106,在這里開始檢查新群體成員語法的過程,該新成員由交換與突變創(chuàng)建。其后,算法重復(fù)上面描述的后繼步驟,繼續(xù)進(jìn)化后繼世代,直到找到高擬合性群體成員,或者達(dá)到世代限制。
初始群體世代中固有的隨機(jī)性104、交換138與突變140操作可導(dǎo)致表示具有無效語法的數(shù)學(xué)表達(dá)式的群體成員。這樣的無效群體成員當(dāng)然不適合作為候選解決方案,并有可能引起執(zhí)行錯誤。因此,如上面提到的那樣,與步驟108、112(圖1)有關(guān),檢查每個新群體成員的語法。圖4是語法檢查算法的流程圖400,該算法遵照本發(fā)明的優(yōu)選實施例驗證數(shù)學(xué)表達(dá)式表示的語法。圖4是圖1中顯示的步驟108的優(yōu)選形式。參照圖4,在第一個框402,將所需長度變量初始化為值一。下一框404是循環(huán)的頂部,其考慮群體成員數(shù)組的后繼元素。遵照本發(fā)明的優(yōu)選實施例,數(shù)組采用圖6中顯示的形式,其中每個數(shù)組元素引用操作數(shù)或操作符。開始于第二個框404的循環(huán)的循環(huán)計數(shù)器被用作指針,其指向考慮中的群體成員(數(shù)組)的后繼元素。數(shù)組元素被標(biāo)注為1到N。在步驟406,將所需長度變量增加要求的額外元素的數(shù)目,該數(shù)目基于循環(huán)計數(shù)器的當(dāng)前值指向的元素的類型。表I與II的第二列將每個操作數(shù)與操作符的類型指定為整數(shù)型。類型數(shù)指示每個操作數(shù)或操作符所要求的額外元素的數(shù)目。例如,加法與乘法操作符屬于類型二,要求兩個操作數(shù)。正弦操作符屬于類型一,僅要求一個操作數(shù)。常數(shù)與變量屬于類型零。作為示例,如果,比方說,循環(huán)計數(shù)器指向數(shù)組600(圖6)的第一元素,該元素包含索引14,在表I的第一列中查找14,發(fā)現(xiàn)其指代SQRT操作符,從表I的第二列中發(fā)現(xiàn)該操作符屬于類型一。因此,將所需長度從一(初始值)增加到二。在循環(huán)的下次迭代中,語法檢查算法讀取索引2,其代表加操作符,并且將所需長度變量相應(yīng)地增加二,取值為四。在GEP算法100的面向?qū)ο蟮膶崿F(xiàn)中,優(yōu)選地將類型信息作為上面顯示的codon類的實例變量存儲。
在步驟408,將在框406中設(shè)置的所需長度與最大基因長度(最大數(shù)組長度,在圖3、6中顯示為K)進(jìn)行比較。如果在步驟408,發(fā)現(xiàn)所需長度超過最大基因長度,則在步驟410,輸出無效基因消息(例如報告給算法100)。
在框412,確定循環(huán)計數(shù)器的當(dāng)前值(其指向數(shù)組600的元素,圖6)是否等于所需長度變量。循環(huán)計數(shù)器等于所需長度變量意味著有充足的操作數(shù)來完成在要檢查的群體成員數(shù)組中包含的操作符指定的操作,并且數(shù)組中編碼了有效語法的數(shù)學(xué)表達(dá)式。所需長度變量等于循環(huán)計數(shù)器指示已到達(dá)要檢查的數(shù)組中包含的基因的末尾?;蚴敲總€數(shù)組中這樣的一部分,其表示有效語法的數(shù)學(xué)表達(dá)式。時常地,要求少于完整長度的群體成員數(shù)組來表示有效語法的數(shù)學(xué)表達(dá)式。然而,任何未使用的數(shù)組元素可通過交換或突變而在后繼世代中變?yōu)榛顒拥?。如果循環(huán)計數(shù)器的當(dāng)前值等于所需長度變量,則輸出有效基因消息(例如報告給算法100)。如果不相等,則算法400返回步驟404,在這里增加循環(huán)計數(shù)器索引,其后考慮基因(數(shù)組)的下一元素。
使用語法檢查算法400允許對數(shù)學(xué)表達(dá)式的數(shù)組表示進(jìn)行隨機(jī)的交換、突變與旋轉(zhuǎn)操作,同時避免將計算機(jī)時間浪費在產(chǎn)生和試圖執(zhí)行具有無效語法的程序上。
有利地,語法檢查操作能夠操作在群體成員的數(shù)組表示(例如,600,圖6)上。因此,無需從群體成員生成程序以驗證語法,從而節(jié)省了計算機(jī)資源,削減了語法檢查400與主算法100的執(zhí)行時間。
盡管本發(fā)明被參照圖中包括的流程圖進(jìn)行描述,對于本領(lǐng)域普通技術(shù)人員來說將顯而易見的是,可使用不同的程序流程,而不偏離本發(fā)明的實質(zhì)。
圖10是電腦1000的框圖,該電腦遵照本發(fā)明的優(yōu)選實施例執(zhí)行圖1、2與4中顯示的算法。電腦1000包括微處理器1002、隨機(jī)存取存儲器(RAM)1004、只讀存儲器(ROM)1006、硬盤驅(qū)動器1008、顯示器適配器1010(例如顯卡)、可移動電腦可讀介質(zhì)讀取器1014、網(wǎng)絡(luò)適配器1016、鍵盤以及I/O端口1020,可通過數(shù)字信號總線1026通信地連接。視頻顯示器1012電氣連接到顯示器適配器1010,以接收視頻信號。指示設(shè)備1022,優(yōu)選地為鼠標(biāo),電氣連接到I/O端口1020,以接收指示設(shè)備1022的用戶操作生成的電子信號。根據(jù)本發(fā)明的一個實施例,使用網(wǎng)絡(luò)適配器1016,以將電腦通信地連接到外部數(shù)據(jù)源,例如遠(yuǎn)程服務(wù)器。電腦可讀介質(zhì)讀取器1014優(yōu)選地包括光盤(CD)驅(qū)動器。提供電腦可讀介質(zhì)1024,其包括上面參照圖1、2、4描述的算法使用的軟件。電腦可讀介質(zhì)上包括的軟件通過可移動電腦可讀介質(zhì)讀取器1014裝載,以配置電腦1000執(zhí)行上面參照流程圖描述的本發(fā)明的過程。電腦1000可以,比如說,包括個人電腦或工作站電腦。
對于本領(lǐng)域普通技術(shù)人員來說將顯而易見的是,本發(fā)明可使用硬件或軟件或其組合實現(xiàn)。使用本發(fā)明或其部分的程序可存儲在多種類型的電腦可讀介質(zhì)中,包括光盤、硬盤驅(qū)動器、磁帶、可編程只讀存儲器芯片。網(wǎng)絡(luò)電路也可以暫時地作為電腦可讀介質(zhì),從該網(wǎng)絡(luò)電路讀取本發(fā)明教導(dǎo)的程序。
盡管已闡釋和描述本發(fā)明的優(yōu)選實施例以及其它實施例,顯然的是,本發(fā)明不限于此。本領(lǐng)域普通技術(shù)人員可作出多種修改、變動、變形、替換、及等價,而不偏離如所附的權(quán)利要求書所定義的本發(fā)明的實質(zhì)與范圍。
權(quán)利要求
1.一種基于基因算法的方法,用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,所述方法包括以下步驟生成數(shù)學(xué)表達(dá)式表示的初始群體,其包括多個素數(shù);和從所述初始群體進(jìn)化后繼世代。
2.如權(quán)利要求1所述的方法,其中,所述多個素數(shù)從預(yù)先定義的素數(shù)列表中選擇。
3.如權(quán)利要求1所述的方法,其中,所述的進(jìn)化后繼世代的步驟包括以下步驟對于多個后繼世代,通過引入一個或多個素數(shù)的表示,從所述數(shù)學(xué)表達(dá)式表示的當(dāng)前群體突變一個或多個數(shù)學(xué)表達(dá)式表示。
4.如權(quán)利要求1所述的方法,其中,所述的進(jìn)化后繼世代的步驟包括以下步驟對于多個后繼世代生成一組實現(xiàn)數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式表示在當(dāng)前世代的數(shù)學(xué)表達(dá)式表示的群體中;為一個或多個測試數(shù)據(jù)集執(zhí)行所述程序集中的一個或多個,以獲得與所述程序集中的所述一個或多個相對應(yīng)的一個或多個結(jié)果;從所述一個或多個結(jié)果導(dǎo)出所述程序集中的所述一個或多個的一個或多個擬合性指示;基于所述擬合性指示,從所述當(dāng)前世代的數(shù)學(xué)表達(dá)式表示的群體中選擇一個或多個所述表示,以在后繼世代中進(jìn)行復(fù)制;在所述后繼世代中的表示對之間進(jìn)行一個或多個交換操作。
5.如權(quán)利要求4所述的方法,其進(jìn)一步包括以下步驟對于所述多個后繼世代中的一個或多個,通過引入一個或多個素數(shù)的表示,從所述數(shù)學(xué)表達(dá)式表示的當(dāng)前群體突變一個或多個數(shù)學(xué)表達(dá)式表示。
6.如權(quán)利要求1所述的方法,其中,數(shù)學(xué)表達(dá)式表示的所述初始群體包括索引數(shù)組集,其中多個所述數(shù)組包括表示數(shù)學(xué)表達(dá)式的索引列表;和多個所述索引指示從包括操作符與操作數(shù)的組中選擇的元素。
7.一種基于基因算法的方法,用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,所述方法包括以下步驟遞歸地生成一系列數(shù)學(xué)表達(dá)式表示群體,其中每個表示包括從操作符集中選擇的一個或多個操作符的標(biāo)識;和從包括常數(shù)與變量的操作數(shù)集中選擇的一個或多個操作數(shù)的標(biāo)識;其中所述操作數(shù)集中的每一操作數(shù),以及所述操作符集中的每一操作符與一成本相關(guān)聯(lián);對于所述群體系列中的每第k個群體,生成一組實現(xiàn)數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式表示在所述的第k個表示群體中;通過包括以下步驟的過程,為所述程序集中的每一程序?qū)С龅谝粩M合性測度在一個或多個測試數(shù)據(jù)集上運行所述程序,并比較輸出值與預(yù)先確定的值,以獲取殘留誤差的測度;通過包括以下步驟的過程,為所述程序集中的每一程序?qū)С龅诙M合性測度對所述程序內(nèi)的每一操作符與操作數(shù)的成本求和;和在每一后繼世代中,基于所述第一與第二擬合性測度,選擇性地復(fù)制數(shù)學(xué)表達(dá)式的個體表示。
8.如權(quán)利要求7所述的方法,其進(jìn)一步包括以下步驟組合所述第一擬合性測度與所述第二擬合性測度,以獲取總的擬合性測度。
9.一種基于基因算法的方法,用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,所述方法包括以下步驟將一系列數(shù)學(xué)表達(dá)式群體中的每一個表示為索引數(shù)組集,其中每一數(shù)組表示數(shù)學(xué)表達(dá)式,且所述索引數(shù)組集中的一個或多個索引指向從包含操作符與操作數(shù)的元素組中選擇的表達(dá)式元素的表示;對于所述系列群體中的每第k個群體生成實現(xiàn)所述數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式由所述群體中的所述數(shù)組集中的一個或多個中的每一個表示;導(dǎo)出每一程序的擬合性測度;基于所述擬合性測度,從所述數(shù)組集選擇一個或多個高擬合性數(shù)組,以繼續(xù)到第(k+1)世代;在所述的繼續(xù)到第(k+1)世代的高擬合性數(shù)組中的一個或多個之間進(jìn)行交換操作。
10.如權(quán)利要求9所述的方法,其中,每一索引指向面向?qū)ο蟮木幊陶Z言的類的實例,所述類封裝從包括操作符與操作數(shù)的組中選擇的元素的標(biāo)識。
11.如權(quán)利要求9所述的方法,其中,所述的進(jìn)行交換操作的步驟包括以下子步驟將高擬合性數(shù)組的一部分與第二數(shù)組的一部分交換,其中隨機(jī)地選擇所述高擬合性數(shù)組的一部分與所述第二數(shù)組的一部分的開始點。
12.如權(quán)利要求9所述的方法,其中,所述數(shù)組集作為矩陣存儲。
13.一種基于基因算法的方法,用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,所述方法包括以下步驟遞歸地生成符號序列的群體的一系列世代,其中每一符號序列表示數(shù)學(xué)表達(dá)式;對于每一世代,確定每一符號序列是否可轉(zhuǎn)譯為有生存力的程序,其通過對于每一符號序列初始化所需長度變量;從每一序列的第一符號開始,并且對于每一序列內(nèi)的一系列第k個符號將所需長度變量增加根據(jù)語法規(guī)則使用所述第k個符號組成有生存力的操作所必需的符號的數(shù)目;如果所需長度變量在增加后等于k,報告有效語法;和如果所需長度變量在增加到k時超過最大序列長度,報告無效語法。
14.如權(quán)利要求13所述的方法,其中,所述的遞歸地生成一系列世代的步驟包括以下子步驟在一個或多個符號序列中隨機(jī)地改變符號。
15.如權(quán)利要求13所述的方法,其中,所述的遞歸地生成以系列世代的步驟包括以下子步驟隨機(jī)地選擇一個或多個點,其定義符號序列的邊界,以在所述群體中的符號序列之間進(jìn)行交換。
16.一種包含編程指令的計算機(jī)可讀介質(zhì),其用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,其包括以下編程指令生成數(shù)學(xué)表達(dá)式表示的初始群體,其包括多個素數(shù);和從所述初始群體進(jìn)化一系列后繼世代。
17.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中,所述的進(jìn)化后繼世代的編程指令包括以下編程指令從預(yù)先確定的素數(shù)列表中選擇所述的多個素數(shù)。
18.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中,所述的進(jìn)化后繼世代的編程指令包括以下編程指令對于多個后繼世代,通過引入一個或多個素數(shù)的表示,從所述數(shù)學(xué)表達(dá)式表示的當(dāng)前群體突變一個或多個數(shù)學(xué)表達(dá)式表示。
19.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中,所述的進(jìn)化后繼世代的編程指令包括以下編程指令對于多個后繼世代生成一組實現(xiàn)數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式表示在當(dāng)前世代的數(shù)學(xué)表達(dá)式表示的群體中;為一個或多個測試數(shù)據(jù)集執(zhí)行所述程序集中的一個或多個,以獲得與所述程序集中的所述一個或多個相對應(yīng)的一個或多個結(jié)果;從所述一個或多個結(jié)果導(dǎo)出所述程序集中的所述一個或多個的一個或多個擬合性指示;基于所述擬合性指示,從所述當(dāng)前世代的所述數(shù)學(xué)表達(dá)式表示的群體中選擇一個或多個所述表示,以在后繼世代中進(jìn)行復(fù)制;在所述后繼世代中的表示對之間進(jìn)行一個或多個交換操作。
20.如權(quán)利要求19所述的計算機(jī)可讀介質(zhì),其中,所述的進(jìn)化后繼世代的編程指令進(jìn)一步包括以下編程指令對于所述多個后繼世代中的一個或多個,通過引入一個或多個素數(shù)的表示,從所述數(shù)學(xué)表達(dá)式表示的所述當(dāng)前群體突變一個或多個數(shù)學(xué)表達(dá)式表示。
21.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中,數(shù)學(xué)表達(dá)式表示的所述初始群體包括索引數(shù)組集,其中多個所述數(shù)組包括一組表示數(shù)學(xué)表達(dá)式的索引;和多個所述索引指示從包括操作符與操作數(shù)的組中選擇的元素。
22.一種包含編程指令的計算機(jī)可讀介質(zhì),其用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,其包括以下編程指令遞歸地生成一系列數(shù)學(xué)表達(dá)式表示的群體,其中每個表示包括從操作符集中選擇的一個或多個操作符的標(biāo)識;和從包括常數(shù)與變量的操作數(shù)集中選擇的一個或多個操作數(shù)的標(biāo)識;其中,所述操作數(shù)集中的每一操作數(shù),以及所述操作符集中的每一操作符與一成本相關(guān)聯(lián);對于所述群體系列中的每第k個群體,生成一組實現(xiàn)數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式表示在所述的第k個表示群體中;通過包括以下步驟的過程,為所述程序集中的每一程序?qū)С龅谝粩M合性測度在一個或多個測試數(shù)據(jù)集上運行所述程序,并比較輸出值與預(yù)先確定的值,以獲取殘留誤差的測度;通過包括以下步驟的過程,為所述程序集中的每一程序?qū)С龅诙M合性測度對所述程序內(nèi)的每一操作符與操作數(shù)的成本求和;和在每一后繼世代中,基于所述第一與第二擬合性測度,選擇性地復(fù)制數(shù)學(xué)表達(dá)式個體表示。
23.如權(quán)利要求22所述的計算機(jī)可讀介質(zhì),其進(jìn)一步包括以下編程指令組合所述第一擬合性測度與所述第二擬合性測度,以獲取總的擬合性測度。
24.一種包含編程指令的計算機(jī)可讀介質(zhì),其用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,其包括以下編程指令將一系列數(shù)學(xué)表達(dá)式群體中的每一個表示為索引數(shù)組集,其中每一數(shù)組表示數(shù)學(xué)表達(dá)式,且一個或多個索引指向從包含操作符與操作數(shù)的元素組中選擇的表達(dá)式元素的表示;對于所述系列群體中的每第k個群體生成實現(xiàn)所述數(shù)學(xué)表達(dá)式的程序,所述數(shù)學(xué)表達(dá)式由所述群體中的每一數(shù)組表示;導(dǎo)出每一生成的程序的擬合性測度;基于所述擬合性測度,選擇一個或多個高擬合性數(shù)組,以繼續(xù)到第(k+1)世代;在所述的繼續(xù)到第(k+1)世代的高擬合性數(shù)組中的一個或多個之間進(jìn)行交換操作。
25.如權(quán)利要求24所述的計算機(jī)可讀介質(zhì),其中,每一索引指向面向?qū)ο蟮木幊陶Z言的類的實例,所述類封裝從包括操作符與操作數(shù)的組中選擇的元素的標(biāo)識。
26.如權(quán)利要求25所述的計算機(jī)可讀介質(zhì),其中,所述的進(jìn)行交換操作的編程指令包括以下編程指令將高擬合性數(shù)組的一部分與第二數(shù)組的一部分交換,其中,隨機(jī)地選擇所述高擬合性數(shù)組的一部分與所述第二數(shù)組的一部分的開始點。
27.如權(quán)利要求25所述的計算機(jī)可讀介質(zhì),其中,所述數(shù)組集作為矩陣存儲。
28.一種包含編程指令的計算機(jī)可讀介質(zhì),其用于確定描述實際數(shù)據(jù)集的數(shù)學(xué)表達(dá)式,其包括以下編程指令遞歸地生成符號序列的群體的一系列世代,其中,每一符號序列表示數(shù)學(xué)表達(dá)式;對于每一世代,確定每一符號序列是否可轉(zhuǎn)譯為有生存力的程序,其通過對于每一符號序列初始化所需長度變量;從每一序列的第一符號開始,并且對于每一序列內(nèi)的一系列第k個符號將所需長度變量增加根據(jù)語法規(guī)則使用所述第k個符號組成有生存力的操作所必需的符號的數(shù)目;如果所需長度變量在增加后等于k,報告有效語法;和如果所需長度變量在增加到k時超過最大序列長度,報告無效語法。
29.如權(quán)利要求28所述的計算機(jī)可讀介質(zhì),其中,所述的遞歸地生成一系列世代的編程指令包括以下編程指令在一個或多個符號序列中隨機(jī)地改變符號。
30.如權(quán)利要求28所述的計算機(jī)可讀介質(zhì),其中,所述的遞歸地生成一系列世代的編程指令包括以下編程指令隨機(jī)地選擇一個或多個點,其定義符號序列的邊界,以在所述群體中的符號序列之間進(jìn)行交換。
31.一種在其上存儲數(shù)據(jù)結(jié)構(gòu)的計算機(jī)可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)包括面向?qū)ο蟮木幊陶Z言的類,其包括密碼子名稱實例變量;密碼子類型實例變量,其用于存儲第一數(shù)字,所述第一數(shù)字指示與所述密碼子名稱實例變量內(nèi)指定的密碼子相關(guān)聯(lián)的密碼子的數(shù)目;密碼子值實例變量,其用于存儲與所述密碼子名稱實例變量內(nèi)指定的所述密碼子相關(guān)聯(lián)的值;密碼子成本實例變量,其用于存儲第二數(shù)字,所述第二數(shù)字指示所述密碼子名稱實例變量內(nèi)指定的所述密碼子指定的操作符或操作數(shù)增加數(shù)學(xué)表達(dá)式復(fù)雜性的程度;和密碼子索引實例變量,其用于存儲與所述的面向?qū)ο蟮木幊陶Z言的類的每個實例相關(guān)聯(lián)的索引。
全文摘要
本發(fā)明公開一種基因表達(dá)式編程基因算法,其用于進(jìn)行符號回歸。算法通過實行反向地依賴于數(shù)學(xué)表達(dá)式復(fù)雜性的擬合函數(shù),避免了表達(dá)式膨脹與過擬合。算法進(jìn)化的群體成員表示為引用操作數(shù)與操作符的索引的數(shù)組集(例如以矩陣的形式),從而便利了在進(jìn)化群體的過程中進(jìn)行的選擇、突變與交換操作。算法包括語法檢查部分[108、110、112],其可以施加于群體成員而不必將群體成員首先轉(zhuǎn)化為可執(zhí)行程序。提供面向?qū)ο蟮木幊陶Z言的數(shù)據(jù)結(jié)構(gòu),用于為算法使用的每一密碼子(例如操作數(shù)、操作符)封裝基本數(shù)據(jù)。
文檔編號G06F15/18GK1643509SQ03806264
公開日2005年7月20日 申請日期2003年3月12日 優(yōu)先權(quán)日2002年3月18日
發(fā)明者肖為民, 托馬斯·邁克爾·蒂爾帕克 申請人:摩托羅拉公司