遺傳演算法學習筆記(1)

2021-08-22 05:27:57 字數 1500 閱讀 8813

學概率的時候提到有這樣乙個「無限猴子定律」:乙個具有無限生命的猴子(它不懂人類的語言)隨機的敲擊打字機,總有一天它會打出一本莎士比亞的書來。

這只猴子能打出任意的書來,有意義的無意義的,無意義的遠多於有意義,猴子定律只是指出了得到這種有意義的書的可能性,不保證他的現實性,也許整個宇宙從誕生到現在的時間,這只猴子仍然打不出來,但是在接下來的時間裡,總有那麼一天完成這個任務。

個人理解,這個猴子定律說的是以概率的角度看,什麼可能都會發生,從無序中能得到有序。生命也是一種有序的組織,它是如何誕生的,達爾文的演化論科學的解釋了這一問題。

攻擊演化論的人乙個重要理由是:生命如此複雜,它的產生幾乎是乙個概率為零的事件。他們從概率計算認為,從宇宙誕生的時間算起,也無法自發生成乙個細胞。

計算是對的,結論是錯誤的,原因是他們忽略了自然選擇對這一過程的干預。如果沒有干預,什麼都在發生,也就什麼都不可能發生。

從低階到高階,從簡單到複雜,高度複雜的生命是由更為簡單的生命一步一步地通過選擇形成。突變是隨機的,但是在自然選擇的作用下,隨機性大大降低。無序的沒有意義的被自然剔除,剩下的進一步選擇,一步一步,高階生命就這樣誕生了。這樣的高階生命也許不是最完美的,但確實最適合環境的

上帝是否擲骰子?上帝當然擲骰子,但是它也提供了乙個甄別的手段,就是說上帝認為某種結果是合理的,合理的結果就留下了,不合理的就忽略了,在合理的結果中繼續甄別。。。。。

上帝需要操心生命具體如何進化嗎,他需要對生命的各方各面(組成物質,細胞結構,器官等等)進行設計嗎?也不需要。只要提供了甄別,隨生命怎麼隨機變異,他只負責對變異的結果進行贈別就行了,若干年後,當年簡單的有機物變成了現在高度複雜的生命。

遺傳演算法模擬上帝建立生命的這一過程

計算機演算法是指完成乙個任務所需要的具體步驟和方法。也就是說給定初始狀態或輸入資料,經過電腦程式的有限次運算,能夠得出所要求或期望的終止狀態或輸出資料。

演算法也可簡單描述為:給出一定的輸入,得到合理的輸出。一些演算法我們可以在了解它的原理下計算出來,典型的如數學計算。但許多情況下數學模型很難精確求最優解,對於這些複雜問題,能夠得到次優解就很滿意了

遺傳演算法從代表問題可能的潛在解集合開始,模仿了自然進化模型,如選擇、交叉、變異、遷移等過程。計算開始時,一定數目n個個體(即初始解集合)隨機的初始化,計算每個個體的適應度(供選擇的量化指標),選出適應度最高的個體,第一代就這樣誕生了,然後得到的子代按一定概率變異,加入下一次選擇,再變異,再選擇。。。。。這一過程迴圈往復,直到滿足求解條件為止。

也就是說,使用遺傳演算法我們不需要詳細了解演算法原理,數學模型,我們只要給出進化手段(變異手段,選擇手段等),和足夠的時間,遺傳演算法總能給我們找到乙個次優解,儘管可能不是最優解

所以某種程度上遺傳演算法幾乎是乙個萬能演算法

但是為什麼不容易得到最優解?所謂最優解,只會有乙個,如果有兩個就不叫最優解了。

回頭看看地球上的生物進化。總的趨勢是從低階到高階,從簡單到複雜。我們把進化出理性生命看做最優解,是否必然只產生像人類,而不是別的什麼理性生命呢?

注:這裡提到的上帝是乙個比喻,也就是常說的斯賓洛沙的上帝,即大自然,而不是聖經中那個具有人格的上帝

參考:

遺傳演算法學習

今天學習遺傳演算法 首先我學習的教程裡的案例是利用遺傳演算法這個群優化演算法來優化bp神經網路的權值和閾值。但它是直接呼叫的工具箱,於是我打算不呼叫工具箱寫乙個詳細點的來加深自己對演算法的理解。原理 簡而言之就是模仿達爾文的演化論,生成種群,通過變異交叉來進化種群,最後得到一群適應度高的優秀種群。我...

遺傳演算法學習

遺傳演算法 ga 是模擬生物在自然環境中的遺傳和精華的過程形成的自適應全域性優化搜尋演算法。通過自然選擇,交叉 遺傳 變異等步驟來產生新一代種群,並逐步使種群精華到包含近似最優解的狀態。種群是生物進化過程中的乙個集團,表示可行解的集合。個體是組成種群的單個生命體,表示可行解。染色體是包含生命體的所有...

matalb遺傳演算法學習筆記

智慧型演算法及應用 p218遺傳演算法 初始引數 size 80 種群大小為80 g 100 迭代次數100 codel 10 染色體長度10 umax 2.048 變數上限 umin 2.048 變數下限 e round rand size,2 codel 初始隨機種群 主程式 for k 1 1...