【问题标题】:Anylogic pedestrian arrival at specific timesAnylogic行人在特定时间到达
【发布时间】:2020-05-18 18:47:08
【问题描述】:

我有一个数据库表(id、arrivalTime、flightNumber),并且我已经从这个表中创建了一组代理。我希望一个行人出现在模型中目标线的每个到达时间。我(错误地)认为使用时间表会轻而易举,但我没有运气。关于如何在任何逻辑中执行此操作的任何建议?

【问题讨论】:

    标签: anylogic


    【解决方案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 ...

    我对时间表中的“重复每个:”部分感到困惑。这实质上设置了注入的粒度,因此如果您希望在几秒钟内注入从数据表创建的行人:

    1. 将“重复间隔”设置为 86400 秒(以秒为单位)
    2. 确保您的数据以秒为单位...所以要在 1 分钟创建一个新行人,arrival_time 应该等于 60,当然 5 分钟的到达时间应该等于 300。

    下面是我的数据库中的示例数据表的图像以及添加到 main.xml 的计划属性。当运行时间等于到达时间时,运行它会增加一个行人。

    我仍然不相信这会创建“MyAgents”,它是从数据库表中创建的一组代理???需要解决这个问题。

    问候,

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2020-07-29
      • 2020-03-28
      • 2021-10-18
      • 2021-02-05
      • 2022-01-11
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多