2017-04-27 44 views
0

我需要建议或参考如何开发模拟与多个节点,在24小时的网络中存在特定的存在模式。据我所知,模拟具有自己的时间表和运行时间,它跟随并执行事件列表。在这个例子中,每个点头都有自己的时间表。我相信网上有一些例子,但我无法找到它,所以任何帮助是值得欢迎的。 Thx节点的动态性

回答

1

您引用的行为通常称为昼夜行为或更一般的流失。这可能有助于未来的研究主题。

来模拟你的节点是可用还是不可用在某个时间点上,你可以使用一个布尔值,表示如果你的节点目前正在积极在模拟论证参加:

bool isActive = true; 

可以再加入if语句在你的模块handleMessage()方法,如果你的模块是活动的,将只回复短信:

void myModule::handleMessage(cMessage *msg) 
{ 
    if(isActive){ 
     // handle your messages 
    } else { 
     // maybe send a timeout message indicating that your module is inactive 
    } 
} 

关于你提到的节点是速效的时候,我建议使用SelfMessages,你可以安排如下:

scheduleAt(simTimeAtWhichStateChanges, myChurnMsg); 

handleMessage()然后可以处理该消息,改变状态,并重新安排的消息状态的下一个变化:

void myModule::handleMessage(cMessage *msg) 
{ 
    if(isActive){ 
     if (msg->isSelfMessage()){ 
      isActive = !isActive; 
      scheduleAt(simTimeAtWhichStateChanges, myChurnMsg); 
     } 
     // handle your messages 
    } else { 
     // maybe send a timeout message indicating that your module is inactive 
    } 
} 

这应该给你你如何能实现一个粗略的概述你的模拟中的昼夜行为。

+0

非常感谢你 – explorer

+0

如果答案帮助你解决问题,你会介意接受吗? – xTikka

+0

我看不到那个选项,该怎么做 – explorer