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

基于Road Traffic Library:停车控制四路交叉口延误测量起始点调整问询

调整四路交叉口停车控制的车辆延误测量逻辑(从减速至40km/h开始计时)

嘿,这个需求其实在AnyLogic的Road Traffic Library里很好实现,核心就是精准捕捉车辆降到40km/h的时间点,然后调整计时触发逻辑就行,我给你拆解下具体步骤:

1. 先给车辆加个“计时标记”(推荐自定义车辆Agent)

如果你现在用的是默认的Vehicle,建议先创建一个自定义Agent(比如叫MyVehicle)继承自Vehicle——这样方便我们加自己的变量和逻辑,不用改基础库的东西。
在这个自定义Agent里加两个东西:

  • 布尔变量 boolean isDelayMeasurementStarted = false; :用来标记这辆车是不是已经启动延误计时了,避免重复触发
  • (可选)如果不用AnyLogic自带的timeMeasure模块的自动存储,也可以加个double delayStartTime用来存开始计时的时间戳

2. 监测车速,触发计时开始

有两种靠谱的方式来捕捉车速降到40km/h的瞬间:

方式一:用车辆自带的速度变化事件

这是最省心的方式,因为AnyLogic的Vehicle本身就有onSpeedChange事件——每次车速变了都会触发它。

  • 打开自定义车辆Agent的「事件」面板,添加onSpeedChange事件
  • 在事件的代码框里写:
// 先把40km/h转换成AnyLogic用的m/s(因为getSpeed()返回的是米每秒)
double targetSpeed = 40 / 3.6;
// 当车速降到目标值以下,且还没启动计时的时候,触发开始
if (getSpeed() <= targetSpeed && !isDelayMeasurementStarted) {
    timeMeasureStart(this); // 这里的timeMeasureStart是你模型里已经放好的模块,确保能引用到
    isDelayMeasurementStarted = true;
}

方式二:用周期性事件监测(更灵活)

如果需要加额外判断条件(比如只监测交叉口前一段道路的车速),可以用这个方式:

  • 在自定义车辆Agent里加一个周期性事件,周期设0.1秒就行(足够频繁,又不会太占性能)
  • 事件代码里写:
double targetSpeed = 40 / 3.6;
if (getSpeed() <= targetSpeed && !isDelayMeasurementStarted) {
    timeMeasureStart(this);
    isDelayMeasurementStarted = true;
    // 一旦触发计时,就把这个监测事件停了,省资源
    this.getEvent("speedMonitorEvent").stop();
}

(注意把speedMonitorEvent改成你给这个周期性事件起的名字)

3. 保留原有的计时结束逻辑

计时结束还是和你原来一样:当车辆驶出交叉口的时候(比如用道路的onVehicleExit事件,或者在交叉口出口处加触发逻辑),调用timeMeasureEnd(this)就可以了——这样就能算出从减速到驶出的延误时长。

4. 处理特殊情况

别忘了考虑一些边缘场景:

  • 车辆没减速直接通过:这种车的isDelayMeasurementStarted会一直是false,计时不会启动。如果你想把这类车的延误记为0,可以在结束计时的逻辑里加个判断:
if (!isDelayMeasurementStarted) {
    // 这里可以直接往数据集里加0,或者根据需求跳过记录
    delayData.add(0.0);
} else {
    timeMeasureEnd(this);
}
  • 车辆多次减速到40km/h:因为我们有isDelayMeasurementStarted的标记,只会触发一次计时,不会重复启动。

5. 测试验证

跑模型的时候,可以加个简单的仪表盘或者数据显示,看看isDelayMeasurementStarted的状态,以及记录的延误数据,确保逻辑是按预期触发的~

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:52:49