遺傳算法

一直以爲遺傳算法高大上,而後都不明覺厲,決定仍是要學習下這個優化算法。git

遺傳算法主要是模擬咱們高中學的染色體變異、染色體交叉等過程,而後經過優勝劣汰得到最優解。github

遺傳算法中,一個基本單位爲「個體」,一個種羣(系統)中擁有好多個體。每一個個體攜帶兩個內容:染色體與適應度。以羊羣舉例算法

整個牧場 -> 一個種羣函數

一頭羊->一個個體學習

某頭羊決定肥瘦程度的染色體->該個體的染色體(模型中全部變量構成一條染色體,每一個變量就是染色體上一個基因)優化

肥瘦程度->適應度(每一個個體的適應度就至關於這個模型在「這個染色體的變量的值下的解」,評價模型的最優解)視頻

目標->養出最肥的羊(尋找最優解,從中挑出來最大的適應度,它就是在當前狀況下的最優解)it

遺傳算法流程:io

一次迭代包括如下幾個過程:變量

  1. 染色體變異。即改變某個染色體的值;適應度越優的個體染色體變化範圍越小,經過一個隨機數讓染色體值變化
  2. 染色體交叉。任意選擇兩個染色體交換部分基因;隨機選擇一對節點,相互交換對應的值便可
  3. 計算適應度。計算每一個染色體在當前迭代下對應的適應度。
  4. 優勝劣汰。殺死排名最後的那個個體。殺死以後種羣數量就變少了,因此就必需要讓比較優良的個體多生點來把種羣數量補回來。

 

GA的目標函數和限制條件都要人爲根據業務場景調整

 

視頻參考:https://morvanzhou.github.io/tutorials/machine-learning/evolutionary-algorithm/2-01-genetic-algorithm/

相關文章
相關標籤/搜索