如何使用pedSource的吸引子使行人出现在AreaNode

时间:2019-05-28 09:31:32

标签: anylogic

我正在研究地板的疏散项目,并希望从pedSource块创建行人分布。当我运行模拟时,这些行人将已经出现在一个区域中。我想在一个区域内获得固定数量的行人,而其余区域则分配给其他区域。

我使用所有位置(区域,区域1,区域2和办公室区域)收集了行人出现的区域。该事件由事件触发并使用延迟块触发。给定楼层的行人最大人数为100

Image of block flowchart

Image of floor layout plan

这是我尝试在行人出现在该区域的代码:

    allLocations.get(uniform_discr(0, allLocations.size()-1))

我希望办公室区域中固定有10个行人,并位于放置吸引子的位置,但是实际结果显示行人超过10个,并且不会出现在设置的吸引子上。

Image of actual result

1 个答案:

答案 0 :(得分:0)

根据in VS,将吸引子设置为行人的目标仅适用于 pedWait pedGoTo 区块(我实际上只能将其吸引到使用 pedWait ,而不是 pedGoTo )。因此,您无法使用初始位置或jumpTo()函数将代理直接初始化到吸引子上。

您有几种解决方法:

  1. 提取吸引子的x,y坐标,并使用类型 point(x,y)定义初始位置或jumpTo()的位置
  2. 与其使用(图形)吸引子,不如考虑直接通过代码定义点
  3. 使用很小的单个区域,而不是一个带有吸引子的大区域
  4. 在流程中使用pedWait块,并让行人“步行”到其初始位置。在开始疏散之前,请给模型短暂的时间,直到所有人都位于所需的位置为止。您还可以在此初始阶段以超快速模式运行模型,以使其几乎不可见。