【发布时间】:2021-10-18 11:44:39
【问题描述】:
我是一名工科学生,作为毕业论文的一部分,我正在使用 Anylogic Pedestrian Library 模拟地铁中的乘客换乘过程。
在模拟中,经常会出现站立的乘客“离开”站立区域并以某种方式进入座位的情况,从而挡住了其他想要占用座位的行人的去路。
所有乘客都来自客运代理,他们有一个布尔变量 wantToSit。如果 wantToSit = false,他们会被引导到站立区域,如果 wantToSit = true,他们会去就座。
现在,我想通过座位组周围的多边形节点来限制wantToSit = false的peds进入淹死区域,这样就不会出现上面写的现象,只有坐着的乘客才会进入这个区域。
但是,当我尝试在多边形节点中定义访问限制条件时,我总是收到错误“...无法解析为变量”。
在多边形节点所在的代理“主”上,自动代码完成不建议为 want 或 ped. 提供任何内容。 Passenger这个词见下图:
在这种情况下有没有办法使用访问限制功能?我不知道如何从 Main 访问这个参数,这是一个不同的代理。
提前感谢您的帮助!
【问题讨论】:
-
您的客运代理中是否有一个名为
wantToSit的变量?您得到的错误是因为变量不存在。编写代码时使用完整的代码来获取可用参数。如果是动态参数,它将在变量末尾添加()。 -
是的,Passenger Agent 内部有一个名为
wantToSit的静态变量,默认值为randomTrue(0.8)。它肯定存在,因为一个函数是基于这个值工作的。我猜的问题是从多边形节点所在的主代理页面访问这个变量。 -
为什么将变量设为静态?这是一项高级功能,除非您知道其影响,否则不应使用。你确定这个变量是公开的吗?请展示你得到的自动代码完成
-
我已经用图片编辑了问题 - 见上文。
标签: conditional-statements simulation anylogic restriction