3

我在 Java 中使用 pRTI 和两个联邦进行 HLA 模拟。我想提前我的模拟时间。据我所知,以下方法用于此目的:

_ambassador.timeAdvanceRequest(time);

ambassadorRTI大使在哪里。

我的问题是传递什么time参数?我想这应该是我希望我的模拟提前的时间,但是如何获得这个呢?

4

2 回答 2

2

好的,我想通了。

必须使用 LogicalTime 接口实现之一,例如使用 TimeFactory:

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

呼叫timeAdvanceRequest()将向RTI发送请求。如果时间提前,timeAdvanceGrant() 将在 federate 上调用。

更多信息在这里

于 2014-05-02T21:01:53.963 回答
1

这是我认为它应该在 HLA 1516-2010 中工作的方式。从 HLA 1516-2010 开始,RTI 需要提供两种时间表示:HLAinteger64TimeHLAfloat64Time(HLA 接口规范的第 12.4 和 12.11.2 节)。要访问这些,您使用LogicalTimeFactoryFactory. 例如,下面的代码得到一个HLAfloat64TimeFactory

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

timeFactory然后可以使用此实例创建HLAfloat64TimeHLAfloat64Interval实例:

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

或者,使用接口

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

类似的代码用于整数时间工厂。

于 2017-01-24T00:23:08.580 回答