我想在 unetstack 中实现能量模型,我知道它的理论,但不知道如何在 unetstack 中实现它,因为我还在学习它。请提供其中涉及的步骤。基本的代码框架也会有所帮助。
预期输出:我希望每个节点在发送/接收数据包后输出剩余能量。
跟踪能量最自然的地方是 PHYSICAL ( phy
) 代理。假设您HalfDuplexModem
phy
在 UnetSim 中使用 ,我将对其进行子类化TxFrameNtf
并RxFrameNtf
通过覆盖该send()
方法来监视 and 。然后我会添加相关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