自適應遺傳演算法 基於遺傳演算法生成資料

2021-10-12 18:21:06 字數 1055 閱讀 5579

首先,設定好了初始種群群大小。然後,我們定義了乙個函式,用它來區分好樣本和壞的樣本。再次,我們選擇出好的樣本,並讓他們繁殖自己的後代。最後,這些後代們從原來的樣本中替代了部分壞的樣本,並不斷重複這一過程。遺傳演算法實際上就是這樣工作的,也就是說,它基本上盡力地在某種程度上模擬進化的過程。關於遺傳演算法就不詳細介紹,感興趣可以引數

資料涉及int、long、float、double、string、bool、date等型別。如果統一使用二進位制的方式編碼,會導致有些型別變異後無法轉為原先型別。解決方案為對各種型別的資料分別初始化。

int、float型的資料使用32位二進位制編碼;double、long型的資料使用64位二進位制編碼。特別要注意如果string型別使用二進位制編碼進行表示,在進行變異後在轉為string回亂碼。string型別的編碼可以使用char 字元進行表示,在變異的時候可以指定變異範圍,解決變異後亂碼的問題。bool型別是不適合使用遺傳演算法進行變異的,因為bool型別是可以使用極小的代價進行遍歷的,因為bool只有true,false兩種情況。date型別的資料,也是不適合直接使用二進位制表示的,將date按年、月、日、時、分、秒等才分,分別通過遺傳演算法變異+正則表示效果會更好。

評估方法千差萬別,結合業務場景和目標涉及合適的評估方法即可。因為在測試場景,是乙個找bad case的場景,即在滿足輸入條件的前提下,找出壞的樣本,找出**的bug。有兩種方案可以選擇:

方案1:將評估種群中的適應度去掉,讓樣本充分遺傳變異,流程入下圖

方案2:評估種群中的適應度,選出壞的樣本進行遺傳變異,流程入下圖

我們使用的方式是啟發式的分而治之方法。

1、通過遞迴的方式解析輸入資料(因為json array的資料存在巢狀,所以要使用遞迴的方式進行解析),獲取請求資料的key,根據key拉取歷史測試資料作為種子,以map方式儲存記為map。

2、通過遞迴的方式解析對每個key,在map中找對應的種子,要是沒有找到種子使用該型別預設的資料作為種子,進行遺傳變異。

如果只是涉及方便列舉的資料(英文本母和數字),可以構建乙個變異基因庫,每次變異從基因庫選乙個基因替換要變異的基因。

涉及無法列舉的變異,在評估種群中的適應度加上過濾亂碼的過濾功能。

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

遺傳演算法 python 簡書 遺傳演算法

優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...

遺傳演算法歸納

遺傳演算法 genetic algorithm 是一類借鑑生物界的進化規律 適者生存 優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率化的尋優方法,能自動獲取和指導優化的搜尋空間,自適應地...