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”的变量:
在多边形节点所在的代理“主”上,自动代码完成不建议为 want
或 ped.
提供任何内容。 Passenger
这个词见下图:
在这种情况下有没有办法使用访问限制功能?我不知道如何从 Main 访问这个参数,这是一个不同的代理。
提前感谢您的帮助!
【问题讨论】:
您的客运代理中是否有一个名为wantToSit
的变量?您得到的错误是因为变量不存在。编写代码时使用完整的代码来获取可用参数。如果是动态参数,它将在变量末尾添加()
。
是的,Passenger Agent 内部有一个名为wantToSit
的静态变量,默认值为randomTrue(0.8)
。它肯定存在,因为一个函数是基于这个值工作的。我猜的问题是从多边形节点所在的主代理页面访问这个变量。
为什么将变量设为静态?这是一项高级功能,除非您知道其影响,否则不应使用。你确定这个变量是公开的吗?请展示你得到的自动代码完成
我已经用图片编辑了问题 - 见上文。
【参考方案1】:
如果您在输入任何内容之前在条件字段中执行代码完成操作,您将看到在条件字段中可供您使用的局部变量是agent
和self
然后,如果您选择 agent
,您将看到自定义行人代理中的字段将变为可用。
尽量不要在没有完整代码的情况下键入任何内容。它可以为您节省大量时间。
【讨论】:
以上是关于Anylogic - 使用特定参数限制行人的访问的主要内容,如果未能解决你的问题,请参考以下文章