基因表達編程
編輯在計算機編程中,基因表達編程(GEP)是一種創建計算機程序或模型的進化算法。這些計算機程序是復雜的樹狀結構,通過改變其大小、形狀和組成來學習和適應,很像一個生物體。而像生物體一樣,GEP的計算機程序也被編碼在固定長度的簡單線性染色體中。因此,GEP是一個基因型-表型系統,受益于簡單的基因組來保持和傳遞遺傳信息,以及復雜的表型來探索環境和適應環境。
基因表達編程的背景
編輯進化算法使用個體種群,根據適合度選擇個體,并使用一個或多個遺傳算子引入遺傳變異。它們在人工計算系統中的應用可以追溯到20世紀50年代,當時它們被用來解決優化問題(例如Box1957和Friedman1959)。但隨著1965年Rechenberg對進化策略的介紹,進化算法才得到了普及。關于進化算法的一個很好的概述文本是Mitchell(1996)的《遺傳算法簡介》一書。基因表達式編程屬于進化算法家族,與遺傳算法和遺傳編程密切相關。從遺傳算法中,它繼承了固定長度的線性染色體;而從遺傳編程中,它繼承了不同大小和形狀的表達式解析樹。在基因表達編程中,線性染色體作為基因型工作,解析樹作為表型工作,形成了一個基因型/表型系統。這個基因型/表型系統是多基因的,因此在每條染色體上編碼了多個解析樹。這意味著GEP創建的計算機程序是由多個解析樹組成的。由于這些解析樹是基因表達的結果,在GEP中它們被稱為表達樹。
編碼:基因型
編輯基因表達編程的基因組由一個固定長度的線性符號字符串或染色體組成,由一個或多個大小相同的基因組成。這些基因盡管長度固定,但對不同大小和形狀的表達樹進行編碼。一個有兩個基因的染色體的例子,每個基因的大小為9,是一個字符串(零號位置表示每個基因的開始)。012345678012345678L+a-baccd**cLabacd其中"L"代表自然對數函數,"a"、"b"、"c"、"d"代表問題中使用的變量和常數。表達樹:表征如上所示,基因表達編程的基因都有相同的大小。然而,這些固定長度的字符串為不同大小的表達樹編碼。這意味著編碼區的大小因基因而異,使適應和進化得以順利進行。
這種表達樹由GEP基因的表型表達組成,而基因是編碼這些復雜結構的線性字符串。對于這個特殊的例子,線性字符串對應的是。這是對表達樹從上到下和從左到右的直讀。這些線性字符串被稱為k-表達式(來自Karva符號)。從k表達式到表達樹也非常簡單。例如,下面這個k表達式。01234567890Q*b**+baQba是由兩個不同的終端(變量"a"和"b"),兩個不同的兩個參數的函數("*"和"+"),和一個參數的函數("Q")組成。其表達式給出了。
K-表達式和基因
編輯基因表達式編程的K-表達式對應于得到表達的基因區域。這意味著基因中可能有不被表達的序列,這對大多數基因來說確實如此。之所以有這些非編碼區,是為了提供一個終端的緩沖區,以便GEP基因中編碼的所有K表達總是對應于有效的程序或表達。因此,基因表達程序的基因是由兩個不同的域組成的--頭和尾--每個域都有不同的屬性和功能。頭部主要用于編碼為解決手頭問題而選擇的函數和變量,而尾部雖然也用于編碼變量,但基本上提供了一個終端庫,以確保所有程序都沒有錯誤。對于GEP基因來說,尾巴的長度由公式給出。其中,h是頭的長度,nmax是xxx算數。例如,對于使用函數集F={Q,+,-,?,/}和終端集T={a,b}創建的基因,nmax=2。而如果我們選擇頭的長度為15,那么t=15(2-1)+1=16,即
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/163711/