Anylogic - 使用特定参数限制行人的访问

Posted

技术标签:

【中文标题】Anylogic - 使用特定参数限制行人的访问【英文标题】:Anylogic - restrict access for pedestrian with a specific parameter 【发布时间】:2021-10-18 11:44:39 【问题描述】:

我是一名工科学生,作为毕业论文的一部分,我正在使用 Anylogic Pedestrian Library 模拟地铁中的乘客换乘过程。

在模拟中,经常会出现站立的乘客“离开”站立区域并以某种方式进入座位的情况,从而挡住了其他想要占用座位的行人的去路。

所有乘客都来自客运代理,他们有一个布尔变量 wantToSit。如果 wantToSit = false,他们会被引导到站立区域,如果 wantToSit = true,他们会去就座。

现在,我想通过座位组周围的多边形节点来限制wantToSit = false的peds进入淹死区域,这样就不会出现上面写的现象,只有坐着的乘客才会进入这个区域。

但是,当我尝试在多边形节点中定义访问限制条件时,我总是收到错误“...无法解析为变量”。

这是来自代理“Passenger”的变量:

在多边形节点所在的代理“主”上,自动代码完成不建议为 wantped. 提供任何内容。 Passenger这个词见下图:

在这种情况下有没有办法使用访问限制功能?我不知道如何从 Main 访问这个参数,这是一个不同的代理。

提前感谢您的帮助!

【问题讨论】:

您的客运代理中是否有一个名为wantToSit 的变量?您得到的错误是因为变量不存在。编写代码时使用完整的代码来获取可用参数。如果是动态参数,它将在变量末尾添加() 是的,Passenger Agent 内部有一个名为wantToSit 的静态变量,默认值为randomTrue(0.8)。它肯定存在,因为一个函数是基于这个值工作的。我猜的问题是从多边形节点所在的主代理页面访问这个变量。 为什么将变量设为静态?这是一项高级功能,除非您知道其影响,否则不应使用。你确定这个变量是公开的吗?请展示你得到的自动代码完成 我已经用图片编辑了问题 - 见上文。 【参考方案1】:

如果您在输入任何内容之前在条件字段中执行代码完成操作,您将看到在条件字段中可供您使用的局部变量是agentself

然后,如果您选择 agent,您将看到自定义行人代理中的字段将变为可用。

尽量不要在没有完整代码的情况下键入任何内容。它可以为您节省大量时间。

【讨论】:

以上是关于Anylogic - 使用特定参数限制行人的访问的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic——如何计算行人之间的距离

AnyLogic 中的参数变化:特定变化的数据

AnyLogic——如何随机选择处于特定状态的代理

Anylogic:将参数值写入数据库表

AnyLogic中“代理”类型参数的访问值

通过anylogic中的特定资源路由代理