单源节点、多目标节点中选择最近的sink节点传输

来源:互联网 发布:sql server入门经典 编辑:程序博客网 时间:2024/06/01 23:08

实验目标:在第三章原有的模型上,加入多个SINK节点,选择最近的SINK节点进行数据包的传输。

具体实施过程:

1.在理解模型的整体结构的情况下,我增加了几个变量。

//目标节点数量

int GlobalSinkNum[1];

//最终目标节点ID

int FinalGlobalSinkID[1];

//最终目标节点数组下标

int FinalNumID[1];

//目标节点地址和坐标(将这几个变量改为了数组)

int GlobalSinkID[801];

double GlobalSinkX[801];

double GlobalSinkY[801];

 

同时在SinkInit,NodeInit,functionblock,GPSR,以及NotifyAppSendData和statevariables修改了相应的代码。

 

下面这段代码的功能是求出离SRC节点最近的Sink节点

TemSrcToSinkDistance=1410;

for(i=1 ;i<= GlobalSinkNum[0];i++)

       {

q = sqrt((GlobalSrcX -GlobalSinkX[i])*(GlobalSrcX - GlobalSinkX[i]) + (GlobalSrcY -GlobalSinkY[i])*(GlobalSrcY - GlobalSinkY[i]));

if(q<TemSrcToSinkDistance)

       {

TemSrcToSinkDistance=q;

FinalGlobalSinkID[0]=GlobalSinkID[i];

FinalNumID[0]=i;

}

       }

SrcToSinkDistance=TemSrcToSinkDistance;

 

补充说明 //目标节点数量

int GlobalSinkNum[1];

//最终目标节点ID

int FinalGlobalSinkID[1];

//最终目标节点数组下标

int FinalNumID[1];

将这几个作为数组,是为了后面进行模型改动的时候比较方便。

1 0