【发布时间】:2020-05-18 18:47:08
【问题描述】:
我有一个数据库表(id、arrivalTime、flightNumber),并且我已经从这个表中创建了一组代理。我希望一个行人出现在模型中目标线的每个到达时间。我(错误地)认为使用时间表会轻而易举,但我没有运气。关于如何在任何逻辑中执行此操作的任何建议?
【问题讨论】:
标签: anylogic
我有一个数据库表(id、arrivalTime、flightNumber),并且我已经从这个表中创建了一组代理。我希望一个行人出现在模型中目标线的每个到达时间。我(错误地)认为使用时间表会轻而易举,但我没有运气。关于如何在任何逻辑中执行此操作的任何建议?
【问题讨论】:
标签: anylogic
还有其他方法,但您可以使用此方法,因为您的所有代理都已生成:
假设您的模型时间单位是分钟...创建一个名为 getDateDifference 的函数返回一个双精度:
long diff = date.getTime() - date().getTime();
double diffMinutes=(int) (diff / (60 * 1000));
return diffMinutes;
然后在您的每个代理中使用以下代码创建一个事件:
pedSource.inject();
该事件将由等于 getDateDifference() 分钟的超时触发....但是您的数据库中每次到达时只有 1 个行人到达...但也许该数据库与行人到达相关联。还是飞机?不知道……
【讨论】:
首先让我感谢费利佩如此迅速地回答。我早上做了一些工作,并能够确定部分解决方案。
我的数据是这样设置的:(注意我的到达时间是十进制的 24 小时制)
db_table
id[int] arrival_time[double] flight_number[int]
1 .1701 XYZ
2 .1714 XYZ
...
我对时间表中的“重复每个:”部分感到困惑。这实质上设置了注入的粒度,因此如果您希望在几秒钟内注入从数据表创建的行人:
下面是我的数据库中的示例数据表的图像以及添加到 main.xml 的计划属性。当运行时间等于到达时间时,运行它会增加一个行人。
我仍然不相信这会创建“MyAgents”,它是从数据库表中创建的一组代理???需要解决这个问题。
问候,
【讨论】: