我對遺傳演算法理解

2021-09-09 02:02:11 字數 1489 閱讀 5644

1、始祖值

2、隨機交叉

3、優秀標準

4、精英策略

5、收斂

<?php

//始祖值,

$a=1;

echo "";print_r ($a);echo "

";

//雜湊值

$any = array(2,4,7,8,10,12,51,32,11);

echo "

";print_r ($any);echo "
";

//交叉並啟動精英策略,假設後代的和越大越優秀

foreach ($any

as$key=>$value

)echo "

";print_r ($c);echo "
";

$pos = array_search(max($c), $c

);echo

$c[$pos];//

得到乙個優秀的後代

$hd = $c[$pos

];$a1=array

();array_push($a1,$c[$pos]);//

把優秀的送到精英營里

echo "

";print_r ($a1);echo "
";

//把優秀的從原來的隊伍裡除名

unset($c[$pos

]);echo "

";print_r ($c);echo "
";

//再來一次交叉,這次始祖是52

foreach ($c

as$key=>$value

)echo "

";print_r ($c1);echo "
";

//再取乙個優秀的後代

$pos1 = array_search(max($c1), $c1

);echo

$c1[$pos1];//

得到乙個優秀的後代

//第一代是1,到了第三代就是85了。。。。

?>

初次認識學習,**肯定是錯的----------------用的是遍歷,而不是隨機,所以最後的值早就在我自己埋下的bug裡了,其實,物種的優勝略汰是在隨機的交配過程中產生的

遺傳演算法還具有以下幾方面的特點:

(1)遺傳演算法從問題解的串集開始搜尋,而不是從單個解開始。這是遺傳演算法與傳統優化演算法的極大區別。傳統優化演算法是從單個初始值迭代求最優解的;容易誤入區域性最優解。遺傳演算法從串集開始搜尋,覆蓋面大,利於全域性擇優。

(2)遺傳演算法同時處理群體中的多個個體,即對搜尋空間中的多個解進行評估,減少了陷入區域性最優解的風險,同時演算法本身易於實現並行化。

(4)遺傳演算法不是採用確定性規則,而是採用概率的變遷規則來指導他的搜尋方向。

(5)具有自組織、自適應和自學習性。遺傳演算法利用進化過程獲得的資訊自行組織搜尋時,適應度大的個體具有較高的生存概率,並獲得更適應環境的基因結構。

(6)此外,演算法本身也可以採用動態自適應技術,在進化過程中自動調整演算法控制引數和編碼精度,比如使用模糊自適應法[2] 。

我對遺傳演算法理解

1 始祖值 2 隨機交叉 3 優秀標準 4 精英策略 5 收斂 始祖值,a 1 echo print r a echo 雜湊值 any array 2,4,7,8,10,12,51,32,11 echo print r any echo 交叉並啟動精英策略,假設後代的和越大越優秀 foreach a...

遺傳演算法理解

3月20 日,有個同學問我一些關於遺傳演算法的 編寫,我按照她的思路寫出來第一二,四步。但是不明白為什麼要這樣做。我今天查了一些遺傳演算法相關資料,大概明白她為什麼要我這樣寫 了。以下是我的理解。遺傳演算法的基本思想借鑑的是生物學基礎的遺傳和進化。生物進化的一般過程 1.首先要有乙個初始種群,種群的...

遺傳演算法的理解

遺傳演算法是一種啟發式的隨機多引數優化演算法,能夠解決多種尋優問題,如揹包問題,求解函式極值點,影象配準引數優化,神經網路中的網路權係數的優化等等。遺傳演算法可以說是模擬自然界種群的進化過程。根據達爾文進化理論,生物種群在世世代代的繁衍過程中,適應環境的優良特性會一代代遺傳下去,不適應環境的特性則逐...