放慢模拟节奏

昨天的模拟开始很好,后来改了一些参数之后速度巨大,发指啊…… 后来调试了半天,发现一个问题: if (destTime > now ) { speed = sqrt((node->X_ – x)*(node->X_ – x) + (node->Y_ – y)*(node->Y_ – y)) / (destTime – now);其中destTime和now都是double类型,当两者相等(但存储上可能不同),例如destTime = 5.0001,now= 5.000001,这个时候if条件满足,然后进去执行,speed变成一个天文数字……,看来浮点数的运算始终要加以个值啊。将 if (destTime > now)改为 if (destTime > … Continue reading

ns2 segment fault

完成了一个发送beacon的程序,但是出现segment fault了,调试到最后发现是channel.cc中在更新节点的时候链表出问题了。再仔细一看,发现是原来的逻辑是需要链表是有序的,结果几次调用之后居然无序了,有一些节点的值进行变化,但是节点链表中的顺序始终不变,导致问题出现了。再深入看一下,原来是TransV1.2中竟然手动设置节点的位置,而不是调用set_destination函数:// set node exactly to old destination node->X_ = node->destX_; node->Y_ = node->destY_; // move node to position // velocity = space / time if (destTime > now) { speed = sqrt((node->X_ – x)*(node->X_ … Continue reading