You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic中如何通过节点位置检测修改行人agent的position变量

实现方法

你可以通过追踪agent位置判断所处节点状态,进而修改内置变量,具体操作如下:

步骤1:选择变量更新触发方式

二选一即可:

  • 写入行人智能体的状态图动作:适合位置变动伴随明确状态跳转的场景
  • 写入主模型的循环事件:设置合理的执行间隔(如0.5秒/次),满足实时检测需求

步骤2:写入赋值逻辑

如果是对单个行人赋值,直接在行人智能体内写入以下代码:

// 初始默认值
position = "None";
// 判断是否在绿色节点内
if (nodeGreen.contains(getX(), getY())) {
    position = "Green";
} 
// 判断是否在红色节点内
else if (nodeRed.contains(getX(), getY())) {
    position = "Red";
}

如果是在主模型层批量更新所有行人的position变量,用遍历写法:

for (Pedestrian ped : getPeds()) {
    ped.position = "None";
    if (nodeGreen.contains(ped.getX(), ped.getY())) {
        ped.position = "Green";
    } else if (nodeRed.contains(ped.getX(), ped.getY())) {
        ped.position = "Red";
    }
}

补充说明

你找到的nodeGreen.getPeds(),p->node.contains(p.getX(),p.getY())是用于过滤指定节点内行人群的语法,不需要用这套逻辑实现你的需求,直接调用节点的contains()方法判断坐标即可,逻辑更简洁。


内容的提问来源于stack exchange,提问作者Peter B-S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:06:03