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);
Аналогичный код используется для целочисленной фабрики времени.