基因組編碼原則
1 遺傳演算法是對求解問題引數的編碼進行操作,而不是引數本身,這就需要遺傳演算法基於乙個有限的字母表,並將最優化問題的的自然產生集編碼成有限長度的字串。**義成基因,位串的位被稱為基因),乙個位串稱為乙個個體(染色體),帶有特徵的個體的集合組成種群。按照一定規則對引數進行編碼稱作遺傳編碼。遺傳演算法引數編碼原則採取最小字母表原則,選擇乙個是問題得以自然表達的最小字母表進行編碼,如二進位制編碼或者非二進位制編碼。
題外話:在寫注釋的時候,怎麼做的,固然重要,但更重要的是為什麼這樣做。
遺傳演算法的模式理論:模式數量越多遺傳效率越好。正因為如此,經常採取二進位制編碼。
2 適應度函式
選擇適應度函式:非負,單值,計算量小,通用性強;適應度函式通常由目標函式變換得到,減少了對目標函式的連續,可微等條件依賴。
為了維持種群的多樣性和競爭性,防止適應度搞的個體過度複製,適應度的個體過早淘汰而使有價值的個體得不到繁衍,有必要度適應度進行調整。
線性變換,冪函式變換,指數變換
3 遺傳優化過程
遺傳演算法不是一種盲目的搜尋方法,而是一種以適應度函式為目標導向的啟發式優化搜尋方法
輪盤賭選擇法:
流程:1)檢查每乙個染色體——觀察解決問題的效能——分配適應性分數
2)選出兩個成員作為父體
3)根據雜交率(crossover rate)進行雜交
4)根據變異率進行變異
重複上述步驟,直到100個成員的新群體被建立出來。 這樣乙個的過程被稱為世代(或者代 generation)整個迴圈稱為 時代(epoch)
遺傳演算法中的隨機數問題:
在遺傳演算法程式設計中,迭代和隨機數都是很常用的做法,但在實際程式設計中卻遇到了很多問題,每次迭代後產生的隨機數都一樣。這就要求每次都新增乙個不同的隨機種子,比如乙個遞增的整數,但我又在想,如果增加了這樣的額外條件,而且在寫這個整數,如果擴充套件到多執行緒,會不會導致爭用,或者同樣的隨機數,而使得產生同樣的問題。
剛才寫到這裡,去vs裡面寫了個多執行緒的**測試了一下,確實會產生不同執行緒使用同樣的隨機種子而導致產生的隨機數是一樣的(但有時候也不會)
(第乙個序號是執行緒號,中間是隨機數,後面是隨機種子)
遺傳演算法擺脫了傳統演算法對問題引數的依賴,如連續,可導,可微等限制,只需要對引數的編碼進行操作,減少了問題的複雜性,同時是一種全域性搜尋演算法,避免陷入區域性最優解。
遺傳演算法學習
今天學習遺傳演算法 首先我學習的教程裡的案例是利用遺傳演算法這個群優化演算法來優化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...