遺傳算法示例
看到論壇現(xiàn)在沒什么新玩意,扔塊磚頭上來砸人玩玩。
對于遺傳算法的理論描述網(wǎng)上有很多,在此不再贅述,只談?wù)剛(gè)人理解。一個(gè)需推導(dǎo)的未知問題可能有1個(gè)或多個(gè)解,如果將所有可能的結(jié)果一一羅列驗(yàn)證,時(shí)間代價(jià)太高。因此希望能盡可能的縮小答案范圍,并最終找出合理解。遺傳算法首先隨機(jī)生成多個(gè)結(jié)果,然后對這些結(jié)果進(jìn)行評價(jià),其結(jié)果越接近理想結(jié)果評價(jià)越高。如果都未達(dá)到目標(biāo),則選擇一部分結(jié)果開始“進(jìn)化”,生成一組新的隨機(jī)結(jié)果,然后重新開始上述工作,直到最后找到合理的結(jié)果,當(dāng)然,很多時(shí)候根本找不到合理的結(jié)果。
遺傳算法的程序框架:1。生成N個(gè)隨機(jī)解(基因)2。對每個(gè)結(jié)果進(jìn)行評價(jià)3。如果找到合理解,就返回結(jié)果4。否則,按優(yōu)選算法任意選擇兩個(gè)解,進(jìn)行雜交,生成其孩子5。對新子代解結(jié)果按一定幾率產(chǎn)生變異6。保存新子代解,重復(fù)第4步,直到子代數(shù)量和父代數(shù)量相同7。重新開始第2步。
[attachment=66071]