【问题标题】:Access paramters of Anylogic agent population created from db从 db 创建的 Anylogic 代理群体的访问参数
【发布时间】:2020-05-21 17:11:08
【问题描述】:

好的...让我重试这个问题。

我将逐步完成我(错误地)认为可行的步骤。

  1. 在 Excel 中创建一个包含乘客信息 (id, flight_time, type, class, qty...) 的数据表,注意该表是按 id...而不是 flight_time 排序的。
  2. 将此数据库导入anylogic。
  3. 根据数据表(一个/行)创建一组代理(乘客/乘客)。
  4. 创建一个时间表,将Start Column 寻址为flight_time,将Value column 寻址为qty(对于这项工作,我一次只发送一名乘客,因此每行都发送qty = 1)。
  5. pedSource 设置为按计划到达,并将Passenger Agent 用作New pedestrian
  6. 所以这就是我失去它的地方。当我运行此模型时,new Passengers 没有 具有与数据表关联的任何参数。行人 id 是一个奇怪的数字(比如 3000 左右)。我可以在运行时单击“乘客”图标并滚动浏览创建的代理(所有参数数据都在那里并正确分配),但我不确定如何将运行时模型中的新代理与人口相关联客运代理。
  7. 我在这里错过了一步吗?我在想,如果我从数据表中导入一组代理,然后让每个代理在模型中的特定时间出现,我就可以对每个代理进行一些计算,例如 ped.exitTime = time() - ped.flightTime - ped.bufferTime

我只是不明白为什么表格数据在运行时无法通过 ped 使用?是否必须执行另一个映射步骤才能将数据推送到 ped agnet?

我现在陷入了僵局。我希望更清楚地描述这个问题,并感谢您的反馈。

【问题讨论】:

  • 请重新表述这个问题,它非常令人困惑。理想情况下,分享一些屏幕截图来说明您的具体问题。欢呼
  • 谢谢.. 请查看我更新的问题,问候

标签: anylogic


【解决方案1】:

这里有几处是错误的。

  1. 您不要先在弹出窗口中创建代理,然后再尝试在 PedSource 中重用它们。后者自己创建代理。
  2. 您似乎没有创造行人,而只是创造了代理
  3. 您没有将数据映射到参数

帮助快速指南:

  1. 创建自定义代理类型“MyPed”。确保其“在流程图中使用”属性设置为“行人”
  2. 为每个 dbase 表列在“MyPed”中添加 1 个参数
  3. 将您的 PedSource 设置为“调用 inject()”函数以获取其到达
  4. 删除您的日程安排,您无法获得所需的数据
  5. 使用动态事件。为每个 dbase 列包含 1 个参数参数。在 main 启动时,遍历所有 dbase 条目并使用当前行数据创建一个动态事件。
  6. 在 DynEvent 的操作中,调用 myPedSource.inject(1),然后使用参数中的数据手动填充该 ped

这并不简单,尤其是 DynEvent 的东西。所以在 AL 中做更多的研究有助于理解这些以及它们是如何工作的,检查示例模型...

【讨论】:

  • hmmm... 非常感谢您的反馈,我将在接下来的几周内解决这个问题并发布我的方法。问候
猜你喜欢
  • 2021-02-13
  • 2020-04-09
  • 2021-04-08
  • 2020-08-03
  • 2021-05-05
  • 2020-08-11
  • 2021-10-09
  • 2020-05-17
  • 2014-12-13
相关资源
最近更新 更多