多標籤防碰撞算法主要分為三類:①基於Aloha的算法,又稱為隨機性算法;②基於樹的算法,又稱為確定性算法;③混合算法,將基於Aloha的算法和基於樹的算法相結合而產生的一種算法。
基本介紹
- 中文名:防碰撞算法
- 外文名:anti-collision algorithm
現有的多標籤防碰撞算法主要分為三類:①基於Aloha的算法,又稱為隨機性算法;②基於樹的算法,又稱為確定性算法;③混合算法,將基於Aloha的算法和基於樹的算法相結合而產生的一種算法。
基本的Aloha算法
早期的Aloha算法為純Aloha算法,該算法採用“標籤先發言”的方式,即標籤一進入閱讀器的作用區域就自動向閱讀器傳送其自身的信息,對同一個標籤來說,其傳送數據的時間是隨機的。在標籤傳送信息的過程中,如果有其他標籤也在傳送數據,就會發生信號重疊,導致部分碰撞或者完全碰撞。
閱讀器檢測信號並進行判斷,一旦發現碰撞,閱讀器將傳送命令讓標籤停止傳送數據,所有標籤會隨機延遲一段時間再傳送數據,由於延遲的隨機時間不同,再次發生碰撞的機率將明顯降低。如果沒有碰撞,則閱讀器傳送一個應答信號給標籤,標籤從此轉入休眠狀態。這種算法簡單,但吞吐率低,最大吞吐率僅能達到18.4%。
該算法效率低的主要原因是碰撞發生的時間是隨機的,其中包括:當一個標籤在與閱讀器通信的過程中,有可能因其他標籤的突然回響而被破壞,即存在部分碰撞問題。為此,人們提出時隙Aloha算法(SlottedAloha,SA),把時間分成多個離散時隙,標籤只在每個時隙的開始時刻才能傳送數據。算法的基本原理是:閱讀器通過傳送命令通知標籤有多少時隙,標籤隨機選擇傳送信息的時隙。如果某個時隙只有一個標籤回響,則閱讀器可正確地識別標籤;如果某個時隙有多個標籤回響,則會發生碰撞,閱讀器通知標籤,標籤便在下一輪循環中重新隨機選擇傳送的時隙,直到所有的標籤都被識別出來。在SA算法中,標籤或成功識別或完全碰撞,避免了純Aloha算法中出現的部分碰撞問題。SA算法的最大吞吐率可達36.8%。
FSA與DFSA
FSA算法的缺點是幀長固定,這樣當標籤數量較少時,存在時隙浪費,而當標籤數較多時,碰撞解決的效果又不是很好。因此,可以考慮根據標籤數量動態地調整幀長,即動態幀時隙Aloha(DynamicFramedSlottedAloha,DFSA)算法。研究結果表明,最優的幀長應該等於標籤數量,因此只要知道了標籤數量,就可以確定幀長,然而當前幀需識別的標籤數量通常無法預知,只能對其進行估算。因此在DFSA算法中,非常重要的一項工作就是標籤數量的估計,大多數方法都是根據上一幀的幀長、標籤個數、衝突情況來估計當前幀中的標籤數。典型方法包括:
(1)Vogt方法設碰撞時隙數為Ck,碰撞時隙內至少有2個以上的標籤存在,則可以預測發生碰撞的標籤數量至少為2×Ck。
(2)標籤估計方法Ⅰ(TagEstimationMethodⅠ,TEMⅠ)將碰撞率Cratio定義為碰撞時隙數與幀長的比值,L為幀長,n為標籤個數,則它們之間的關係為Cratio=1-(1-1/L)(1+n/(L-1))(1)由於上一幀的幀長L和碰撞率Cratio已知,可以計算出標籤個數n。
(3)TEMⅡ方法設nest為估算的標籤數量,Mcoll為上一幀中的碰撞時隙數,則nest=2.3922×Mcoll。
FSA的各種改進算法
分群時隙Aloha算法根據碰撞時隙在所分配時隙中所占的比例,來確定是否分群。如果碰撞時隙的比例(發生碰撞的時隙數/分配的時隙數)大於分群因子γ,則進行分群。分群後,第一個分群內的標籤回響閱讀器的查詢命令,另一個分群內的標籤處於等待狀態。當第一個分群內的所有標籤識別完畢後,第二個分群內的標籤再進行回響,直至所有標籤識別完畢。
仿真結果表明,分群時隙Aloha算法優於固定時隙Aloha算法,且隨著標籤數量的增加,算法的優越性更明顯。同時,分群因子的選擇是影響算法的關鍵因素,在標籤數量較多時,分群因子宜選擇較小值。
文獻考慮某些套用場合中閱讀器需要對標籤進行重複識別的要求,充分利用上一幀已識別標籤的信息,提出自適應的動態幀時隙Aloha算法,該算法每成功識別一個標籤就給標籤分配一個時隙號,該時隙號規定了標籤被閱讀器識別的順序。如果在下次識別過程中閱讀器要重複識別這些標籤,則可根據已分配的時隙號按順序進行,從而避免標籤間的衝突,減少識別時間。當離去標籤和新到達標籤數量較少時,系統效率較高,但是當有大量的新到達標籤時,僅採用上述方法將導致衝突急劇增加。為減少衝突,閱讀器應估計標籤數,並根據標籤數合理調整幀長。文獻提出了一種最優幀長方案,使系統獲得了較大的吞吐量。
Q值算法及其改進算法
Q值算法
在Q值算法中,閱讀器首先傳送Query命令,該命令中含有一個參數Q(取值範圍0~15),接收到命令的標籤可在[0,2Q-1]範圍內(稱為幀長)隨機選擇時隙,並將選擇的值存入標籤的時隙計數器中,只有計數器為0的標籤才能回響,其餘標籤保持沉默狀態。當標籤接收到閱讀器傳送的QueryRep命令時,將其時隙計數器減1,若減為0,則給閱讀器傳送一個應答信號。標籤被成功識別後,退出這輪盤存。當有兩個以上標籤的計數器都為0時,它們會同時對閱讀器進行應答,造成碰撞。閱讀器檢測到碰撞後,發出指令將產生碰撞的標籤時隙計數器設為最大值(2Q-1),繼續留在這一輪盤存周期中,系統繼續盤存直到所有標籤都被查詢過,然後閱讀器傳送重置命令,使碰撞過的標籤生成新的隨機數。
該算法在參數C的輔助下對Q值進行動態調整,但是C太大會造成Q值變化過於頻繁,導致幀長調整過於頻繁,C太小又不能快速地實現最優幀長的選擇。因此,研究者們對Q值的調整進行了各種最佳化。
文獻提出一種基於最大吞吐量對Q值進行調整的算法,其中定義了以下變數:Nt為已識別的標籤個數;N為識別標籤所需的總時隙數;NC為衝突時隙的個數;nu為上一輪未識別的標籤個數;e為衝突時隙中的平均標籤個數;PC為衝突時隙所占的比例。
這些參數之間的關係為PC=NC/N,e=nu/Nc,吞吐量=Nt/N。由於Aloha類算法的最大吞吐量為0.368(e-1)[5],該算法以此作為調整Q值的依據。當系統吞吐量達到或接近0.368時,閱讀器僅需調用2Q-1次QueryRep命令,而不需要在接下來的盤存周期中調整Q值。當吞吐量小於0.368時,根據未識別的標籤個數nu來調整Q值.
文獻提出一種基於分組的位隙Aloha算法,該算法採用位隙Aloha算法中的128位預定序列,代表128個位隙。若某個標籤選擇了第i個位隙,則將第i位置1,其餘各位都置0。當標籤數量為15時,位隙Aloha算法可獲得最大吞吐率88.38%,但隨著標籤數量的增加,算法性能急劇下降。
因此,基於分組的位隙Aloha算法通過對標籤進行分組來提高算法的性能。該算法在查詢命令中設定了一個位隙計數器的參數Q(Q為整數,且0≤Q≤15),當標籤收到閱讀器傳送的查詢命令後,在[0,2Q-1]範圍內生成一個隨機數,即代表選擇了相應的位隙,只有選擇了0的標籤才會立即回響。同時,該算法根據衝突位隙數動態地對Q值進行調整:當衝突位隙數小於11時,Q減1且最小為0;當衝突位隙數在11~20之間時,Q保持不變;當衝突位隙數大於20時,Q加1且最大不超過15。