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

Simmer中delayed_release_selected报错:no resource selected求助

解决Simmer中delayed_release_selected报错的问题

错误原因

你遇到的no resource selected报错,核心问题是**delayed_release_selected的task参数使用错误**:该参数要求传入一个轨迹对象(trajectory),而非数值。你传入task = 1会导致函数无法识别执行逻辑,进而丢失选中资源的上下文,触发报错。

修正方案(按需求选择)

方案1:先执行冷却任务再释放资源

如果你的需求是在释放资源前完成冷却(冷却期间资源仍被占用),只需将task参数改为合法的轨迹对象即可:

arrive <- c(1:5) 

traj <- trajectory("traj") %>%
  simmer::select(resource = c("dedicated_resource","pooled_resource"), policy = "first-available") %>%
  seize_selected(amount = 1) %>%
  timeout(1) %>% # 服务处理时间
  # 将task改为包含冷却逻辑的轨迹
  delayed_release_selected(task = trajectory() %>% timeout(1))

sim <- simmer("sim") %>%
  add_generator("cust", traj, at(arrive), mon = 2) %>%
  add_resource("dedicated_resource", 2) %>%
  add_resource("pooled_resource", 2)

sim %>% run(until = 800)

方案2:释放资源后再让服务器冷却(冷却期间服务器不可用)

如果你的需求是资源释放后,服务器需要冷却一段时间才能再次接收任务,需要通过动态调整资源容量实现:

arrive <- c(1:5) 

traj <- trajectory("traj") %>%
  simmer::select(resource = c("dedicated_resource","pooled_resource"), policy = "first-available") %>%
  seize_selected(amount = 1) %>%
  timeout(1) %>% # 服务处理时间
  release_selected(amount = 1) %>%
  # 临时降低选中资源的容量(减少可用服务器数量)
  set_capacity(selected = TRUE, value = function() {
    get_capacity(env, get_selected(env)) - 1
  }) %>%
  timeout(1) %>% # 冷却时长
  # 恢复资源容量
  set_capacity(selected = TRUE, value = function() {
    get_capacity(env, get_selected(env)) + 1
  })

sim <- simmer("sim") %>%
  add_generator("cust", traj, at(arrive), mon = 2) %>%
  add_resource("dedicated_resource", 2) %>%
  add_resource("pooled_resource", 2)

sim %>% run(until = 800)

说明

  • 方案1的逻辑是:服务完成后先执行冷却任务,再释放资源,冷却期间该资源实例处于占用状态。
  • 方案2的逻辑是:服务完成后立即释放资源,然后将该资源的可用容量临时减1,冷却结束后恢复容量,实现服务器冷却效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:32:32