HLA - использование timeAdvanceRequest()

У меня есть симуляция HLA на Java с использованием pRTI с двумя федератами. Я хочу опередить время моей симуляции. Насколько я знаю, для этого используется следующий метод:

_ambassador.timeAdvanceRequest(time);

, где ambassador является послом РТИ.

Мой вопрос в том, что перейти в time параметр? Я предполагаю, что это должно быть время, когда я хочу, чтобы мое моделирование продвинулось, но как получить это?

2 ответа

Решение

Хорошо, я понял это.

Необходимо использовать одну из реализаций интерфейса LogicalTime, например, используя TimeFactory:

LogicalTime time =  _ambassador.getTimeFactory().makeFinal();

призвание timeAdvanceRequest() отправит запрос в РТИ. Если время было расширено, timeAdvanceGrant() будет вызываться для объединения.

Дальнейшая информация здесь.

Вот как я думаю, что это должно работать в HLA 1516-2010. Начиная с HLA 1516-2010, RTI требуется предоставлять два временных представления: HLAinteger64Time а также HLAfloat64Time (разделы 12.4 и 12.11.2 Спецификации интерфейса HLA). Для доступа к ним вы используете LogicalTimeFactoryFactory, Например, следующий код получает HLAfloat64TimeFactory:

HLAfloat64TimeFactory timeFactory = 
     (HLAfloat64TimeFactory)LogicalTimeFactoryFactory.getLogicalTimeFactory("HLAfloat64Time")

это timeFactory Экземпляр может быть использован для создания HLAfloat64Time а также HLAfloat64Interval экземпляры:

HLAfloat64Time t = timeFactory.makeTime(3.0);
HLAfloat64Interval interval = timeFactory.makeInterval(1.0);

или, используя интерфейсы

LogicalTime t = timeFactory.makeTime(3.0);
LogicalTimeInterval interval = timeFactory.makeInterval(1.0);

Аналогичный код используется для целочисленной фабрики времени.

Другие вопросы по тегам