創建虛擬生物第六部分

6生物進化
通過首先創建一個基因型的初始化的羣體,虛擬生物的進化就開始了。
這些初始化的基因型能夠來自於幾個可能的源頭:新的基因型能夠被
合成,以結點和連接的集合的隨機的下一代,爲了生成新的進化的初始
羣體,能夠使用之前的進化的已存在的基因型,或者是手工設計的種子
基因型。然而,在這裏展示的例子是非手工設計的種子基因型。

一個生存比例參數決定了每一代的生存比例。在這個工作中,羣體數量是
300,生存比例是1/5。如果初始生成的羣體的正適應度的數量比應該
生存的數量少,另一輪的種子基因型能夠生成,來代替0適應度的個體。

對於每一代生物,它們都是按照它們的基因描述信息進行生長,並且它們
的適應度的值是按照上述所描述的方法中的一種進行度量。適應度落在存
活的比例中的個體能夠生下一代,它們的後代充滿了不能存活個體的位置。
監督者在保持下一代的羣體,羣體的總數量被保持穩定。每個存活的個體
產生的後代的數量正比於它的適應度,最成功的個體有最多的孩子。

從存活的個體產生它們的後代,通過複製和組合它們的有向圖的基因型。
當這些圖被產生,以概率性的改變或者是交換的方式,所以相對應的基因型
與父代是相似的,但是以隨機的方式進行了改變或者是調整。

6.1交互有向圖
一個有向圖以如下的步驟進行交換:
1。每一個結點的內部參數都可能被改變。對於每個參數類型的交換頻率
決定了一個交換應用到它身上的概率。布爾值的交換通過簡單地改變它的狀態。
爲了一個高斯式的分佈,標量的值通過在它身上加上一個隨機的值,而交換。
所以小的調整比極端的值更常見。一個調整值的範圍是相對於初始值的,
所以大的量能被更容易得改變,小的值被謹慎地調整。一個標量值可能是負的
一個交換髮生後,值被約束在合理的範圍之內。一些參數僅有有限個合法的值,
這樣的參數是通過簡單地隨機地從集合中選擇一個可能值的方式來完成交換。

2。一個隨機的新結點被添加到圖中。如果沒有連接指向這個新結點,
這個新結點對基因型是沒有影響的。因此一個新的結點總是初始化被添加的,
但是如果沒有被連接的話,在第五步時進行垃圾回收。隨着進化的進行,
交換的類型允許圖的複雜度有增長。

3。每一個連接的參數都可能交換,與第一步的結點參數的方式是相同的。
連接的指針以一定的頻率被移動,以隨機地指向與它緊鄰的不同的結點。

4。新的隨機的連接被添加,並且原來的連接被移除。在神經圖上這些操作沒有
被執行,因爲每一個元素的輸入的數量是固定的,但是形態圖上每個結點有可
變數量的連接。每個存在的結點有一個新的隨機的連接添加上,每個存在的
連接可能被移除。

5。沒有連接的元素被垃圾回收了。根據圖的連接,連接性被計算,從形態的
根結點開始,或者從神經圖的執行器結點開始。儘管爲了可能的重連接留下斷開的
結點可能是有利的,並且可能是生物學的相似的,至少是斷開的新的添加的結點
被移除,來阻止圖規模的非必要性的增長。

因爲在每一個元素上執行交換,僅有一點的元素的基因型不可能接受任何
交換,然而有很多的元素的基因型接收了足夠多的交換,它們很少與父代
相似。根據當前圖的交換的大小的一個正比例的數量,臨時性調整交換
頻率是被允許的,在平均來說,在整個圖上至少有一個交換髮生。

嵌套的有向圖的交換,正如這裏用來表示生物的,通過首先交換外層圖,
再交換圖的內層,來執行這個過程。內層的圖被最後交換,是因爲內層
的結點的某些參數的合法的值能夠外層圖的拓撲關係。

6.2交配有向圖
性生殖允許有多個親代的基因被組合來形成後代。這允許性狀獨立的進化
並且然後合併成一個個體。對於交配有向圖的兩個不同的方法展示在這裏。

第一個操作是交叉(見圖5A)兩個親代的結點每個被對齊爲一行正如它們
的存儲順序,爲了生成子代,複製第一個親代的結點,但是一個或者是多
個交叉點決定了複製源切換到另一個親代的時機。結點的連接一同複製。
如果複製的結點指向越界了,它們被隨機地重賦值。

第二個交配的操作是移植,通過把一個親代的一個結點連接到另一個親代
的一個結點上(見圖5B)第一個親代被複制,它的連接中的一個被隨機
地選擇,調整它的指向到第二個親代中的一個隨機的結點上。第一個親代
的新的未連接的結點被移除,第二個親代的新的連接的結點和第一個親代
結點被添加到新的圖中。

一個新的有向圖能夠通過以上的兩個方法生成了,或者僅使用其中之一的
方法。交配的後代有時從屬於後面的交換,但是歸結於交換頻率。在這個
工作中,對於每一個子代的產生,一個生殖方法接近於隨機,通過存在的
個體使用比例:40%無性生殖,30%交叉,30%移植。如果必要的話,第
二個親代從監督者中選擇,並且一個新的基因型從一個或者是多個親代生成。

基因型的一個新代創建之後,從每一個基因型生成一個基因型的生物,然後
它們的適應度被計算一下。正如變異和選擇的循環在繼續,羣體被導向爲生物
有越來越高的適應度。

6.3併發實現
爲了在一個連接的機器CM5上的併發運行,這個遺傳算法已經被實現了。
以一個主從的消息傳遞模型。一個單處理結點執行遺傳算法。爲了適應度
的測試,把基因型分包給其它的結點,它們被確定之後再取回適應度的值。
適應度的測試包括了每一個動態模擬,儘管大部分能夠執行接近實時,它們
仍然是系統的主要的計算性需求。每個處理器執行一個適應度的測試,並行
化這個遺傳算法是一個簡單的但是很有效的方式,並且整體性能與處理器
的數量是線性關係,只要羣體的數量比處理器的數量僅多一點點。

爲了計算每個適應度的測試,花費了不同的時間,這依賴於生物的複雜度
和它試圖如何移動。爲了阻止處理器有空閒,它僅僅在等待其它的處理器完成,
在所有的個體完成適應度的測試之前就生成新的子代。在生殖的循環中,
那些慢的模擬被跳過,所以所有的處理器保持活躍。使用這個方法,一個進化
有羣體300個,運行100代,在一個CM5上有32個處理器,花費的時間是3個
小時。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章