如何在 unetstack 中实现水下网络的能量模型?
How to implement energy model for underwater networks in unetstack?
我想在 unetstack 中实现能量模型,我知道这是理论,但不知道如何在 unetstack 中实现它,因为我还在学习它。请提供其中涉及的步骤。基本代码框架也会有所帮助。
预期输出:
我期望每个节点在 transmitting/receiving 数据包之后的输出,它打印出剩余的能量。
跟踪能量最自然的地方是在 PHYSICAL (phy
) 代理中。假设您在 UnetSim 中使用 HalfDuplexModem
phy
,我会将其子类化并通过覆盖 send()
方法来监视 TxFrameNtf
和 RxFrameNtf
。然后我会添加相关的 energy
属性来跟踪能源使用情况。
示例 Groovy 代码:
import org.arl.fjage.Message
import org.arl.unet.sim.HalfDuplexModem
class MyHalfDuplexModem extends HalfDuplexModem {
float energy = 1000 // change to whatever initial energy your node has
@Override
boolean send(Message m) {
if (m instanceof TxFrameNtf) energy -= 10 // change according to your model
if (m instanceof RxFrameNtf) energy -= 1 // change according to your model
return super.send(m)
}
}
最后,在模拟DSL中,您可以将默认的HalfDuplexModem
替换为您自定义的版本:
modem.model = MyHalfDuplexModem
我想在 unetstack 中实现能量模型,我知道这是理论,但不知道如何在 unetstack 中实现它,因为我还在学习它。请提供其中涉及的步骤。基本代码框架也会有所帮助。
预期输出: 我期望每个节点在 transmitting/receiving 数据包之后的输出,它打印出剩余的能量。
跟踪能量最自然的地方是在 PHYSICAL (phy
) 代理中。假设您在 UnetSim 中使用 HalfDuplexModem
phy
,我会将其子类化并通过覆盖 send()
方法来监视 TxFrameNtf
和 RxFrameNtf
。然后我会添加相关的 energy
属性来跟踪能源使用情况。
示例 Groovy 代码:
import org.arl.fjage.Message
import org.arl.unet.sim.HalfDuplexModem
class MyHalfDuplexModem extends HalfDuplexModem {
float energy = 1000 // change to whatever initial energy your node has
@Override
boolean send(Message m) {
if (m instanceof TxFrameNtf) energy -= 10 // change according to your model
if (m instanceof RxFrameNtf) energy -= 1 // change according to your model
return super.send(m)
}
}
最后,在模拟DSL中,您可以将默认的HalfDuplexModem
替换为您自定义的版本:
modem.model = MyHalfDuplexModem