周 強,王鈺萌,王廷凱
(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
信息處理單元是飛控系統(tǒng)的重要組成部分,其主要由計算機板、譯碼板、遙測板以及總線信號板等部分組成。為了滿足質(zhì)量控制標準,所需驗證的測試項目眾多,同時每個測試項也需要經(jīng)過長達數(shù)百次的重復測試。常規(guī)的測試系統(tǒng)通常采用串行測試的方式,整個測試流程需要的時間較長,測試效率較低。因此,并行測試技術(shù)是未來的發(fā)展方向。
對于并行測試技術(shù),業(yè)內(nèi)已有部分研究。20世紀80年代,并行處理技術(shù)在工業(yè)測試領(lǐng)域里開始使用,并逐漸發(fā)展成為一種新興的測試技術(shù)——并行測試[1]。并行測試技術(shù)將測試流程中的任務重新規(guī)劃,使占用資源不沖突的任務同時執(zhí)行,這樣能節(jié)省大量的測試時間[2]。所以,并行測試技術(shù)具有測試速率高、資源利用充分的特點,相較于串行測試,有著巨大優(yōu)勢。目前,美國NI公司在將并行測試技術(shù)應用于自動化測試領(lǐng)域最為成功,其開發(fā)的智能化測試系統(tǒng)軟件平臺,將整個測試流程分解為多個子任務,并利用任務調(diào)度算法優(yōu)化求解最優(yōu)策略[3]。平臺中的用戶界面簡單易使用,用戶僅需在人機交互界面中輸入待測的測試項和所需時間,測試軟件就能快速地生成相應的調(diào)度序列,然后將測試調(diào)度策略反饋給用戶并執(zhí)行。
根據(jù)信息處理單元測試系統(tǒng)實際的測試流程和所需資源的使用情況,將并行測試技術(shù)引入到系統(tǒng)中,重新對相互獨立的測試任務進行并行化分析。提出改進的自適應遺傳算法,即IAGA算法,基于IAGA算法進行并行測試任務調(diào)度算法的設(shè)計,并搭建了算法的仿真實驗環(huán)境,聯(lián)合本測試系統(tǒng)的任務調(diào)度模型得出實驗結(jié)果并進行詳細分析,接著與其他算法進行對比,驗證IAGA算法的可行性和優(yōu)越性,并以算法為核心實現(xiàn)了系統(tǒng)中的并行測試模塊。
信息處理單元測試系統(tǒng)是一套以PXIe總線工控計算機為核心的自動測試系統(tǒng),其具體實現(xiàn)的測試功能包括:①與載機通信測試(1553B、ARINC429)、②一次性指令測試、③遙測功能測試、④RS422總線通道測試、⑤加速度/角速度脈沖測試[4]。
按照“自頂向下”模塊化的設(shè)計原則信息處理單元測試系統(tǒng)由測控系統(tǒng)、供電單元、接口單元組成,如圖1所示。
信息處理單元測試系統(tǒng)軟件基于Windows 7操作系統(tǒng),在VS2010平臺下采用C++語言和MFC框架進行開發(fā)。綜合測試軟件主要由單項任務測試、板卡自檢、并行測試模塊、自動測試四個部分組成,綜合測試軟件界面如圖2所示。
圖2 綜合軟件界面圖
綜合測試軟件采用單文檔視圖結(jié)構(gòu),利用界面分割技術(shù),實現(xiàn)模塊化測試界面的設(shè)計,系統(tǒng)的所有測試功能均嵌入在測試界面中,由用戶進行選擇和配置。板卡影響著測控系統(tǒng)的質(zhì)量與性能,在用戶使用時進行板卡測試十分必要。并且,在自動測試之前,應先設(shè)置并行測試模塊,不同的狀態(tài)會有不同的配置選,根據(jù)測試的具體情況來輸入相應單項測試任務的時間,從而生成并行執(zhí)行任務序列。
并行測試模塊是信息處理單元測試系統(tǒng)中的關(guān)鍵部分,對系統(tǒng)的測試效率有著重要的影響[5-6]。
圖3為并行測試模塊實現(xiàn)的流程,本文首先對整個系統(tǒng)的測試流程進行分析:飛控產(chǎn)品由飛控計算機部件、譯碼控制部件、慣測接口部件、總線接口部件四個部分組成,并深入研究這四個部分所涉及的測試任務之間的關(guān)系。接下來根據(jù)任務所占用的資源情況和任務之間的時序要求建立并行測試的任務調(diào)度模型,以得到任務資源矩陣、任務之間的時序約束矩陣等。然后利用改進的自適應遺傳算法求解任務調(diào)度模型,得到所有可能的并行序列,并通過全局搜索找出最優(yōu)并行序列,最后將算法嵌入到測試軟件中以提供給用戶使用。
圖3 并行測試實現(xiàn)流程圖
并行測試任務調(diào)度問題可以描述為:
測試流程中的任務的集合為S={s1,s2,s3,…,sm},測試所需的儀器資源集合為W={w1,w2,w3,…,wn},任務相應的占用時長為T={t1,t2,t3,…,tm};
令任務資源矩陣為SW,假如任務Sj需要其中的資源Wi,則SW(j,i)=1;否則SW(j,i)=0;
令資源相關(guān)矩陣為TW,WA是任務SA的資源集合,WB是任務SB的資源集合,若WA∩WB=≠?,則稱資源集合WA和資源集合WB相關(guān),TW(A,B)=1,相當于任務SA與任務SB所需的資源相沖突,不能同時測試;否則,稱之為資源不相關(guān),TW(A,B)=0;
令時序約束矩陣為TS,假如任務SA的優(yōu)先級(執(zhí)行順序)高于任務SB,SA>SB,則TS(A,B)=1;否則,TS(A,B)=0;
總而言之,并行測試任務調(diào)度的數(shù)學模型可以概括為:求解任務調(diào)度序列矩陣TP,找出總測試時長最短的TP,以獲得最優(yōu)的測試效率[7-8]。相當?shù)暮瘮?shù)可以表示為TF=min{sum_time(TP)},其中sum_time(TP)表示任務調(diào)度序列矩陣TP執(zhí)行完成時所需的總時長,此函數(shù)的約束條件為:
1)若sj>si,則N(TP,sj)>N(TP,si);
2)若N(TP,sj)=N(TP,si),則Wj∩Wi=?。
約束條件表達式中:N(TP,sk)表示任務sk在任務調(diào)度序列矩陣TP中的步驟號,1)句表示任務優(yōu)先級高的測試任務先測試,2)句表示若兩個測試任務的步驟號相同,則這兩個測試任務沒有資源沖突。
信息處理單元測試系統(tǒng)中的并行測試模塊主要由測試任務集、儀器資源以及軟件系統(tǒng)三個方面組成。并行測試模塊的實現(xiàn),需要將復雜的測試流程分解為滿足時序約束的測試任務集,將被測產(chǎn)品所需的測試通過功能拆分的方式分解為若干項測試任務。信息處理單元測試系統(tǒng)共有15項測試任務,依次編號為s1~s15。根據(jù)測試系統(tǒng)的實際測試情況,記錄飛控組件中每個測試任務所占用的板卡資源,接著分別記錄每個測試任務在常溫條件下單獨測試時所需要的平均時間。
表1 常溫條件下測試任務所占用的板卡資源與測試時間表
根據(jù)并行測試的任務調(diào)度模型可知,資源任務集矩陣為:
根據(jù)測試流程中每個測試任務的具體情況可得,每個部分的測試沒有必要的時序順序,但部分內(nèi)部的測試任務之間有一些時序要求,具體任務之間的時序約束如下:
1)在測試開始前,應首先進行自檢測試,即s1優(yōu)先于s2、s3、s4、s5、s6、s7、s8、s9、s10、s11、s12、s13、s14、s15;
2)在對譯碼控制部件的測試中,s3優(yōu)先于s4;
3)在對慣測接口部件的測試中,s8優(yōu)先于s9、s10;
4)在對總線接口部件的測試中,s11優(yōu)先于s12、s13、s14、s15。
那么根據(jù)任務調(diào)度模型可得時序約束矩陣為:
TS15×15=
資源任務矩陣表示每項測試任務所占用的資源數(shù)量,時序約束矩陣表示所有測試任務之間的執(zhí)行先后順序。因此,兩個矩陣中包含某些任務可同時執(zhí)行的所有信息,通過這些信息可以得出可行的并行序列以實現(xiàn)并行測試。首先,通過資源任務矩陣,提取所有可并行執(zhí)行的任務集,然后,通過時序約束矩陣將不符合時序約束的任務集進行矯正,具體解決策略采用智能優(yōu)化算法。
基本遺傳算法收斂速度慢、局部搜索能力差以及容易陷入局部最優(yōu)解,顯然,在解決并行測試任務調(diào)度的問題時,需要對其進行改進[9-10]。因此本文提出一種改進的自適應遺傳算法,即IAGA算法,包含排序分組以及改進的自適應變化的思想,以提高算法的收斂速度,增強算法跳出局部最優(yōu)的能力[11]。
3.1.1 選擇算子的改進
本文采用排序分組(sort-grouped model)選擇方式[12],基本思想是:根據(jù)種群中個體適應度值從大到小進行排序,然后將已排序的個體分為三組,通過比例再進行選擇,具體實現(xiàn)過程如下:
1)根據(jù)個體適應度的大小,對個體進行降序排列。
2)將排序過的種群,按照比例分為:高適應度個體集合(占比1/8)、中適應度個體集合(占比6/8),低適應度個體集合(占比1/8)。
3)將低適應度個體集合直接淘汰,不參與選擇,高適應度個體集合按照之前的比例復制兩份,中適應度個體集不變。
4)最后將新產(chǎn)生的種群直接全部選擇,進入到下一代的遺傳進化過程中。
采用這種排序分組的方式,可以將適應度過低的個體直接淘汰,不參與以后的進化過程,從而提升算法的收斂速度,并且通過選擇多數(shù)適應度中等的個體繼續(xù)進化,以保留種群的多樣性,從而增加找到全局最優(yōu)解的可能性。
3.1.2 變異算子的改進
對于傳統(tǒng)遺傳算法來說,變異的概率在進化的過程中是保持不變的,是一個小于1的常數(shù)值。這種通過變異產(chǎn)生的子代隨機性強,會較早的出現(xiàn)“早熟”現(xiàn)象,陷入局部最優(yōu)的“陷阱”,使得算法失去效力;在進化末期,高度“成熟”的個體依然很可能變異,這會降低算法的收斂的速度,使得進化變得漫無目的[13]。
本文采用一種在進化過程中變異概率跟隨個體動態(tài)變化的方法,其基本思想是:當個體的適應度大于種群平均適應度時,應盡可能保存當前個體,相應地變異概率應變地很??;反之,個體的適應度越小,為了產(chǎn)生更好的子代,變異概率應變地越大[14-15]。
3.2.1 基本數(shù)學模型設(shè)計
將改進的自適應遺傳算法應用于信息處理單元測試系統(tǒng)的并行測試模塊中,需要設(shè)計一系列可供算法調(diào)用的數(shù)學模型,包括染色體編碼、生成的執(zhí)行序列矩陣與適應度函數(shù),具體設(shè)計如下所示。
1)編碼的定義:
將染色體設(shè)定為并行測試任務調(diào)度擴展矩陣,如公式所示,行號表示板卡資源序號,列號表示測試順序,每一行代表著占用相應資源的任務集執(zhí)行順序,每一列代表著可同時執(zhí)行的任務集。
(1)
其中:Chromn×k(ri,j)表示占用ri號板卡資源的任務號srij在第j步執(zhí)行測試。如果任務集S中的某個任務當前被選中,則srij=sj(sj∈S),否則,srij=0。
2)種群的生成:
首先,從任務集S中隨機挑選一個任務,通過任務資源矩陣SW確定該任務所需的資源,再將所需資源對應的任務序號放置在染色體中。然后重復之前的步驟,繼續(xù)選擇未被占用資源的任務,直到該步驟執(zhí)行的任務數(shù)量達到飽和,最后繼續(xù)執(zhí)行下一步驟的任務選擇,直到所有的任務都被選擇,具體流程如圖4所示。
圖4 生成并行序列流程圖
圖5 IAGA算法流程圖
求取并行序列的算法偽代碼如下:
whileS不為空
k←1;
forj←1 ton//循環(huán)找到第k步可并執(zhí)行的序列
ifS不為空//隨機選擇剩余資源不沖突的任務 例如s1,s1占用資源w1,w4
Chrom(1,k)←1;
Chrom(4,k)←1;
delete(s1,S);//從任務集S中刪除任務s1
k←k+1;//當?shù)趉步任務集達到飽和,繼續(xù)下一步
3)適應度函數(shù)設(shè)計:
在遺傳算法中,適應度函數(shù)的設(shè)計十分關(guān)鍵,它直接影響著算法的收斂速度以及算法找到全局最優(yōu)解的能力。在并行測試領(lǐng)域,如何提升資源利用率和減少測試時間是算法研究的重點問題。因此,并行測試任務調(diào)度問題實質(zhì)上是測試任務與測試資源之間的分配問題,本質(zhì)上是一個NP-hard問題,是多目標組合優(yōu)化問題。顯然,減少總測試時間是第一優(yōu)化目標,在測試時間最優(yōu)時,提高資源利用率則是第二優(yōu)化目標。除此之外,由于產(chǎn)生初始種群時,沒有考慮到任務之間的時序性,以至于隨機產(chǎn)生的個體有可能是無效解,所以在優(yōu)化前兩個因素之前,保證解的有效性是第一要務。因此,在設(shè)計適應度函數(shù)時應考慮時序、時間、資源這三方面因素,具體內(nèi)容如下。
1)錯誤因子:
錯誤因子(Error Factor)體現(xiàn)著并行序列中時序的錯亂程度,其表達如下:
(2)
2)速度比:
速度比(speed ratio)定義為串行測試的總時間與并行序列所需的總測試時間之比,速度比越大,所需測試時間越少。其數(shù)學表達式如下:
(3)
3)并行率:
(4)
式中,m表示總?cè)蝿諗?shù),step表示總步數(shù),其含義是在并行測試的過程中每步執(zhí)行的任務總數(shù)的權(quán)重之和與所有任務的權(quán)重之比。
綜上所述,結(jié)合以上三個因素的多目標適應度函數(shù)應設(shè)計為:
(5)
式中,σ表示時序權(quán)重系數(shù),λ表示時間權(quán)重系數(shù),這兩個參數(shù)的大小取決于三個因子對并行測試的重要程度,通過實驗分析可知,在進化的前期,E>10,S<2,故當σ取0.4,取0.5時,算法的效果比較好。
3.2.2 算法具體流程
基于改進的改進遺傳算法求解并行測試任務調(diào)度的算法流程如下:
1)設(shè)定該算法的初始參數(shù),包括算法最大的迭代次數(shù)、種群數(shù)量、交叉概率、變異的最大概率以及最小概率。
2)首先根據(jù)種群生成算法初始化種群,初始代數(shù)設(shè)定為1。
3)根據(jù)多目標適應度函數(shù)計算種群中每個個體的適應度大小。
4)基于排序分組的思想,從種群中選出目標個體作為下一代進化過程中的父代。
5)按照設(shè)定的交叉概率對被選擇的父代個體進行交叉操作。
6)按照設(shè)定的變異的最大和最小概率計算出每個子代的變異概率,進行變異操作,并基于禁忌搜索的思想,選擇產(chǎn)生的個體。
7)如果迭代次數(shù)大于設(shè)定值,終止操作;否則,迭代次數(shù)自增1,跳轉(zhuǎn)到步驟3),繼續(xù)進行遺傳操作。
8)算法結(jié)束,選擇種群中的最優(yōu)個體,也就是最優(yōu)的任務調(diào)度序列。
選取本系統(tǒng)中的任務調(diào)度模型進行算法仿真驗證。
4.1.1 仿真環(huán)境配置
仿真實驗環(huán)境如表2所示。
表2 算法仿真環(huán)境配置
4.1.2 參數(shù)設(shè)置
經(jīng)過大量的實驗分析,算法的各個參數(shù)以表3的值時,算法的效果比較好,找到最優(yōu)解的能力也比較強。
表3 算法初始參數(shù)設(shè)置
4.2.1 適應度函數(shù)收斂曲線
圖6代表函數(shù)的總體適應度與時間變化在迭代的過程中的變化情況。
橫軸表示迭代次數(shù),左側(cè)縱軸表示種群總體的平均適應度值,以常數(shù)為單位;右側(cè)縱軸表示在每一代種群中所有個體對應的任務調(diào)度矩陣所需的平均測試時間,以秒為單位。圖中共有兩條曲線,實線代表種群在迭代過程中適應度的變化,虛線代表種群在迭代過程中測試時間的變化。由圖可知,適應度越高,時間越短,適應度與時間幾乎同時變化,兩者均在第15代開始不再變化,此時適應度的值為0.838,測試時間為79 s。由公式(4)可知,時間因素在適應度函數(shù)的權(quán)重占比非常高,除錯誤因子外,是第二重要的影響因素,圖中的曲線變化正印證了這一點。
圖7為函數(shù)的總體適應度與并行率變化在迭代的過程中的變化情況。
圖7 適應度與并行率變化曲線
橫軸表示迭代次數(shù),左側(cè)縱軸表示種群總體的平均適應度值,以常數(shù)為單位;右側(cè)縱軸表示在每一代種群中所有個體對應的任務調(diào)度矩陣的并行率,以秒為單位。圖中共有兩條曲線,實線代表種群在迭代過程中適應度的變化,虛線代表種群在迭代過程中并行率的變化。由圖可知,適應度的變化與并行率的變化并不同步,并行率高的時候,適應度并不一定高,當兩者不再變化時,適應度為0.838,而并行率為0.088 8,并不是最高,可見兩者的變化相關(guān)性較低。由公式(5)可知,并行率在適應度函數(shù)的權(quán)重占比是最小的,在同時滿足錯誤因子和速度比的優(yōu)化下,并行率才可能會變高。一定的并行率,即使不是最高,也依然符合優(yōu)化思路,圖中曲線正證明了這一點。
4.2.2 全局最優(yōu)解的驗證
為了驗證最優(yōu)解是否是全局最優(yōu),采用TaskScheduler-T 算法[16]。TaskScheduler-T 算法的基本思想是:隨機生成可行的并行測試任務調(diào)度,然后枚舉所有解得到最優(yōu)解,它每次都能找到最優(yōu)解,但相當費時[17]。
圖8為在樣本量為3 000的情況下采用TaskScheduler-T 算法所生成的調(diào)度序列對應時間曲線。
圖8 3 000次隨機生成的樣本的測試時間曲線
所有樣本中的測試時間集中在85~115秒之間,最大值為118秒,最小值為79秒??梢?,在足夠多的調(diào)度序列中,也未能找到比本論文中采用改進的自適應遺傳算法所得到的更好的解。對于TaskScheduler-T 算法來說,只要樣本量足夠大,隨機搜索的空間也就越大,也就能找出所有可行的解,故本算法所求取的解為全局最優(yōu)解。
4.2.3 實驗結(jié)果分析
(6)
其中:ts表示順序測試的總測試時間,tp表示并行測試的總測試時間。相應的測試任務在測試資源上的分配的甘特圖如圖9所示。
圖9 測試任務執(zhí)行順序圖
圖的橫軸表示測試時間,以秒為單位;縱軸表示板卡資源序號,矩形中心表示具體的測試任務,矩形表示相應的執(zhí)行的過程。它直觀地展示了所有測試任務隨時間的執(zhí)行順序,反映了在整個測試過程中測試任務與板卡資源的占用情況。
表4為順序測試與并行測試在資源利用率上的比較圖,其中計算資源利用率的公式為:
表4 順序測試與并行測試資源利用率的比較
(7)
其中:twi為資源wi在測順序測試或并行測試時工作的總時間,t表示順序測試或并行測試的總測試時間。
由表4可以看出并行測試的資源利用率均比順序測試的資源利用率高,平均利用率提高了24.27%。IAGA算法可以顯著提高資源的利用率,從而節(jié)約了測試成本。
4.2.4 與其他算法對比
4.2.4.1 與基本遺傳算法對比
在實驗條件相同的情況下,設(shè)置基本遺傳算法的變異概率為0.6,并且其他參數(shù)與IAGA算法相同,分別運用基本遺傳算法與改進的自適應遺傳算法(IAGA)求解任務調(diào)度。
由圖10可以看出,基本遺傳算法在38代左右才找到最優(yōu)解,而IAGA算法在20代就找到了最優(yōu)解??梢?,IAGA算法的收斂速度以及搜索能力均比基本遺傳算法好。
圖10 基本遺傳算法與IAGA算法對比圖
4.2.4.2 與人工蜂群算法等算法對比
人工蜂群算法(artificial bee colony algorithm,簡稱ABC算法)是一種模擬蜂群行動準則的啟發(fā)式搜索算法,具有收斂速度快、搜索效率高的特點。各工種的蜂群在搜索空間中進行局部尋優(yōu)行為,找到問題中的可行解,并比較優(yōu)劣,逐漸找到全局最優(yōu)解[18-19]。由于人工蜂群算法與遺傳算法同屬于啟發(fā)式搜索算法,理論上,人工蜂群算法的局部尋優(yōu)能力和收斂速度要強于遺傳算法,但全局搜索能力弱于遺傳算法,所以采用人工蜂群算法來作比較實驗,驗證IAGA算法的搜索速度以及局部尋優(yōu)能力[20-21]。
設(shè)置人工蜂群算法的采蜜蜂為40,跟隨蜂為40,偵察蜂為24,迭代次數(shù)限定為100次。在實驗條件相同的情況下,人工蜂群算法、基本遺傳算法、TaskScheduler-T算法、IAGA算法均運行30次,實驗結(jié)果如表5所示。
表5 不同算法仿真結(jié)果
由表可得出:TaskScheduler-T算法一般都能找到全局最優(yōu)解,但搜索速度太慢,隨機性太強?;具z傳算法總體效果均不如IAGA算法。在不考慮運行時間的情況下人工蜂群算法與IAGA算法的性能相當。通過比較人工蜂群算法的運行時間較長,因為人工蜂群算法在搜索最優(yōu)解時,速度會逐漸減慢,后期尋優(yōu)能力較弱。
綜合來看,IAGA算法求解的效果最好,即IAGA算法是可行且有效的??梢哉f明,本算法采用排序分組的思想能使種群往更好的方向進化,采用自適應的變異概率和禁忌搜索手段,可以提高算法收斂速度以及增加種群的多樣性,防止算法陷入局部最優(yōu)。
飛控產(chǎn)品要在不同的環(huán)境下多次測試,測試環(huán)境達到十多種,比如高低溫測試、不同方向的軸振動測試等。在每個環(huán)境下的測試中,每個測試任務執(zhí)行完成的時間由于受其影響也有所不同。因此,開發(fā)一款專門的軟件界面提供給用戶在不同環(huán)境下配置并行測試的執(zhí)行流程是必要的。系統(tǒng)中的軟件可以在不同環(huán)境下設(shè)置測試任務的時間常數(shù),通過這些時間常數(shù)自動生成最佳調(diào)度序列,并嵌入自動測試模塊中供用戶使用。
該軟件與信息處理單元測試系統(tǒng)軟件界面保持一致性,依舊基于VS2010中MFC框架開發(fā),而任務調(diào)度算法通過Matlab平臺被編譯為動態(tài)鏈接庫,以提供給測試軟件使用。
圖11 并行測試模塊界面
本文完成了新型信息處理單元測試系統(tǒng)的總體方案設(shè)計工作,采用模塊化設(shè)計思想,將測試系統(tǒng)劃分為測控系統(tǒng)、供電單元與接口單元。實現(xiàn)了對系統(tǒng)有著關(guān)鍵影響的并行測試模塊,引入并行測試技術(shù),從系統(tǒng)的實際測試環(huán)節(jié)入手,通過模型中的任務資源矩陣和任務之間的時序約束矩陣,得到測試系統(tǒng)所有可能的調(diào)度序列。為了解決普通遺傳算法的收斂速度慢,容易陷入局部解的問題,對算法進行了改進,提出IAGA算法。使用IAGA算法進行了最優(yōu)任務調(diào)度策略求取,成功得到了總測試時間最短、資源利用率最高的調(diào)度序列。在常溫測試條件下,與串行測試策略相比,采取并行策略的測試系統(tǒng)的測試效率提高了43.57%。然后與其他算法對比,驗證了IAGA算法的有效性和優(yōu)越性。