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