本發(fā)明涉及數(shù)字微流控芯片測(cè)試技術(shù),具體是一種基于遺傳蟻群融合算法的數(shù)字微流控芯片災(zāi)難性故障測(cè)試方法。
背景技術(shù):
數(shù)字微流控芯片常用于臨床檢測(cè)、醫(yī)藥工程等對(duì)可靠性要求高的領(lǐng)域,因此需要對(duì)數(shù)字微流控芯片進(jìn)行全面且高效的測(cè)試,保證其可靠性。數(shù)字微流控芯片的故障可分為災(zāi)難性故障和參數(shù)性故障,災(zāi)難性故障又可細(xì)分為絕緣體擊穿、相鄰電極短路、電極板斷路等故障。災(zāi)難性故障對(duì)芯片的破壞性是致命的,會(huì)導(dǎo)致芯片上實(shí)驗(yàn)液滴的完全停滯,使芯片無(wú)法正常工作。因此,對(duì)災(zāi)難性故障的測(cè)試是數(shù)字微流控芯片測(cè)試工作中特別重要的一步。
數(shù)字微流控芯片的災(zāi)難性故障測(cè)試原理為:利用測(cè)試液滴遍歷數(shù)字微流控芯片的陣列單元,若無(wú)故障,則測(cè)試液滴在遍歷后能夠到達(dá)數(shù)字微流控芯片上的廢液池,若存在故障,則會(huì)導(dǎo)致測(cè)試液滴在數(shù)字微流控芯片上的停滯,測(cè)試液滴無(wú)法到達(dá)數(shù)字微流控芯片上的廢液池。廢液池處有檢測(cè)液滴是否到達(dá)的檢測(cè)電路,若檢測(cè)電路檢測(cè)到測(cè)試液滴的到達(dá),則說(shuō)明數(shù)字微流控芯片無(wú)故障,否則,說(shuō)明存在故障。測(cè)試液滴遍歷數(shù)字微流控芯片的陣列單元的不同路由次序就形成了不同的測(cè)試路徑,測(cè)試路徑越短則測(cè)試花費(fèi)的時(shí)間就越少,測(cè)試效率越高。另外,測(cè)試算法本身的復(fù)雜度越低、收斂性越好,則測(cè)試算法的執(zhí)行效率越高,更有利于算法的在實(shí)際工作中的執(zhí)行。
目前,針對(duì)數(shù)字微流控芯片的災(zāi)難性故障,已有多種測(cè)試方法,如漢密爾頓回路測(cè)試法、歐拉回路測(cè)試法、并行掃描測(cè)試法、內(nèi)建自測(cè)試法、分區(qū)子陣列合并調(diào)度測(cè)試法、基于蟻群算法的搜索測(cè)試路徑的方法等。在這些方法中,漢密爾頓回路測(cè)試法、分區(qū)子陣列合并調(diào)度測(cè)試法無(wú)法檢測(cè)出相鄰電極短路故障;并行掃描測(cè)試法、內(nèi)建自測(cè)試法只適用于規(guī)則矩形陣列的數(shù)字微流控芯片的測(cè)試,且在線測(cè)試效率較低;歐拉回路測(cè)試法在應(yīng)用大規(guī)模芯片測(cè)試時(shí)算法復(fù)雜度較高且在線測(cè)試效率較低;基于蟻群算法的搜索測(cè)試路徑的方法,測(cè)試模型的建立步驟較繁瑣,且單一的蟻群算法收斂性較差,在應(yīng)用大規(guī)模芯片測(cè)試時(shí)效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的是針對(duì)技術(shù)中的不足,而提供一種基于遺傳蟻群融合算法的數(shù)字微流控芯片災(zāi)難性故障測(cè)試方法。這種測(cè)試方法不但能改善單一蟻群算法收斂性差的問(wèn)題,而且提高測(cè)試算法的執(zhí)行效率,并且能快速求得測(cè)試路徑,這種測(cè)試方法能夠檢測(cè)出相鄰電極短路故障,且兼容規(guī)則與非規(guī)則陣列芯片的測(cè)試,更有利于應(yīng)用于大規(guī)模芯片的測(cè)試。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案是:
一種基于遺傳蟻群融合算法的數(shù)字微流控芯片災(zāi)難性故障測(cè)試方法,與現(xiàn)有技術(shù)不同的是,包括以下步驟:
S1.建立數(shù)字微流控芯片的災(zāi)難性故障測(cè)試模型:根據(jù)數(shù)字微流控芯片的陣列單元結(jié)構(gòu),建立數(shù)字微流控芯片的災(zāi)難性故障測(cè)試模型,所述模型為:
(1)把數(shù)字微流控芯片的陣列單元抽象為無(wú)向圖G(V,E)的頂點(diǎn)V,相鄰陣列單元之間的連接關(guān)系抽象為無(wú)間圖G(V,E)的邊E,得到無(wú)間圖模型G(V,E),并建立其對(duì)應(yīng)的鄰接矩陣A;
(2)對(duì)無(wú)向圖模型G(V,E)中的所有頂點(diǎn)V進(jìn)行編號(hào),令每個(gè)頂點(diǎn)的編號(hào)對(duì)應(yīng)為該頂點(diǎn)在鄰接矩陣A中的行號(hào),從編號(hào)最小的頂點(diǎn)開(kāi)始,依次搜索與當(dāng)前頂點(diǎn)相關(guān)聯(lián)的邊,并對(duì)搜索到的邊從小到大進(jìn)行編號(hào);
(3)將無(wú)向圖模型G(V,E)中的邊E抽象為無(wú)向圖模型G′(V′,E′)的頂點(diǎn)V′,并令頂點(diǎn)V′的編號(hào)一一對(duì)應(yīng)G(V,E)中邊E的編號(hào),將無(wú)向圖模型G(V,E)中邊E之間的鄰接關(guān)系抽象為無(wú)向圖模型G′(V′,E′)的邊E′,建立無(wú)向圖模型G′(V′,E′)及其對(duì)應(yīng)的鄰接矩陣B;
(4)采用改進(jìn)的Floyd方法計(jì)算無(wú)向圖模型G′(V′,E′)中任意兩頂點(diǎn)間的最短路徑,以兩頂點(diǎn)間的最短路徑作為兩頂點(diǎn)間邊的權(quán)值,構(gòu)造一個(gè)完全連通圖模型G″(V″,E″),以此完全連通圖模型G″(V″,E″)作為數(shù)字微流控芯片災(zāi)難性故障測(cè)試的模型;
S2.得到初步測(cè)試路徑并設(shè)置最大最小蟻群算法的初始信息素上下界和信息素初始值:根據(jù)數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″),采用遺傳算法得到初步測(cè)試路徑,并根據(jù)初步測(cè)試路徑設(shè)置最大最小蟻群算法的初始信息素上下界和信息素初始值,其中,初始信息素上下界和信息素初始值具體設(shè)置公式為:
其中,τmax(0)、τmin(0)分別為初始信息素上界和下界,是遺傳算法求得的初步測(cè)試路徑中最短測(cè)試路徑的長(zhǎng)度,Pbest表示蟻群算法收斂時(shí)構(gòu)造最優(yōu)解的概率,avg等于m/2,m是最大最小蟻群算法中設(shè)置的螞蟻數(shù)量,ρ是信息素殘留系數(shù),τij(0)為任意路徑(i,j)上的信息素初值,u表示從遺傳算法求得初步測(cè)試路徑中選擇最短的u個(gè)測(cè)試路徑,是遺傳算法求得的初步測(cè)試路徑中的一個(gè)測(cè)試路徑k的長(zhǎng)度;
S3.搜索最終測(cè)試路徑并輸出結(jié)果:根據(jù)數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)和步驟S2得到的初始信息素上下界和信息素初始值,采用最大最小蟻群算法搜索最終測(cè)試路徑,蟻群算法迭代完成后,輸出最終測(cè)試路徑,其中,最大最小蟻群算法的目標(biāo)函數(shù)為:
其中,為最終測(cè)試路徑中兩個(gè)相鄰路由節(jié)點(diǎn)v″i和v″i+1之間的距離權(quán)值,路由節(jié)點(diǎn)v″i和v″i+1即為數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)中的兩個(gè)頂點(diǎn)。
所述步驟S1中的改進(jìn)Floyd方法為:
在計(jì)算無(wú)向圖G′(V′,E′)中任意兩頂點(diǎn)v′i和v′j之間最短路徑時(shí),先對(duì)待插入的節(jié)點(diǎn)v′r進(jìn)行路長(zhǎng)比較,如果dir≥dij或drj≥dij,dij代表兩個(gè)頂點(diǎn)之間的距離,則說(shuō)明插入節(jié)點(diǎn)v′r后,v′i經(jīng)過(guò)v′r到達(dá)v′j的路徑不會(huì)比原來(lái)兩頂點(diǎn)之間的路徑短,于是不再計(jì)算dir+drj,直接進(jìn)行下一節(jié)點(diǎn)的搜索,且無(wú)向圖G′(V′,E′)中頂點(diǎn)v′i到v′j的距離與v′j到v′i的距離對(duì)稱相等,若已計(jì)算v′i到v′j的距離,則不需再計(jì)算v′j到v′i的距離,這樣做減少了計(jì)算量。
所述步驟S2中遺傳算法的染色體編碼方案采用十進(jìn)制整數(shù)編碼,以初步測(cè)試路徑的一個(gè)路由節(jié)點(diǎn)次序作為一條染色體,且染色體編碼的起始位代表數(shù)字微流控芯片上液滴源所在的位置,編碼末位代表數(shù)字微流控芯片上廢液池所在的位置。
所述步驟S2中的遺傳算法的選擇算子采用適應(yīng)度比例方法,交叉算子采用順序交叉法,變異算子采用逆轉(zhuǎn)變異方法,且染色體起始位和末位不參與交叉操作和變異操作。
所述步驟S3中的最大最小蟻群算法在搜索最終測(cè)試路徑時(shí),按照偽隨機(jī)比例規(guī)則搜索最終測(cè)試路徑的節(jié)點(diǎn),具體地,螞蟻按照下面的公式搜索最終測(cè)試路徑的節(jié)點(diǎn):
其中,q0∈(0,1)是常數(shù),q∈(0,1)是隨機(jī)數(shù),τij(t)表示t時(shí)刻節(jié)點(diǎn)v″i和v″j間的信息素,ηij(t)表示啟發(fā)信息,ηij(t)=1/dij,dij為數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)中兩節(jié)點(diǎn)v″i和v″j間的距離,α和β分別表示影響信息素和啟發(fā)信息的相對(duì)強(qiáng)弱的兩個(gè)參數(shù)。
所述步驟S3中最大最小蟻群算法的信息素更新策略為:只允許每次迭代后的最短測(cè)試路徑增加信息素,具體地,信息素按照下面的公式更新:
其中,ρ是信息素殘留系數(shù),Δτij(t)表示路徑(i,j)上的信息素增量。f(Sbest)為本次最大最小蟻群算法迭代中最短測(cè)試路徑的長(zhǎng)度Lls或當(dāng)前全局最短測(cè)試路徑的長(zhǎng)度Lgs。
所述步驟S3中的最大最小蟻群算法的信息素上下界采用動(dòng)態(tài)更新策略,具體地,信息素上下界更新公式如下:
其中,τmax(t)、τmin(t)為t時(shí)刻信息素的上下界,Lls為本次最大最小蟻群算法迭代后最短測(cè)試路徑的長(zhǎng)度。
所述步驟S3中采用最大最小蟻群算法搜索最終測(cè)試路徑時(shí),為了防止液滴之間的意外融合,測(cè)試液滴需要滿足靜態(tài)約束條件和動(dòng)態(tài)約束條件。
這種測(cè)試方法不但改善了單一蟻群算法收斂性差的問(wèn)題,而且提高了測(cè)試算法的執(zhí)行效率,并且能快速求得測(cè)試路徑。這種測(cè)試方法能夠檢測(cè)出相鄰電極短路故障,且兼容規(guī)則陣列與非規(guī)則陣列數(shù)字微流控芯片,更有利于應(yīng)用于大規(guī)模數(shù)字微流控芯片的災(zāi)難性故障測(cè)試。
附圖說(shuō)明
圖1為實(shí)施例多元生化實(shí)驗(yàn)的數(shù)字微流控芯片的結(jié)構(gòu)示意圖;
圖2為一個(gè)3×3規(guī)則陣列數(shù)字微流控芯片的災(zāi)難性故障測(cè)試模型轉(zhuǎn)換示意圖;
圖3為數(shù)字微流控芯片上液滴之間的約束條件示意圖;
圖4為實(shí)施例方法應(yīng)用于多元生化實(shí)驗(yàn)數(shù)字微流控芯片的災(zāi)難性故障測(cè)試的方法收斂示意圖;
圖5為實(shí)施例方法與歐拉回路法、蟻群測(cè)試算法分別應(yīng)用于多元生化實(shí)驗(yàn)數(shù)字微流控芯片的災(zāi)難性故障測(cè)試所花費(fèi)的測(cè)試時(shí)間對(duì)比示意圖;
圖6為實(shí)施例方法的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明內(nèi)容作進(jìn)一步的闡述,但并不是對(duì)本發(fā)明的限定。
實(shí)施例:
參照?qǐng)D6,一種基于遺傳蟻群融合算法的數(shù)字微流控芯片災(zāi)難性故障測(cè)試方法,包括以下步驟:
S1.建立數(shù)字微流控芯片的災(zāi)難性故障測(cè)試模型:根據(jù)數(shù)字微流控芯片的陣列單元結(jié)構(gòu),建立數(shù)字微流控芯片的災(zāi)難性故障測(cè)試模型,所述模型為:
(1)把數(shù)字微流控芯片的陣列單元抽象為無(wú)向圖G(V,E)的頂點(diǎn)V,相鄰陣列單元之間的連接關(guān)系抽象為無(wú)向圖G(V,E)的邊E,得到無(wú)向圖模型G(V,E),并建立其對(duì)應(yīng)的鄰接矩陣A;
(2)對(duì)無(wú)向圖模型G(V,E)中的所有頂點(diǎn)V進(jìn)行編號(hào),令每個(gè)頂點(diǎn)的編號(hào)對(duì)應(yīng)為該頂點(diǎn)在鄰接矩陣A中的行號(hào),從編號(hào)最小的頂點(diǎn)開(kāi)始,依次搜索與當(dāng)前頂點(diǎn)相關(guān)聯(lián)的邊,并對(duì)搜索到的邊從小到大進(jìn)行編號(hào);
(3)將無(wú)向圖模型G(V,E)中的邊E抽象為無(wú)向圖模型G′(V′,E′)的頂點(diǎn)V′,并令頂點(diǎn)V′的編號(hào)一一對(duì)應(yīng)G(V,E)中邊E的編號(hào),將無(wú)向圖模型G(V,E)中邊E之間的鄰接關(guān)系抽象為無(wú)向圖模型G′(V′,E′)的邊E′,建立無(wú)向圖模型G′(V′,E′)及其對(duì)應(yīng)的鄰接矩陣B;
(4)采用改進(jìn)的Floyd方法計(jì)算無(wú)向圖模型G′(V′,E′)中任意兩頂點(diǎn)間的最短路徑,以兩頂點(diǎn)間的最短路徑作為兩頂點(diǎn)間邊的權(quán)值,構(gòu)造一個(gè)完全連通圖模型G″(V″,E″),以此完全連通圖模型G″(V″,E″)作為數(shù)字微流控芯片災(zāi)難性故障測(cè)試的模型;
如圖1所示的多元生化實(shí)驗(yàn)的數(shù)字微流控芯片,該數(shù)字微流控芯片有一個(gè)測(cè)試液滴源和一個(gè)廢液池,圖中的箭頭方向?yàn)閷?shí)驗(yàn)液滴的移動(dòng)路徑,檢測(cè)位置1和2是檢測(cè)實(shí)驗(yàn)液滴反應(yīng)結(jié)果的位置,為了對(duì)其進(jìn)行災(zāi)難性故障測(cè)試,需要測(cè)試液滴從液滴源出發(fā)遍歷整個(gè)數(shù)字微流控芯片后到達(dá)廢液池,為了防止液滴之間的意外融合,測(cè)試液滴之間需要滿足靜態(tài)約束條件和動(dòng)態(tài)約束條件,該數(shù)字微流控芯片陣列單元數(shù)為225個(gè),數(shù)量較大,因此為了對(duì)測(cè)試模型轉(zhuǎn)化的過(guò)程進(jìn)行直觀的說(shuō)明,參照?qǐng)D2的3×3規(guī)則陣列的數(shù)字微流控芯片,具體為:
(1)把3×3規(guī)則陣列的數(shù)字微流控芯片的陣列單元抽象為無(wú)向圖模型G(V,E)中的頂點(diǎn)V,陣列單元的相鄰關(guān)系抽象為邊E,得到如圖2中所示的無(wú)向圖模型G(V,E),并建立與無(wú)向模型G(V,E)對(duì)應(yīng)的鄰接矩陣A;
(2)對(duì)圖2所示的無(wú)向圖模型G(V,E)中頂點(diǎn)V進(jìn)行編號(hào),頂點(diǎn)的編號(hào)對(duì)應(yīng)為頂點(diǎn)在鄰接矩陣A的行號(hào),從編號(hào)最小的頂點(diǎn)開(kāi)始,依次搜索與當(dāng)前頂點(diǎn)相關(guān)聯(lián)的邊,并對(duì)搜索到的邊從小到大進(jìn)行編號(hào),如圖2所示無(wú)向圖模型G(V,E)中邊E的編號(hào)為“1”到“12”;
(3)將無(wú)向圖模型G(V,E)中的邊E抽象為將無(wú)向圖模型G′(V′,E′)的頂點(diǎn)V′,將無(wú)向圖模型G(V,E)中邊E之間的鄰接關(guān)系抽象為無(wú)向圖模型G′(V′,E′)的邊E′,得到無(wú)向圖模型G′(V′,E′),所述無(wú)向圖模型G(V,E)中邊E之間的鄰接關(guān)系為:若無(wú)向圖模型G(V,E)中的兩條邊有共同頂點(diǎn),說(shuō)明這兩條邊是鄰接的,則其對(duì)應(yīng)的無(wú)向圖模型G′(V′,E′)中的頂點(diǎn)之間存在一條邊,如附圖2所示將無(wú)向圖G(V,E)中編號(hào)為“11”和“12”的邊抽象為無(wú)向圖G′(V′,E′)的頂點(diǎn),編號(hào)為“11”和“12”的兩條邊存在共同的頂點(diǎn),則其抽象為圖G′(V′,E′)中的兩個(gè)頂點(diǎn)之間存在一條邊;
(4)最后根據(jù)無(wú)向圖模型G′(V′,E′),利用改進(jìn)的Floyd方法計(jì)算G′(V′,E′)中任意兩頂點(diǎn)間的最短路徑,以兩頂點(diǎn)之間最短路徑作為兩頂點(diǎn)間邊的權(quán)值,構(gòu)造一個(gè)完全連通圖模型G″(V″,E″),以此完全連通圖模型G″(V″,E″)作為數(shù)字微流控芯片災(zāi)難性故障測(cè)試的模型。如圖2所示的3×3規(guī)則陣列數(shù)字微流控芯片轉(zhuǎn)化的完全連通圖G″(V″,E″)中有12個(gè)頂點(diǎn),則其對(duì)應(yīng)條邊,由于邊數(shù)太多無(wú)法直觀畫出來(lái),故測(cè)試模型轉(zhuǎn)換中沒(méi)有給出完全連通圖G″(V″,E″)的具體圖形。
上述步驟S1中數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型的轉(zhuǎn)換方法適用于所有規(guī)則和非規(guī)則陣列的數(shù)字微流控芯片。
S2.得到初步測(cè)試路徑并設(shè)置最大最小蟻群算法的初始信息素上下界和信息素初始值:根據(jù)數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)采用遺傳算法得到初步測(cè)試路徑,并根據(jù)初步測(cè)試路徑設(shè)置最大最小蟻群算法的初始信息素上下界和信息素初始值,其中,初始信息素上下界和信息素初始值具體設(shè)置公式為:
其中,τmax(0)、τmin(0)分別為初始信息素上界和下界,是遺傳算法求得的初步測(cè)試路徑中最短測(cè)試路徑的長(zhǎng)度,Pbest表示蟻群算法收斂時(shí)構(gòu)造最優(yōu)解的概率,avg等于m/2,m是最大最小蟻群算法中設(shè)置的螞蟻數(shù)量,ρ是信息素殘留系數(shù),τij(0)為任意路徑(i,j)上的信息素初值,u表示從遺傳算法求得初步測(cè)試路徑中選擇最短的u個(gè)測(cè)試路徑,是遺傳算法求得的初步測(cè)試路徑中的一個(gè)測(cè)試路徑k的長(zhǎng)度;
具體為:
在遺傳算法迭代完成后,從遺傳算法求得的初步測(cè)試路徑中,選擇其中較短的初步測(cè)試路徑來(lái)計(jì)算最大最小蟻群算法的初始信息素上下界和信息素初始值,本實(shí)施例應(yīng)用于多元生化實(shí)驗(yàn)數(shù)字微流控芯片的災(zāi)難性故障測(cè)試中,相關(guān)參數(shù)的優(yōu)選的方案為:遺傳算法的迭代次數(shù)設(shè)為150次,種群的染色體數(shù)量N設(shè)為50,迭代完成后在求得的50條初步測(cè)試路徑中取前u=30條最短的初步測(cè)試路徑來(lái)形成初始信息素上下界和信息素初始值,取ρ=0.92,Pbest=0.05,螞蟻的數(shù)量m=30;
S3.搜索最終測(cè)試路徑并輸出結(jié)果:根據(jù)數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)和步驟S2得到的初始信息素上下界和信息素初始值,采用最大最小蟻群算法搜索最終測(cè)試路徑,蟻群算法迭代完成后,輸出最終測(cè)試路徑,其中,最大最小蟻群算法的目標(biāo)函數(shù)為:
其中,為最終測(cè)試路徑中兩個(gè)相鄰路由節(jié)點(diǎn)v″i和v″i+1之間的距離權(quán)值,路由節(jié)點(diǎn)v″i和v″i+1即為數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)中的兩個(gè)頂點(diǎn)。
所述步驟S1中的改進(jìn)Floyd方法為:
在計(jì)算無(wú)向圖G′(V′,E′)中任意兩頂點(diǎn)v′i和v′j之間最短路徑時(shí),先對(duì)待插入的節(jié)點(diǎn)v′r進(jìn)行路長(zhǎng)比較,如果dir≥dij或drj≥dij,dij代表兩個(gè)頂點(diǎn)之間的距離,則說(shuō)明插入節(jié)點(diǎn)v′r后,v′i經(jīng)過(guò)v′r到達(dá)v′j的路徑不會(huì)比原來(lái)兩頂點(diǎn)之間的路徑短,于是不再計(jì)算dir+drj,直接進(jìn)行下一節(jié)點(diǎn)的搜索,且無(wú)向圖G′(V′,E′)中頂點(diǎn)v′i到v′j的距離與v′j到v′i的距離對(duì)稱相等,若已計(jì)算v′i到v′j的距離,則不需再計(jì)算v′j到v′i的距離,這樣做減少了計(jì)算量。
具體的,改進(jìn)后的Floyd方法的流程如下:
S2-1)從無(wú)向圖模型G′(V′,E′)中編號(hào)最小的頂點(diǎn)開(kāi)始,搜索任意一對(duì)頂點(diǎn)v′i與v′j之間,是否存在另一個(gè)頂點(diǎn)v′r,使v′i經(jīng)過(guò)v′r到v′j的距離比當(dāng)前v′i到v′j的距離短,若是則更新v′i與v′j之間的距離,否則繼續(xù)搜索下一節(jié)點(diǎn);比較距離時(shí),可以對(duì)待插入的節(jié)點(diǎn)v′r先進(jìn)行路長(zhǎng)比較,如果dir≥dij或drj≥dij(dij代表兩個(gè)頂點(diǎn)之間的距離),則說(shuō)明插入節(jié)點(diǎn)v′r后,v′i經(jīng)過(guò)v′r到達(dá)v′j的路徑不會(huì)比原來(lái)兩點(diǎn)之間的路徑短,則直接進(jìn)行下一節(jié)點(diǎn)的搜索;
S2-2)更新任意兩頂點(diǎn)之間的距離權(quán)值之后,得到一個(gè)完全連通圖G″(V″,E″)的鄰接矩陣C。在算法迭代過(guò)程中,由于v′i到v′j的距離與v′j到v′i的距離相等,若已更新v′i到v′j的距離,則不需再計(jì)算v′j到v′i的距離,可以提高Floyd方法的效率。
所述步驟S2中遺傳算法的染色體編碼方案采用十進(jìn)制整數(shù)編碼,以測(cè)試路徑的一個(gè)路由節(jié)點(diǎn)次序作為一條染色體,且染色體編碼的起始位代表數(shù)字微流控芯片上液滴源所在的位置,編碼末位代表數(shù)字微流控芯片上廢液池所在的位置,染色體十進(jìn)制整數(shù)編碼的方案為:
將測(cè)試模型G″(V″,E″)中頂點(diǎn)的十進(jìn)制編號(hào)作為染色體的基因的編碼,如附圖2中所示的G″(V″,E″)中頂點(diǎn)編號(hào)為從“1”到“12”,則可以編碼染色體為(1-2-3-4-5-6-7-8-9-10-11-12)或任意其他情況的頂點(diǎn)編號(hào)的排列組合。
所述步驟S2中的遺傳算法的選擇算子采用適應(yīng)度比例方法,交叉算子采用順序交叉法,變異算子采用逆轉(zhuǎn)變異方法,且染色體起始位和末位不參與交叉操作和變異操作,交叉操作和變異操作流程如下:
S2-3)利用遺傳算法求解測(cè)試路徑時(shí),每一次迭代需要采用適應(yīng)度比例方法從種群N中選擇M/2(M≥N)對(duì)染色體進(jìn)行交叉操作。具體的,個(gè)體k被選擇的概率為:
fk=1/Lk
其中,fk為適應(yīng)度函數(shù),為染色體Xk代表的測(cè)試路徑中兩個(gè)相鄰節(jié)點(diǎn)xi和xi+1之間的距離,N為種群的染色體數(shù)量;本實(shí)施例中,M的一種優(yōu)選值為80,N設(shè)為50。
S2-4)染色體選擇完成后,采用順序交叉法對(duì)選擇的M/2對(duì)染色體進(jìn)行交叉操作,且測(cè)試路徑的起點(diǎn)和終點(diǎn)代表液滴源和廢液池,不參與交叉操作。本實(shí)施例中,附圖1所示數(shù)字微流控芯片陣列單元之間連接邊的數(shù)量為420,數(shù)量較大,不便于直觀說(shuō)明交叉的具體操作。不失一般性,以10個(gè)基因的染色體為例,來(lái)直觀地說(shuō)明順序交叉法的交叉過(guò)程如下:
①隨機(jī)在父串上選擇一個(gè)交叉區(qū)域,如兩父串和交叉區(qū)域?yàn)椋?/p>
X1=x0x1x2|x3x4x5x6|x7x8x9
X2=x0x8x4|x7x6x2x1|x3x5x9
②將X2的交叉區(qū)加到X1中起點(diǎn)x0后面,同樣將X1的交叉區(qū)加到X2中起點(diǎn)x0后面,可得:
X′1=x0|x7x6x2x1|x1x2x3x4x5x6x7x8x9
X′2=x0|x3x4x5x6|x8x4x7x6x2x1x3x5x9
③依次刪除X′1和X′2中與交叉區(qū)相同的基因,得到最終的子串:
X″1=x0x7x6x2x1x3x4x5x8x9
X″2=x0x3x4x5x6x8x7x2x1x9
S2-5)交叉操作完成后,采用逆轉(zhuǎn)變異方法對(duì)染色體進(jìn)行變異操作;同樣,以10個(gè)基因的染色體為例進(jìn)行說(shuō)明:如染色體(x0x1x2x3x4x5x6x7x8x9)在區(qū)間x2x3和區(qū)間x6x7處發(fā)生斷裂,斷裂片段又以反向順序插入,于是逆轉(zhuǎn)后的染色體變?yōu)?x0x1x2x6x5x4x3x7x8x9)。
S2-6)變異操作完成后,將種群中的個(gè)體按適應(yīng)度從大到小排序,從大到小選擇N個(gè)適應(yīng)度高的個(gè)體,作為下一次迭代的種群;迭代次數(shù)加1,并判斷是否達(dá)到設(shè)置的迭代次數(shù),若達(dá)到則終止遺傳算法,否則,進(jìn)入下一次遺傳算法的循環(huán),直至迭代完成。
所述步驟S3中的最大最小蟻群算法在搜索最終測(cè)試路徑時(shí),按照偽隨機(jī)比例規(guī)則搜索最終測(cè)試路徑的節(jié)點(diǎn),具體地,螞蟻按照下面的公式搜索最終測(cè)試路徑的節(jié)點(diǎn):
其中,q0∈(0,1)是常數(shù),q∈(0,1)是隨機(jī)數(shù),τij(t)表示t時(shí)刻節(jié)點(diǎn)v″i和v″j間的信息素,ηij(t)表示啟發(fā)信息,ηij(t)=1/dij,dij為數(shù)字微流控芯片災(zāi)難性故障測(cè)試模型G″(V″,E″)中兩節(jié)點(diǎn)v″i和v″j間的距離,α和β分別表示影響信息素和啟發(fā)信息的相對(duì)強(qiáng)弱的兩個(gè)參數(shù)。
螞蟻搜索最終測(cè)試路徑節(jié)點(diǎn)的具體過(guò)程如下:
螞蟻在選擇下一節(jié)點(diǎn)時(shí),先隨機(jī)生成q,若q≤q0,則選擇使[τil(t)]α[ηil(t)]β值最大的節(jié)點(diǎn)j否則按概率公式選擇下一個(gè)路由節(jié)點(diǎn),按照公式計(jì)算每個(gè)節(jié)點(diǎn)被選擇的概率后,按照“輪盤賭”的方式選擇下一測(cè)試節(jié)點(diǎn),即概率值越高被選擇的可能性越大。l∈allowedk表示節(jié)點(diǎn)l在可選的集合中,螞蟻選擇此節(jié)點(diǎn)后就從allowedk集合中刪除此節(jié)點(diǎn),防止測(cè)試液滴的重復(fù)遍歷,提高測(cè)試效率。
本例中,最大最小蟻群算法的相關(guān)參數(shù)的優(yōu)選設(shè)置方案如下:
螞蟻數(shù)量m=30,偽隨機(jī)比例規(guī)則中的q0=0.1,信息素啟發(fā)系數(shù)α=1.2,啟發(fā)因子系數(shù)β=3.0,信息素殘留系數(shù)ρ=0.92,收斂于最優(yōu)解的概率Pbest=0.05,蟻群算法迭代次數(shù)設(shè)為1850。
步驟S3中最大最小蟻群算法的信息素更新策略為:只允許每次迭代后的最短測(cè)試路徑增加信息素,具體地,信息素按照下面的公式更新:
其中,ρ是信息素殘留系數(shù),Δτij(t)表示路徑(i,j)上的信息素增量。f(Sbest)為本次最大最小蟻群算法迭代中最短測(cè)試路徑的長(zhǎng)度Lls或當(dāng)前全局最短測(cè)試路徑的長(zhǎng)度Lgs。
所述f(Sbest)的具體設(shè)置方案為:在蟻群算法搜索測(cè)試路徑時(shí),每次迭代后都采用本次迭代中最短測(cè)試路徑的長(zhǎng)度Lls的值更新信息素,在固定的迭代次數(shù)選擇使用當(dāng)前全局最短測(cè)試路徑的長(zhǎng)度Lgs。本實(shí)施例中每迭代50次就使用一次前全局最短測(cè)試路徑的長(zhǎng)度Lgs的值。
所述步驟S3中最大最小蟻群算法的信息素更新策略為:只允許每次迭代后的最短測(cè)試路徑增加信息素,具體地,信息素按照下面的公式更新:
其中,ρ是信息素殘留系數(shù),Δτij(t)表示路徑(i,j)上的信息素增量。f(Sbest)為本次最大最小蟻群算法迭代中最短測(cè)試路徑的長(zhǎng)度Lls或當(dāng)前全局最短測(cè)試路徑的長(zhǎng)度Lgs。
所述步驟S3中的最大最小蟻群算法的信息素上下界采用動(dòng)態(tài)更新策略,具體地,信息素上下界更新公式如下:
其中,τmax(t)、τmin(t)為t時(shí)刻信息素的上下界,Lls為本次最大最小蟻群算法迭代后最短測(cè)試路徑的長(zhǎng)度。
所述步驟S3中采用最大最小蟻群算法搜索最終測(cè)試路徑時(shí),為了防止液滴之間的意外融合,測(cè)試液滴需要滿足靜態(tài)約束條件和動(dòng)態(tài)約束條件,液滴之間的靜態(tài)約束條件和動(dòng)態(tài)約束條件說(shuō)明如下:如圖5所示,黑色實(shí)心圓表示液滴,“×”表示此單元此時(shí)刻t不能被測(cè)試液滴訪問(wèn),靜態(tài)約束條件是指液滴周圍直線相鄰和對(duì)角相鄰的單元上,同一時(shí)刻t不能同時(shí)存在其他液滴,即為了防止液滴間的意外融合,液滴之間需要保持一定的距離,用公式表示如下:
或
動(dòng)態(tài)約束條件是指液滴下一時(shí)刻移動(dòng)的位置不能與其他液滴相鄰,用公式可表示為:
根據(jù)實(shí)驗(yàn)液滴的移動(dòng)路徑和約束條件可以確定任意時(shí)刻t不能被測(cè)試液滴訪問(wèn)的單元的集合,記為禁忌表tab(t)。在利用最大最小蟻群算法搜索測(cè)試路徑中的節(jié)點(diǎn)時(shí),若某時(shí)刻t選擇的路由節(jié)點(diǎn)j處于禁忌表tab(t)中,則表示此節(jié)點(diǎn)當(dāng)前不可訪問(wèn),查詢此節(jié)點(diǎn)被禁止的時(shí)間,設(shè)為等待時(shí)間twait;按照偽隨機(jī)比例規(guī)則重新搜索新的節(jié)點(diǎn)x,將當(dāng)前節(jié)點(diǎn)i到原選擇節(jié)點(diǎn)j的距離權(quán)值加上等待時(shí)間twait的權(quán)值與當(dāng)前節(jié)點(diǎn)i到新節(jié)點(diǎn)x的距離權(quán)值作比較,若到達(dá)新節(jié)點(diǎn)x距離權(quán)值較小,則測(cè)試液滴向新節(jié)點(diǎn)x移動(dòng),否則測(cè)試液滴在當(dāng)前節(jié)點(diǎn)i等待原選節(jié)點(diǎn)j被激活,選擇節(jié)點(diǎn)j。
步驟S3中采用最大最小蟻群算法搜索最終測(cè)試路徑時(shí),當(dāng)蟻群算法迭代次數(shù)到達(dá)設(shè)定值后,輸出求得最終測(cè)試路徑。本實(shí)施例中最大最小蟻群算法迭代1850次后,輸出求得的最終測(cè)試路徑,并根據(jù)求得的最終測(cè)試路徑計(jì)算測(cè)試花費(fèi)的單位時(shí)間,測(cè)試路徑越長(zhǎng)則測(cè)試花費(fèi)的單位時(shí)間越多,測(cè)試路徑越短則測(cè)試花費(fèi)的單位時(shí)間越少。測(cè)試花費(fèi)的單位時(shí)間越少,說(shuō)明測(cè)試效率越高。其中,單位時(shí)間為測(cè)試液滴從一個(gè)單元移動(dòng)到相鄰單元花費(fèi)的時(shí)間,本實(shí)施例中,如圖1所示的多元生化實(shí)驗(yàn)的數(shù)字微流控芯片的單位時(shí)間具體為62.5ms。
按照上述步驟對(duì)圖1所示的數(shù)字微流控芯片進(jìn)行災(zāi)難性故障測(cè)試仿真,測(cè)試算法在Visual studio 2012環(huán)境下采用C++編程實(shí)現(xiàn),得到的測(cè)試方法收斂示意圖如圖4所示,圖4的橫坐標(biāo)為迭代次數(shù),縱坐標(biāo)為單位時(shí)間;圖5中縱坐標(biāo)為單位時(shí)間,橫坐標(biāo)為不同的測(cè)試方法;由圖5可知,本實(shí)施例的測(cè)試算法的測(cè)試花費(fèi)時(shí)間明顯優(yōu)于歐拉回路法,比蟻群算法的測(cè)試花費(fèi)時(shí)間僅多1個(gè)單位時(shí)間。但是,單一的蟻群算法一般在迭代1350次左右收斂,由圖4可知,本實(shí)施例的方法在950次左右算法收斂,相比單一的蟻群算法收斂性提了29%,方法的收斂性更好,在保證了測(cè)試花費(fèi)時(shí)間較低的情況下,能夠快速地求得較優(yōu)的測(cè)試路徑。
由于漢密爾頓回路測(cè)試法、分區(qū)子陣列合并調(diào)度測(cè)試法無(wú)法檢測(cè)出相鄰電極短路故障,并行測(cè)試和自建自測(cè)試法只能用于規(guī)則陣列的芯片測(cè)試,這些測(cè)試方法缺少全面性、兼容性,本實(shí)施例的測(cè)試方法不與這些測(cè)試方法作比較。