Как реализовать энергетическую модель для подводных сетей в unetstack? - PullRequest
1 голос
/ 07 июня 2019

Я хочу реализовать энергетическую модель в unetstack, я знаю, что это теория, но не знаю, как реализовать ее в unetstack, так как я все еще изучаю ее. Пожалуйста, укажите шаги, связанные с этим. Базовый скелет кода также будет полезен.

Ожидаемый результат: Я ожидаю вывод, что каждый узел после передачи / приема пакетов, он распечатывает оставшуюся энергию.

1 Ответ

0 голосов
/ 09 июня 2019

Самое естественное место для отслеживания энергии - это ФИЗИЧЕСКИЙ (phy) агент. Предполагая, что вы используете HalfDuplexModem phy в UnetSim, я бы создал его подкласс и проконтролировал бы TxFrameNtf и RxFrameNtf, переопределив метод send(). Затем я бы добавил соответствующий атрибут 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
...