最优切割C语言算法,有高手曾经用过这段最优算法程序吗,帮忙看下什么意思。...

这段代码描述了一种无线传感器网络中节点状态管理和集群头选择的过程。节点根据其状态(存活、太阳节点等)和距离来确定是否成为集群头。如果所有节点都已处理,则进入重启或重置阶段。算法还限制了最大迭代次数,并在达到该次数后结束模拟。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

T = 0.25 * Tcomp; ev << "rd rec: " << rec << " cHeadsRound " << this->

cHeadsRound << " T: " << T << " rd: " << rd << " lCR " << nPtr->

lastClusterRound << "\n"; if (nPtr->myStatus != STATUS_DEAD && rd < T && nPtr->lastClusterRound == 0)

{

best[bestCtr].xpos = nPtr->xpos;

best[bestCtr].ypos = nPtr->ypos;

best[bestCtr].id = rec;

ev << "cHead: " << rec << "\n";

bestCtr++;

if (!this->solarOn || (nPtr->myStatus != STATUS_SUN && this->solarOn))

nPtr->lastClusterRound = 1;

if (nPtr->myStatus == STATUS_SUN)

this->sunCtr++;

else

this->darkCtr++;

this->cHeadsRound++;

if (bestCtr == FBEST)

break;

//nPtr->lastClusterRound = this->roundsDone;

}

this->nrHeads[this->roundsDone] = bestCtr;

} if (bestCtr == 0)

{

int allDone = 1; if (this->cHeadsRound + this->deadNodes == this->numNodes)

{

ev << "BS: goto reset\n";

goto reset;

} // check if not all are already done!!

for (int rec = 2; rec < this->nrNodes + 2; rec++)

{

Node *nPtr = (Node *) nodePtr[rec]; if (nPtr->lastClusterRound == 0 && nPtr->myStatus != STATUS_DEAD)

{

allDone = 0;

break;

}

}

if (allDone == 0)

{

ev << "BS: restart\n";

goto restart;

}

ev << "no cluster heads\n";

this->calledEnd = 5;

endSimulation();

} if (this->roundsDone == 250)

{

ev << "all rounds done\n";

this->calledEnd = 0;

endSimulation();

} // now we send message to all nodes and announce their cluster head

{

int head = 0;

int tmp;

char str[32]; for (int rec = 2; rec < this->nrNodes + 2; rec++)

{

Node *nPtr = (Node *) nodePtr[rec];

head = 0;

if (nPtr->myStatus != STATUS_DEAD)

{

//ev << "rec: " << rec;

min = 9999999;

for (j = 0; j < bestCtr; j++)

{

if (rec != best[j].id)

{

tmp = (nPtr->xpos - best[j].xpos) * (nPtr->xpos - best[j].xpos) +

(nPtr->ypos - best[j].ypos) * (nPtr->ypos - best[j].ypos);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值