第3章 基於劃分-測試-擴充的實值檢測器產生演算法
本章旨在改善PT-RNSA演算法的效能,在劃分-測試的基礎上引入了擴充策略,提出了基於劃分-測試-擴充的實值檢測器產生演算法(PTS-RNSA:Real-Valued Detector Generation Algorithm based on the Partition-Test-Spread Proess),並通過實驗將其與PT-RNSA演算法以及V-detector演算法做了對比,取得了不錯的效果。
3.1 PT-RNSA演算法的缺陷及其改進方法
PT-RNSA演算法具有成熟檢測器產生代價低,成熟檢測器無交叉,非我空間被均勻覆蓋等優點。但是,該演算法也有其明顯的不足之處,主要在於,要達到一定的檢測率,其所需要產生的成熟檢測器數目往往很多。
本節提出了PT-RNSA演算法的一種改進思路,在保持PT-RNSA演算法原有優勢的同時,通過引入擴充策略,提出了基於劃分-測試-擴充的實值檢測器產生演算法(PTS-RNSA),在不降低檢測器集覆蓋率的前提下,減少了所需的成熟檢測器數目,提高了演算法的效能。
圖3.1給出了PTS-RNSA的核心思想。
1. 初始化:將整個表示空間看作一超長方體,並將其作為候選超長方體(候選檢測器)。 2. 劃分: 將超長方體均勻劃分成一些更小的候選超長方體。 3. 測試: 判斷這些候選超長方體是否與自我集合相交;如果所有的候選超長方體都與自我集合相交,則轉到第2步,對每一個候選超長方體進行再次劃分;否則,轉到第4步。 4. 擴充: 對於不與自我集合相交的候選超長方體,儘可能大的擴充其覆蓋範圍。擴充以 後,各候選超長方體覆蓋範圍被更新。對每一個更新後的候選檢測器,如果其不與自我集合相交,則視之為成熟檢測器,否則,轉到第2步,繼續劃分與自我集合相交的候選檢測器。 |
圖3.1 PTS-RNSA核心思想
根據圖3.1的描述可得知,PTS-RNSA主要分為三個過程:劃分過程、測試過程與擴充過程。區別於PT-RNSA,PTS-RNSA在保留劃分過程與測試過程的基礎上,增加了擴充過程。擴充過程,主要用來增加成熟檢測器的覆蓋範圍,減少成熟檢測器數目。需注意的是,擴充過程完成後,一些相鄰的候選檢測器有可能被合并成。而且,擴充過程完成後,與自我集合相交的候選檢測器的覆蓋範圍將可能有所減少。
圖3.2給出了PTS-RNSA在二維空間中的劃分-測試-擴充過程的樣本,直觀顯示了PTS-RNSA的劃分、測試以及擴充思想。其中,黑色地區為自我,空白地區為非我,空白長方形為候選檢測器,淺顏色的長方形為成熟檢測器。
圖3.2(a)是初始的候選檢測器,與自我集合相交。因此,根據PTS-RNSA演算法,它被均勻劃分為四個小長方形,3.2(b)。然而,這四個小長方形均與自我集合相交,所以每個小長方形將被進一步劃分。圖3.2(c)-圖3.2(n)依次描述了這一划分-測試-擴充過程。
圖3.2(c)-圖3.2(e)表示的是左上方的小長方形劃分-測試-擴充過程。圖3.2(c)是劃分過程,圖3.2(d)是測試過程,圖3.3(e)是擴充過程。
在圖3.2(c)中,左上方的長方形被均勻的劃分成四個小的長方形,在圖3.2(d)中,這四個小的長方形被分別測試是否與自我集合相交,在圖3.2(e)中,將不與自我集合相交的長方形的覆蓋範圍儘可能的擴充,最後產生2個成熟檢測器。而與自我集合相交的長方形則在其覆蓋範圍被縮小後留待進一步劃分。
圖3.2(f)-圖3.2(h),圖3.2(i)-圖3.2(k),圖3.2(l)-圖3.2(n)描述了類似的劃分-測試-擴充過程。
3.2 二維空間中擴充策略
一個候選檢測器被均勻的劃分成四個子候選檢測器後,按照子候選檢測器與自我集合相交的個數,可以分為以下四類情況:
A、劃分成的四個子候選檢測器中只有一個與自我集相交。
B、劃分成的四個子候選檢測器中有2個與自我集相交。
C、劃分成的四個子候選檢測器中有3個與自我集相交。
D、劃分成的四個子候選檢測器中有4個與自我集相交。
在D類中,候選檢測器所劃分成的四個子候選檢測器均與自我集相交,根據PTS-RNSA, 將每一個子候選檢測器再次劃分。在另外三類中,每一類均包含幾種小情況,對每一種情況均採用擴充策略分別對其做出適當的擴充。
由候選檢測器劃分而成的四個子候選檢測器,按順時針方向,將四個子候選檢測器分別標記為W1、W2、W3、W4。
本節其餘部分將專門介紹對於每一類所採用的擴充方案。
。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。
由於圖片太多了 在此省略具體分析部分 :》
3.3 PTS-RNSA在二維空間的實現
圖3.10 描述了PTS-RNSA 演算法在二維空間中實現的虛擬碼。PTS-RNSA與PT-RNSA的主要區別在於:PT-RNSA 對由候選檢測器劃分而來的子候選檢測器,首先進行一一測試,如果不與自我集相交,則立即看作為成熟檢測器,如果相交,則繼續劃分;而PTS-RNSA 在對這些子候選檢測器進行測試後,並不立即把它作為成熟檢測器或將其劃分,而是根據這些候選檢測器與自我集的相交情況,採取相應的擴充策略,擴充以後再將與自我集不相交的子候選檢測器者作為成熟檢測器,相交者則繼續進行劃分-測試-擴充過程。
d: 表示一候選檢測器,d =<c, r> c: 檢測器的中心點,c = <cx, cy> r: 檢測器的中心點到各維邊界上的距離,r=<rx, ry> r0: 預定義的最小的檢測器中心點到各維邊界上的距離 D: 成熟檢測器集合 Q: 隊列資料結構 Si(1≤i≤4):表示第i個子候選檢測器是否與自我集相交,FALSE表示不相交,TRUE表示相交。 Num:表示有幾個子候選檢測器與自我集相交。 vi(1≤i≤4):表示與第i個子候選檢測器相交的自我個體序列。 |
1. PTS-RNSA( ) 2. { 3. 初始化:d =<c, r> 設定候選檢測器的初值,使其能夠覆蓋整個問題表示空間; 成熟檢測器集合D 置為空白; 隊列 Q 置為空白隊列; 4. IF (候選檢測器d 不與自我集合相交) THEN 5. { 6. D←D∪{d}; 7. RETURN; 8. } 9. EnQueue( d );// 將候選檢測器 d 置入隊列Q中 10. WHILE (Q! = NULL ) 11. { 12. d = DeQueue( Q );// 在隊列Q中取出第一個元素並將之在隊列中移除 13. PTS-Detector( d ); 14. } 15. } |
16. PTS-Detector( d ){ 17. IF ( r < r0 ) RETURN; 18. 將候選檢測器 d 均勻的劃分成四個子候選檢測器 di (1≤i≤4); 19. S1=S2=S3=S4=FALSE; 20. num=0; 21. FOR each di (1≤i≤4) 22. IF (di 與自我集相交) { 23. Si=TRUE; 24. num++; 25. 在vi中儲存與第i個子候選檢測器相交的自我個體序列; 26. } 27. Switch(num){ 28. Case 1: 根據S1,S2,S3,S4值的情況,決定執行A類哪種具體的擴充方案 29. Case 2: 根據S1,S2,S3,S4值的情況,決定執行B類哪種具體的擴充方案 30. Case 3: 根據S1,S2,S3,S4值的情況,決定執行C類哪種具體的擴充方案 31. } 32. FOR each di (1≤i≤4) 33. IF (di!= φ) { 34. IF(di 不與自我集相交) 35. D←D∪{ di }; 36. ELSE 37. IF(di不被任何自我個體完全覆蓋) 38. EnQueue(di ); 39. } 40. } |
圖3.10 二維空間中PTS-RNSA演算法實現虛擬碼
圖3.10 描述了PTS-RNSA在二維空間中實現的虛擬碼。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
實驗資料太多了 在此省略 呵呵 。。