武
漢
工
程
大
學
計算機科學與工程學院
《無線網絡協議原理》實驗報告
專業班級
實驗地點
學生學號
指導教師
學生姓名
實驗時間
實驗項目 實驗二:LEACH 協議仿真實驗 實驗類別 操作性( )
驗證性()
設計性( √
)
綜合性( )
其它( )
實驗目的及要求
(1)實驗目的 通過此實驗使學生加深理解 leach 成簇協議,分析算法優、缺點。
(2)實驗要求 a)
編寫簇頭選舉代碼; b) 編寫普通節點加入簇代碼; c) 編寫能量消耗代碼; d) 和 PEGASIS 協議實驗結果對比并分析原因。
e) 嘗試對節點初始能量不均勻情況改進簇頭選舉算法。
成 績 評 定 表 類
別 評 分 標 準 分值 得分 合
計 上機表現 積極出勤、遵守紀律 主動完成實驗設計任務
0 30 分
程序代碼 比較規范、基本正確 功能達到實驗要求
0 30 分
實驗報告 及時遞交、填寫規范 內容完整、體現收獲
0 40 分
說明:
評閱教師:
日 期:
年
月
日
實 驗 內 容 一、實驗目的 1 編寫 WSN 網絡節點生成代碼 2 編寫簇頭選舉代碼 3 編寫普通節點加入簇代碼 4 編寫路由能量消耗代碼 5 嘗試對節點初始能量不均勻情況改進簇頭選舉算法(可選)
6 畫出分簇效果圖 7 和 PEGASIS 協議能量消耗性能對比并分析原因
二、實驗準備
1、實驗中會用到的庫函數有 rand()函數:隨機數生成函數,即生成 0~1 的隨機數,里面參數表示矩陣大小 Round()函數:四舍五入取整函數 Plot()函數:二維曲線繪圖函數 2、掌握 LEACH 協議的基本類容,根據簇的劃分以及簇頭的選擇編寫代碼
并得到仿真結果。
設置區域范圍、節點坐標、區域內節點數目、節點成為簇頭概率以及各種能
量和最大輪數的設定 利用 rand()函數創建隨機的傳感器網絡,并設定匯聚節點位置 根據節點能量是否大于零來判斷節點是否死亡并在圖中畫出節點的位置,死 亡的節點用紅點表示,沒有死亡的普通節點用“。”表示并用 plot()函數畫出 這些節點的曲線圖 根據 LEACH 協議中簇頭節點的選取要求選出簇頭,根據簇頭節點的坐標用 plot()函數在圖上將簇頭表示黑*,并計算簇頭節點到匯聚節點的距離,將距 離與通信路徑進行比較計算出各簇頭的能量消耗 選取正常節點的相關簇頭,在 n 個節點中選取出節點類型為 N 且能量大于 零的節點,計算這些節點到匯聚界定的距離,設定距離最小最小簇頭數為 1, 計算該節點與各簇頭的距離,取最小距離的簇頭節點為該節點簇頭,并計算 出各普通節點的能量消散 用 plot()函數畫出各簇頭節點和普通節點的劃分圖
三、實驗步驟
clear;
xm=100;
ym=100;//設置區域為 100*100
sink.x=0.5*xm;
sink.y=0.5*ym;//匯聚節點坐標
n=100 //區域內節點數目
p=0.1; //節點成為簇頭的概率
Eo=0.5;//節點初始能量
ETX=50*0.000000001;//發射單位報文損耗能量
ERX=50*0.000000001;//接收單位報文損耗能量
Efs=10*0.000000000001;//自由空間能量
Emp=0.0013*0.000000000001;//衰減空間能量
EDA=5*0.000000001;多路徑衰減能量
rmax=20 最大的輪數 do=sqrt(Efs/Emp);//計算通信路徑 do 1、下面利用 for 循環語句和 rand()函數在 n 個節點中隨機生成普通節點類型的節點,并表示出它的坐標以及初始能量,普通類型節點用‘N’表示。(請按要求在“*”處填上合適的代碼)
for ****** for i=1:1:n
S(i).xd=rand(1,1)*xm;
S(i).yd=rand(1,1)*ym;
S(i).G=0;
S(i).type="N";
S(i).E=Eo;
end ****
End 定義匯聚節點的位置坐標 S(n+1).xd=sink.x;
S(n+1).yd=sink.y; cluster=1; 利用 for 循環語句初始化每個節點的簇頭節點 for r=0:1:rmax
if(mod(r, round(1/p) )==0)
for i=1:1:n
S(i).G=0;
end
end
hold off;
figure(1); 2、請分析下段代碼的功能。
for i=1:1:n
if (S(i).E<=0)
plot(S(i).xd,S(i).yd,"red .");
hold on;
end
if (S(i).E>0)
S(i).type="N";
plot(S(i).xd,S(i).yd,"o");
hold on;
end
end plot(S(n+1).xd,S(n+1).yd,"x");
plot(S(n+1).xd,S(n+1).yd,"red ."); cluster=1;
功能:利用 for 語句判斷每個節點是否死亡,如果節點能量小于零則節點死亡,并用 plot()函數在圖上表示出該節點的位置,用‘red.’表示死亡的節點。反之則節點沒有死亡,將節點類型定義為普通節點,并用并用 plot()函數在圖上表示出該節點的位置,用‘。’表示未死亡的普通節點。并表示出匯聚節點的位置,并將其記為第一個簇頭,判斷節點是否死亡 。
3、利用 for 語句和 if 語句根據 LEACH 協議的簇頭選取規則在 n 個節點中選出簇頭節點,將簇頭節點的類型用‘C’表示,并將選出的接待點的坐標賦值給簇頭 C(cluster),并用 plot()函數將簇頭節點的位置在圖中用‘k*’表示。然后計算該點到匯聚節點的距離并將該距離賦值給簇頭到匯聚節點的距離 C(cluster).distance。并記錄得到的簇頭節點是 n 個節點中的哪一個,給簇頭的 X、Y 坐標賦值并將簇頭總數加一。最后通過比較各簇頭節點到匯聚加節點的距離和通信半徑的距離計算出簇頭節點的能量耗散(請按要求補全下列橫線處的代碼)
for i=1:1:n //簇頭的選擇
if(S(i).E>0)
temp_rand=rand;
if ((S(i).G)<=0)
if(temp_rand<= (p/(1-p*mod(r,round(1/p)))))
S(i).type= “C”
;
S(i).G=round(1/p)-1;
C(cluster).xd=
S(i).xd
;
C(cluster).yd=
S(i).yd
;
plot(
S(i).xd,S(i).yd,"k*"
);
distance=
sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 )
;
C(cluster).distance=
distance
;
C(cluster).id=
i
;
X(cluster)=
S(i).xd
;
Y(cluster)=
S(i).yd
;
cluster=
cluster+1
;
distance;
if (distance>do)
S(i).E=
S(i).E-(ETX+EDA)*(4000)+Emp*4000* ( distance*distance*distance*distance ));
end
if (distance<=do)
S(i).E=
S(i).E- ( (ETX+EDA)*(4000)
+ Efs*4000*( distance * distance ))
;
end
end
end
end
end 4、利用 for 循環對普通節點進行簇的劃分即對普通節點選取相關簇頭,首先初始化該點的通信最短距離,即該點到匯聚節點的距離,并記錄下它的簇頭為匯聚節點。然后將該普通節點與全部的簇頭節點進行距離計算并與它與匯聚節點的距離進行比較,將距離的最小值賦值給 min_dis。然后計算普通節點和簇頭節點的能量耗散,記錄該普通節點的簇頭節點和到簇頭節點的距離。(請按要求補全下列橫線處的代碼)
for i= 1:1:n
//選取正常節點的相關簇頭
if ( S(i).type=="N" && S(i).E>0 )
if(cluster-1>=1)
min_dis=
sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 )
;
min_dis_cluster=
1
;
for
c=1:1:cluster-1
temp=min(min_dis,
sqrt( (S(i).xd-C(c).xd)^2 + (S(i).yd-C(c).yd)^2 )
);
if ( temp<min_dis )
min_dis=temp
;
min_dis_cluster=c;
;
end
end
if (min_dis>do)
//普通節點能量耗散
S(i).E=
S(i).E- ( ETX*(4000) + Emp*4000*( min_dis * min_dis * min_dis * min_dis));
;
end
if
(min_dis<=do)
S(i).E= S(i).E- ( ETX*(4000) + Efs*4000*( min_dis *
min_dis))
;
end
if(min_dis>0)
//簇頭節點能量耗散
S(C(min_dis_cluster).id).E =
S(C(min_dis_cluster).id).E- ( (ERX + EDA)*4000 )
;
end
S(i).min_dis=
min_dis
;
S(i).min_dis_cluster=
min_dis_cluster
;
end
end
end
hold on; 5、分析下列代碼的功能。
[vx,vy]=voronoi(X,Y);
plot(X,Y,"r*",vx,vy,"b-");
hold on;
axis([0 xm 0 ym]);
功能:輸出對區域內節點的劃分圖。
四、實驗分析 請根據仿真結果對測試結果進行分析
>> LEACH
n = 100 rmax = 20
推薦訪問: 無線網絡 原理 協議上一篇:三極管特性仿真,模電實驗報告
下一篇:教科版五年級下冊科學實驗報告單
在偉大祖國73華誕之際,我參加了單位組織的“光影鑄魂”主題黨日活動,集中觀看了抗美援朝題材影片《長津湖》,再一次重溫這段悲壯歷史,再一次深刻感悟偉大抗美援朝精神。1950年10月,新中國剛剛成立一年,
根據省局黨組《關于舉辦習近平談治國理政(第四卷)讀書班的通知》要求,我中心通過專題學習、專題研討以及交流分享等形式,系統的對《習近平談治國理政》(第四卷)進行了深入的學習與交流,下面我就來談一談我個人
《習近平談治國理政》(第四卷)是在百年變局和世紀疫情相互疊加的大背景下,對以習近平同志為核心的黨中央治國理政重大戰略部署、重大理論創造、重大思想引領的系統呈現。它生動記錄了新一代黨中央領導集體統籌兩個
《真抓實干做好新發展階段“三農工作”》是《習近平談治國理政》第四卷中的文章,這是習近平總書記在2020年12月28日中央農村工作會議上的集體學習時的講話。文章指出,我常講,領導干部要胸懷黨和國家工作大
在《習近平談治國理政》第四卷中,習近平總書記強調,江山就是人民,人民就是江山,打江山、守江山,守的是人民的心。從嘉興南湖中駛出的小小紅船,到世界上最大的執政黨,在中國共產黨的字典里,“人民”一詞從來都
黨的十八大以來,習近平總書記以馬克思主義戰略家的博大胸襟和深謀遠慮,在治國理政和推動全球治理中牢固樹立戰略意識,在不同場合多次圍繞戰略策略的重要性,戰略和策略的關系,提高戰略思維、堅定戰略自信、強化戰
《習近平談治國理政》第四卷集中展示了以習近平同志為核心的黨中央在百年變局和世紀疫情相互疊加背景下,如何更好地堅持和發展中國特色社會主義而進行的生動實踐與理論探索;對于新時代堅持和發展什么樣的中國特色社
在黨組織的關懷下,我有幸參加了區委組織部組織的入黨積極分子培訓班。為期一周的學習,學習形式多樣,課程內容豐富,各位專家的講解細致精彩,對于我加深對黨的創新理論的認識、對黨的歷史的深入了解、對中共黨員的
《習近平談治國理政》第四卷《共建網上美好精神家園》一文中指出:網絡玩命是新形勢下社會文明的重要內容,是建設網絡強國的重要領域。截至2021年12月,我國網民規模達10 32億,較2020年12月增長4
剛剛召開的中國共產黨第十九屆中央委員會第七次全體會議上討論并通過了黨的十九屆中央委員會向中國共產黨第二十次全國代表大會的報告、黨的十九屆中央紀律檢查委員會向中國共產黨第二十次全國代表大會的工作報告和《