xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 11KB
    文件類型: .m
    金幣: 2
    下載: 4 次
    發布日期: 2022-09-30
  • 語言: Matlab
  • 標簽: PEGASIS??

資源簡介

PEGASI路由算法,尋找距離節點最近的節點,練成一條線。

資源截圖

代碼片段和文件信息

clear;
clc;
clf;

NodeNums=100;????????????????????????????????
AreaR=100;??????????????????????????????????

Bx=20;???????????
By=150;?????????????????????????????????????

En=0.25;????????????????????????????????????
send_to_sink=0;?????????????????????????????%%簇頭距離基站距離?????????????????
data_pkt_length=2000;???????????????????????
die_node_num=0;?????????????????????????????%%本輪死亡節點數
die_node_num_pri=0;?????????????????????????
run_round=0;????????????????????????????????
En_Cost=0;??????????????????????????????????%%本輪消耗能量
En_Cost_pre=0;??????????????????????????????%%上一輪消耗能量
En_cost_per_round=0;????????????????????????
begin_to_send=0;????????????????????????????%%開始發送的num
num=1;

alive=1;???????????????????????????????????
dead=0;

Node.x=AreaR*rand(1NodeNums);?
Node.y=AreaR*rand(1NodeNums);??????????????
Node.pri=linspace(00NodeNums);????????????
Node.already=linspace(00NodeNums);????????
Node.to_nbr_dis=zeros(NodeNums);????????????
Node.to_pri_dis=linspace(00NodeNums);?????%%與當前節點最近的距離
Node.send_dis=linspace(00NodeNums);???????%%節點之間距離表初始為0
Node.E=linspace(EnEnNodeNums);????????????
Node.status=linspace(alivealiveNodeNums);?

ETX=50*0.000000001;?????????????????????????%%發送數據包消耗能量
ERX=50*0.000000001;?????????????????????????%%接收數據包消耗能量
Efs=100*0.000000000001;?????????????????????%%連接點之間的傳遞參數
Emp=0.0013*0.000000000001;??????????????????%%簇首與基站之間的傳遞參數
EDA=5*0.000000001;??????????????????????????%%融合數據消耗能量
do=sqrt(Efs/Emp);???????????????????????????%%平均半徑

%%計算各個節點距離基站的位置距離
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%?????????????????????????數據通信
while?(NodeNums-die_node_num)>0?%%每一輪循環為一次數據通信,直到節點死光
??
????if?run_round==0||die_node_num_pri~=die_node_num?????%%當上一輪死亡節點不等于下一輪死亡節點數
Node.pri=linspace(00NodeNums);????????????????%%??與當前節點最近的節點num
num_plot=1;
Node.already=linspace(00NodeNums);?????????????
????????for?i=1:1:NodeNums
if?Node.status(i)==alive
to_sink_dist(i)=sqrt((Node.x(i)-Bx)^2+(Node.y(i)-By)^2);
else
to_sink_dist(i)=0;
end
????????end??%%求出所有存活節點到基站的距離

[Max_Dis?Max_num]=max(to_sink_dist);???%%求出距離基站最大的距離
now_node=Max_num;
Node.already(now_node)=1;
node_head=Max_num;???????????????????????%%頭結點
% send_to_sink=now_node;
node_to_send=now_node;
start_node=now_node;?????????????????????%%求出開始節點
????????while?num_plot~=NodeNums-die_node_num
if?num_plot==NodeNums-die_node_num
????????????????Node.pri(now_node)=0;
node_tail=now_node;???%%記錄尾節點
????????????end
????????????for?j=1:1:NodeNums
if?Node.already(j)==0&&Node.status(j)==alive
Node.to_nbr_dis(now_nodej)=sqrt((Node.x(now_node)-Node.x(j))^2+(Node.y(now_node)-Node.y(j))^2);???%%與鄰居的距離
else
Node.to_nbr_dis(now_nodej)=0;
end
end
j=1;
while?Node.to_nbr_dis(now_nodej)==0??????%%即當有節點死亡時
j=j+1;?????????????????%%重新編號
end
min_dis=Node.to_nbr_dis(now_nodej);
min_n

評論

共有 條評論