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

R语言simmer包rollback函数设置amount=3未按预期回退问题咨询

问题原因

  • rollback()的amount参数默认仅统计当前所在子轨迹内部的活动数量,不会跨层级统计父轨迹的活动。你写的rollback(amount=3)处于最内层的重启子轨迹中,该子轨迹一共只有3个活动:timeout(2)、log_("Restart")、rollback(3),回退3个活动会直接回到该子轨迹的起始位置,所以会反复执行重启逻辑。
  • 你设置了内层branch的continue=TRUE,且分支选择逻辑是50%概率走重启分支、50%概率跳过,所以你看到的重复打印Restart不是无限循环,是每次回退后重新触发分支选择,直到随机抽到跳过分支的概率才会继续往下走,这和你预期的回退到修复步骤的逻辑完全不符。
  • 你对回退计数的范围理解有误,branch本身会作为1个独立活动计入父轨迹的活动序列,你如果要从内层子轨迹回退到外层的修复步骤,需要把内层子轨迹的总长度、内层branch活动本身都计入回退数量,仅数外层的3个活动是不够的。

解决方法

两种方案二选一即可:

  1. 调整amount数值:以简单修复分支为例,要回退到Repair Simple步骤,需要把内层子轨迹的3个活动、内层branch本身、再加外层往前的3个活动都算进去,设置amount=7即可(复杂修复分支同理调整)。
  2. 更精准的方案是使用target参数指定回退目标:给你要回退到的活动设置唯一名称,直接指定回退到该活动,不需要手动计数,不容易出错,示例如下:
# 给Repair Simple对应的timeout设置名称
trajectory() %>%
  timeout(1, "simple_repair_start") %>%
  log_("Repair Simple") %>%
  # 中间逻辑省略
  # rollback直接指定target
  rollback(target = "simple_repair_start")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:45:04