首页 > 解决方案 > 按属性划分的 Simmer plot 资源使用情况

问题描述

是否可以在 simmer 中按属性绘制资源使用情况?因此,例如在这个模拟中:

library(simmer)
library(simmer.plot)

workerCount <- 2

actualData <- data.frame(
  time = c(1:10,1:5), priority = 1:3, service = rnorm(150, 50, 5)) %>%
  dplyr::arrange(time)

actualData$gender<-floor(runif(150, min=1, max=3))

actualData

activityTraj <- trajectory() %>%
  seize('worker') %>%
  timeout_from_attribute("service") %>%
  release('worker')

env <- simmer() %>%
  add_resource('worker', workerCount, Inf, preemptive = TRUE) %>%
  add_dataframe('worker_', activityTraj, actualData, mon=2, col_time="time", time="absolute", col_attributes=c("gender","service")) %>%
  run()


plot(get_mon_attributes(env), keys="gender", metric="usage")

生成的图显示了性别随时间的变化,但不显示资源使用情况。plot.attributes 的文档说:

“属性”的 S3 方法不支持任何指标。它只是显示了整个模拟过程中所提供键的值的阶梯图(如果没有提供键,则显示所有收集的属性)。

目前有什么方法可以按属性绘制资源使用情况?

感谢您的任何建议。

标签: rsimulationevent-simulation

解决方案


您可以从到达表中获取每个资源的服务和等待时间get_mon_arrivals(env, per_resource=TRUE)。然后,从属性表中获取 name<->gender 对应关系get_mon_attributes(env),加入表,最后使用时间序列按性别重建服务器使用情况。但这有点挑战性。可行,但需要一些工作。

我会根据该属性增加/减少一些辅助全局变量,以保持计数。


推荐阅读