遺傳物質的主要載體是染色體(chromsome),染色體主要由DNA和蛋白質組成。其中DNA為最主要的遺傳物質。 基因(gene)是有遺傳效應的片斷,它存儲著遺傳信息,可以準確 " /> aaa在线观看视频高清视频,久久免费特黄毛片,美女视频ww8888网网

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

遺傳算法介紹(內含實例)

  現代生物遺傳學中描述的生物進化理論:
  遺傳物質的主要載體是染色體(chromsome),染色體主要由DNA和蛋白質組成。其中DNA為最主要的遺傳物質。 基因(gene)是有遺傳效應的片斷,它存儲著遺傳信息,可以準確地復制,也能發生突變,并可通過控制蛋白質的合成而控制生物的狀態.生物自身通過對基因的復制(reproduction)和交叉(crossover,即基因分離,基因組合和基因連鎖互換)的操作時其性狀的遺傳得到選擇和控制。生物的遺傳特性,使生物界的物種能保持相對的穩定;生物的變異特性,使生物個體產生新的性狀,以至于形成了新的物種(量變積累為質變),推動了生物的進化和發展。

  遺傳學算法和遺傳學中的基礎術語比較

染色體(chromosome)   數據,數組,序列
基因(gene)單個元素,位
等位基因(allele)數據值,屬性,值
基因座(locus) 位置,iterator位置
表現型(phenotype) 參數集,解碼結構,候選解
遺傳隱匿(epistasis) 非線性

  染色體又可以叫做基因型個體(individuals),一定數量的個體組成了群體(population),群體中個體的數量叫做群體大小。各個個體對環境的適應程度叫做適應度(fitness)

  遺傳算法的準備工作:
  1)數據轉換操作,包括表現型到基因型的轉換和基因型到表現型的轉換。前者是把求解空間中的參數轉化成遺傳空間中的染色體或者個體(encoding),后者是它的逆操作(decoding)
  2)確定適應度計算函數,可以將個體值經過該函數轉換為該個體的適應度,該適應度的高低要能充分反映該個體對于解得優秀程度。非常重要的過程!

  遺傳算法的基本步驟
  遺傳算法是具有"生成+檢測"(generate-and-test)的迭代過程的搜索算法。 基本過程為:
  1)編碼,創建初始集團
  2)集團中個體適應度計算
  3)評估適應度
  4)根據適應度選擇個體
  5)被選擇個體進行交叉繁殖,
  6)在繁殖的過程中引入變異機制
  7)繁殖出新的集團,回到第二步

  一個簡單的遺傳算法的例子:求 [0,31]范圍內的y=(x-10)^2的最小值
  1)編碼算法選擇為"將x轉化為2進制的串",串的長度為5位。(等位基因的值為0 or 1)
  2)計算適應度的方法是:先將個體串進行解碼,轉化為int型的x值,然后使用y=(x-10)^2作為其適應度計算合適(由于是最小值,所以結果越小,適應度也越好)
  3)正式開始,先設置群體大小為4,然后初始化群體 => (在[0,31]范圍內隨機選取4個整數就可以,編碼)
  4)計算適應度Fi(由于是最小值,可以選取一個大的基準線1000,Fi = 1000 - (x-10)^2)
  5)計算每個個體的選擇概率.選擇概率要能夠反映個體的優秀程度.這里用一個很簡單的方法來確定選擇概率
  P=Fi / TOTAL(Fi).
  6)選擇.
  根據所有個體的選擇概率進行淘汰選擇.這里使用的是一個賭輪的方式進行淘汰選擇.先按照每個個體的選擇概率創建一個賭輪,然后選取4次,每次先產生一個0-1的隨機小數,然后判斷該隨機數落在那個段內就選取相對應的個體.這個過程中,選取概率P高的個體將可能被多次選擇,而概率低的就可能被淘汰.

  下面是一個簡單的賭輪的例子
   13%               35%                    15%                 37%       
----------|----------------------------|------------|-*-------------------------|
   個體1              個體2                  個體3    ^0.67    個體4

  隨機數為0.67落在了個體4的端內.本次選擇了個體4. 被選中的個體將進入配對庫(mating pool,配對集團)準備開始繁殖.
  7)簡單交叉
  先對配對庫中的個體進行隨機配對.然后在配對的2個個體中設置交叉點,交換2個個體的信息后產生下一代. 比如( | 代表簡單串的交叉位置)
   ( 0110|1, 1100|0 ) --交叉--> (01100,11001)
   ( 01|000, 11|011 ) --交叉--> (01011,11000)
  2個父代的個體在交叉后繁殖出了下一代的同樣數量的個體. 復雜的交叉在交叉的位置,交叉的方法,雙親的數量上都可以選擇.其目的都在于盡可能的培育出更優秀的后 代

  8)變異

  變異操作時按照基因座來的.比如說沒計算2萬個基因座就發生一個變異(我們現在的每個個體有5個基因座.也就是說要進化1000代后才會在其中的某個基因座發生一次變異.)變異的結果是基因座上的等位基因發生了變化.我們這里的例子就是把0變成1或則1變成0.

  至此,我們已經產生了一個新的(下一代)集團.然后回到第4步,周而復始,生生不息下去:)

  偽代碼實例(適合愛看代碼的朋友~):

//Init population
foreach individual in population
{
individual
= Encode(Random(0,31));
}

while (App.IsRun)
{
//計算個體適應度
int TotalF = 0;
foreach individual in population
{
individual.F
= 1000 - (Decode(individual)-10)^2;
TotalF
+= individual.F;
}

//------選擇過程,計算個體選擇概率-----------
foreach individual in population
{
individual.P
= individual.F / TotalF;
}
//選擇
for(int i=0;i<4;i++)
{
//SelectIndividual(float p)是根據隨機數落在段落計算選取哪個個體的函數
MatingPool[i] = population[SelectIndividual(Random(0,1))];
}
//-------簡單交叉---------------------------
//由于只有4個個體,配對2次
for(int i=0;i<2;i++)
{
MatingPool.Parents[i].Mother
= MatingPool.RandomPop();
MatingPool.Parents[i].Father
= MatingPool.RandomPop();
}

//交叉后創建新的集團
population.Clean();
foreach Parent in MatingPool.Parents
{
//注意在copy 雙親的染色體時在某個基因座上發生的變異未表現.
child1 = Parent.Mother.DivHeader + Parent.Father.DivEnd;
child2
= Parent.Father.DivHeader + Parent.Mother.DivEnd;
population.push(child1);
population.push(child2);
}
}

it知識庫遺傳算法介紹(內含實例),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 丁香六月在线 | 呦呦色| 四虎永久在线观看视频精品 | 中文字幕在线一区二区在线 | 国产精品嫩草影院免费看 | 99久久综合狠狠综合久久 | 呦呦色| 麻豆系列| 好吊妞视频998www | 久久成人亚洲香蕉草草 | 91青青国产在线观看免费 | 一级毛片成人免费看a | a一级一色一情 | 午夜黄色 | 黄片毛片在线观看 | 热久久国产欧美一区二区精品 | 国产在线麻豆自在拍91精品 | 日韩欧美区 | 精品国产成人a在线观看 | 亚洲一区二区三区高清视频 | 国产亚洲精品午夜高清影院 | 激情网站在线 | 麻豆精品久久久 | 美国三级日本三级久久99 | 四虎永久在线免费观看 | 女子十八毛片 | 福利写真视频在线观看网站 | 色综合久久婷婷天天 | 色婷婷激情五月 | 日产精品一区二区 | 欧美精品亚洲精品日韩专区 | 亚洲欧美日韩国产一区二区三区精品 | 色一色在线观看视频网站 | 韩国美女一区二区 | 亚洲福利视频一区 | 在线观看亚洲一区二区 | 最近中文字幕无吗免费视频 | 成人在线免费视频观看 | 亚洲视频国产 | 亚洲六月丁香六月婷婷蜜芽 | 黄色在线观看视频网站 |