本發明涉及存儲器測試,尤其涉及一種基于改進遺傳算法的存儲器測試算法的優化方法及裝置。
背景技術:
1、近年來,對大容量存儲器的需求持續增長,由于存儲器集成度不斷提高以及制造工藝日趨復雜,故障發生率也在逐步上升,因此對存儲器測試算法的要求不斷提高,march算法屬于最典型的存儲器測試算法,雖然具有很高的故障覆蓋率以及線性的測試復雜度,在存儲器測試算法中占有重要地位,但某些應用場景下故障覆蓋率低下。
2、現有技術中雖然提出了各種針對march算法進行改進的存儲器測試方法,但通過改進后故障覆蓋率和測試效果仍然有待提升。
技術實現思路
1、本發明提供一種基于改進遺傳算法的存儲器測試算法的優化方法及裝置,用以解決現有技術中針對存儲器測試算法進行改進,但故障覆蓋率和測試效果仍然有待提升的技術問題。
2、本發明提供一種基于改進遺傳算法的存儲器測試算法的優化方法,方法包括如下步驟:
3、獲取存儲器測試算法的待優化搜索前進結果,從所述待優化搜索前進結果選取出特定搜索前進元素,作為第一蒙特卡洛搜索樹的根節點;
4、根據所述根節點在所述第一蒙特卡洛搜索樹中選擇子節點進行擴展,并對擴展得到的節點集合進行模擬,得到對應的故障覆蓋率;
5、將故障覆蓋率作為獎勵值在所述第一蒙特卡洛搜索樹進行反向傳播,得到第二蒙特卡洛搜索樹;
6、從所述第二蒙特卡洛搜索樹中選取候選節點得到待遺傳測試序列;
7、將所述待遺傳測試序列作為初始種群,并根據適應度從所述初始種群中遺傳得到后代序列,其中,所述適應度為故障覆蓋率的倒數;
8、在未滿足遺傳算法終止準則時,調用禁忌搜索算法對所述后代序列進行搜索,得到存儲器測試算法的優化后搜索前進結果。
9、在一些實施例中,所述待優化搜索前進結果的序列長度與所述第一蒙特卡洛搜索樹的節點層數相同,所述根據所述根節點在所述第一蒙特卡洛搜索樹中選擇子節點進行擴展,包括:
10、在所述第一蒙特卡洛搜索樹中,從根節點開始,確定每一節點層中子節點的訪問狀態;
11、當所述子節點的訪問狀態都為未訪問狀態時,從所述子節點隨機選取一個作為擴展節點;
12、當所述子節點的訪問狀態為部分未訪問狀態時,確定未訪問狀態子節點的數量,若所述數量為1,則將未訪問狀態子節點作為擴展節點,若所述數量大于1,則從未訪問狀態子節點中隨機選取一個作為擴展節點;
13、當所述子節點的訪問狀態都為已訪問狀態時,根據已訪問狀態子節點的訪問次數確定ucb值,并選取ucb值最大的已訪問狀態子節點作為擴展節點;
14、對所述擴展節點進行子節點擴展,當擴展得到的子節點為所述第一蒙特卡洛搜索樹的葉子節點時,停止節點擴展。
15、在一些實施例中,所述對擴展得到的節點集合進行模擬,得到對應的故障覆蓋率,包括:
16、將擴展得到的節點集合中節點對應的搜索前進元素組成的搜索前進元素序列,作為故障測試序列;
17、獲取所述故障測試序列在存儲器測試過程中達到的檢測故障數量,并確定存儲器故障類型的總故障數量;
18、將所述檢測故障數量與所述總故障數量的比值,作為所述故障測試序列的故障覆蓋率。
19、在一些實施例中,所述將故障覆蓋率作為獎勵值在所述第一蒙特卡洛搜索樹進行反向傳播,得到第二蒙特卡洛搜索樹,包括:
20、迭代執行以下處理:
21、從擴展得到的節點集合中的葉子節點開始,將故障覆蓋率作為反向傳播到所述第一蒙特卡洛搜索樹中的根節點,并在反向傳播過程中,更新所述節點集合中每個節點的訪問狀態;
22、當迭代達到預設的迭代規則,將當前迭代后得到的第一蒙特卡洛搜索樹作為第二蒙特卡洛搜索樹。
23、在一些實施例中,所述從所述第二蒙特卡洛搜索樹中選取候選節點得到待遺傳測試序列,包括:
24、針對第二蒙特卡洛搜索樹中的每個非葉子節點,以概率p從所述非葉子節點的子節點集合中選取最優子節點作為候選節點,以概率1-p從非最優子節點的子節點集合中隨機選擇一個節點作為候選節點,其中,所述最優子節點是所述非葉子節點的子節點集合中ucb值最大的一個子節點;
25、將候選節點對應的搜索前進元素組成的搜索前進元素序列作為待遺傳測試序列。
26、在一些實施例中,所述根據適應度從所述初始種群中遺傳得到后代序列,包括:
27、確定所述初始種群中每個序列個體的適應度;
28、執行m次錦標賽選擇,得到m個待遺傳個體,其中,在每一次錦標賽選擇過程中,從所述初始種群中隨機選擇m個序列個體,并從所述m個序列個體中選擇適應度最小的一個序列個體作為待遺傳個體,所述m為大于1的整數,所述m為大于1的整數;
29、將所述m個待遺傳個體組成的序列作為候選序列;
30、任意選取兩個候選序列進行交叉遺傳,并對交叉遺傳得到的個體序列進行突變,得到后代序列。
31、在一些實施例中,所述調用禁忌搜索算法對所述后代序列進行搜索,得到存儲器測試算法的優化后搜索前進結果,包括:
32、從所述后代序列中選擇兩個序列作為當前初始解,初始化禁忌表為空;
33、當所述當前初始解未滿足禁忌搜索終止準則時,將所述當前初始解作為歷史最優解,開始進行迭代搜索,其中,在每一次迭代搜索的過程中,在所述禁忌表的限制下,對所述當前初始解執行片段互換處理,得到表征所述當前初始解鄰域的候選解;
34、根據所述候選解的評價值來更新所述禁忌表以及所述歷史最優解,并確定出新最優解,所述候選解的評價值為適應度;
35、當某次迭代搜索得到的新最優解后滿足禁忌搜索終止準則時,將所述新最優解作為初始種群進行遺傳,并在達到遺傳算法終止準則時,將遺傳得到的后代序列作為存儲器測試算法的優化后搜索前進結果。
36、在一些實施例中,所述根據所述候選解的評價值來更新所述禁忌表以及所述歷史最優解,并確定出新最優解,包括:
37、當所述候選解的評價值小于所述當前初始解的評價值,確定滿足特赦準則,將所述候選解更新為新最優解,并將所述當前初始解更新到所述禁忌表中;
38、當所述候選解的評價值大于或等于所述當前初始解的評價值,確定不滿足特赦準則,將所述歷史最優解作為新最優解,并將所述當前初始解和所述候選解更新到所述禁忌表中。
39、在一些實施例中,所述方法還包括:
40、在達到遺傳算法終止準則時,將初始種群遺傳得到的后代序列作為存儲器測試算法的優化后搜索前進結果。
41、本發明還提供一種基于改進遺傳算法的存儲器測試算法的優化裝置,裝置包括如下模塊:
42、獲取模塊,用于獲取存儲器測試算法的待優化搜索前進結果,從所述待優化搜索前進結果選取出特定搜索前進元素,作為第一蒙特卡洛搜索樹的根節點;
43、擴展模塊,用于根據所述根節點在所述第一蒙特卡洛搜索樹中選擇子節點進行擴展,并對擴展得到的節點集合進行模擬,得到對應的故障覆蓋率;
44、傳播模塊,用于將故障覆蓋率作為獎勵值在所述第一蒙特卡洛搜索樹進行反向傳播,得到第二蒙特卡洛搜索樹;
45、選取模塊,用于從所述第二蒙特卡洛搜索樹中選取候選節點得到待遺傳測試序列;
46、遺傳模塊,用于將所述待遺傳測試序列作為初始種群,并根據適應度從所述初始種群中遺傳得到后代序列,其中,所述適應度為故障覆蓋率的倒數;
47、搜索模塊,用于在未滿足遺傳算法終止準則時,調用禁忌搜索算法對所述后代序列進行搜索,得到存儲器測試算法的優化后搜索前進結果。
48、本發明還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上述任一種所述基于改進遺傳算法的存儲器測試算法的優化方法。
49、本發明還提供一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現如上述任一種所述基于改進遺傳算法的存儲器測試算法的優化方法。
50、本發明還提供一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時實現如上述任一種所述基于改進遺傳算法的存儲器測試算法的優化方法。
51、本發明提供的基于改進遺傳算法的存儲器測試算法的優化方法及裝置,將故障覆蓋率作為獎勵值,利用蒙特卡洛搜索樹對存儲器測試算法的待優化搜索前進結果進行重新生成,能夠生成具有最優故障覆蓋率的待遺傳測試序列。然后以適應度為基礎,繼續使用遺傳算法生成后代序列,并在遺傳算法中使用禁忌搜索算法進一步搜索得到優化后搜索前進結果。如此在保證故障覆蓋率的基礎上,對存儲器測試算法的待優化搜索前進結果進行多次優化,能夠有效提高故障覆蓋率,提升存儲器測試算法的測試效果。