• 沒有找到結果。

模擬部分

在文檔中 LoRaWAN A類效能分析 (頁 71-76)

第四章 數值結果與討論

4.2 系統大小機率分布

4.3.2. 模擬部分

這部分的模擬,仍與 4.1.2 節相同。也就是說,圖 4-2 所計算之 wt 陣 列,即為隊伍等待時間。由於隊伍等待時間為連續隨機變數,wt 內之數值 並非離散的。因此,在統計過程中,我們須先將 wt 內之數值進行量化,以 方便製作成累積機率函數。

4.3.3. 結果與討論

圖 4-8 為三種不同成功機率之等待時間機率分布。可看出當成功機率p越 小,等待的時間就越長。除此之外,跟前面的所有結果一樣,圖 4-8 的分 析與模擬結果十分一致,證實我們的分析相當準確。

62

4.4 碰撞機率

4.4.1. 分析部分

這邊要說明關於碰撞機率之計算,我們針對3.4 節之(3.50)-(3.52),採用 疊代的方式,以計算封包成功機率p。舉例來說,一開始讓p = 1,代入(3.50) 中,經過計算後,在(3.51)中可獲得新的 p。重複上述步驟,直到代入前與 計算後之p 相同或很接近為止。一旦獲得 p 後,碰撞機率q = 1 − p。

4.4.2. 模擬部分

關於這個部分的模擬,不再以圖 4-2 中陣列的方式處理。主要是因為 圖 4-2 為單一設備,且該模擬使用至少 5 個106大小的陣列。由於這部分將 包含多個設備同時進行傳輸的情況,如繼續使用圖 4-2 的方式,將使得設 備的數量𝑁𝑠受到限制。因此,我們採用 C++的方式進行事件觸發式(event driven)模擬。主要是因為 C++可使得方便於執行動態記憶體配置,讓𝑁𝑠不 會成為限制。

C++環境模擬多個設備處理封包的流程,如圖 4-9。首先,一開始會先 判斷當前的事件,如圖 4-9 上方中間處,而構成事件的觸發只有封包到達 或封包離開兩種事件。若判斷為到達事件時,除了將該封包的狀態改為進 入隊伍(enqueue),如圖 4-9 左上方,並且須產生同一設備的下一個封包抵 達事件。除此之外,並立即判斷該到達事件是否可立即被服務。如果不能 立即被服務,則代表同一設備正忙碌中,則將該封包存入暫存器,或排入 設備隊伍之最後位置。反之,代表設備正空閒中,或緩衝器中沒有任何封 包。因此,封包將立即被傳送。

63

圖 4-9:多個設備程式流程圖。

其次,如圖4-9 下方中間處,當隊伍最前(head of line,HOL)之封包,

要被傳送時,需先檢查是否與其他設備的封包傳送發生碰撞,檢查之內容 包含:其一為是否為不同設備、其二為是否選到相同通道、其三為是否會 在時間軸上發生重疊;也就是說,是否有任何封包的傳送提早發生於𝑇𝑡𝑥之 內。若三項判斷條件皆符合,則須重傳。須注意該檢查也必須在封包傳送 完成後立即執行,如圖 4-9 右上方處,以確定該封包是否確定傳送成功。

最後,若判斷接下來要處理的事件為離開事件,也就是封包的傳送剛 剛結束。因此,如前所述,需先判斷封包是否傳送成功。如果失敗,則馬 上重新傳送;否則,除了將設備改為空閒階段,並判斷同一設備中是否仍 有未傳送完之封包。如果有的話,則繼續傳送HOL 封包;但是,如果沒有 等待的封包需要傳送,則繼續判斷以及處理下一個事件。

64

圖4-10:多通道 ALOHA 隨機存取的封包成功機率。

4.4.3. 結果與討論

首先,我們根據 3.4 節的(3.51)畫出圖 4-10 的紅色線;此外,以間隔 p = 0.01畫出p = p之藍色線,其中,相關參數包含設備數量𝑁𝑠 = 100、子 通道數量𝑛𝑐 = 6、以及λ = 0.0002。如圖 4-9 所示,可以看出兩條線有一交 點,因此必有一解。如4.4.1 節 MATLAB 之碰撞機率結果為 0.0134,而 C++

模擬對應之碰撞機率結果為0.001561。這裡的誤差主要來自兩個方面:其 一為3.2 節中,我們假設 p 為獨立的;其二則為 3.4 節中,關於設備 M/G/1 輸出程序假設為Poisson。

在其他分析與模擬的對應結果中,也發現可以準確吻合的結果並不多,

甚至有些模擬的結果無法順利獲得。這是因為某些數值的挑選會導致模擬

65

出現死結(deadlock)的問題。也就是說,在多個設備挑選通道時,出現選到 相同通道,並發生封包碰撞,使得在接下來的重傳也出現連續不斷地碰撞。

這個問題是當初沒有考慮到的。若要解決此問題,必須加入如IEEE 802.11 無線區域網路般的倒數機制,以錯開重傳的封包,而可以避免重複碰撞。

66

在文檔中 LoRaWAN A類效能分析 (頁 71-76)

相關文件