我在 Java 中使用 pRTI 和两个联邦进行 HLA 模拟。我想提前我的模拟时间。据我所知,以下方法用于此目的:
_ambassador.timeAdvanceRequest(time);
,ambassador
RTI大使在哪里。
我的问题是传递什么time
参数?我想这应该是我希望我的模拟提前的时间,但是如何获得这个呢?
我在 Java 中使用 pRTI 和两个联邦进行 HLA 模拟。我想提前我的模拟时间。据我所知,以下方法用于此目的:
_ambassador.timeAdvanceRequest(time);
,ambassador
RTI大使在哪里。
我的问题是传递什么time
参数?我想这应该是我希望我的模拟提前的时间,但是如何获得这个呢?
好的,我想通了。
必须使用 LogicalTime 接口实现之一,例如使用 TimeFactory:
LogicalTime time = _ambassador.getTimeFactory().makeFinal();
呼叫timeAdvanceRequest()
将向RTI发送请求。如果时间提前,timeAdvanceGrant() 将在 federate 上调用。
更多信息在这里。
这是我认为它应该在 HLA 1516-2010 中工作的方式。从 HLA 1516-2010 开始,RTI 需要提供两种时间表示:HLAinteger64Time
和HLAfloat64Time
(HLA 接口规范的第 12.4 和 12.11.2 节)。要访问这些,您使用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);
类似的代码用于整数时间工厂。