私は単に機械修理システムをモデル化したいだけです。入力: ダウン イベントをトリガーする 5 台のマシン、ダウン イベントを処理する 2 人の修理工
注: マシンがダウンしている (障害が原因で動作していない) 場合、マシンは既にダウン/破損しているため、add_generator 関数は「ダウン イベント」を生成しません (したがって、ダウン イベントを生成することはできません!)。
これまでの私の簡単なアプローチは次のとおりです(機能しますが、上記の制限はありません):
```
library(simmer)
set.seed(42)
env <- simmer("andi_simu") %>% add_global("cnt",0)
env
cnt<-0
NUM_MACHINES<-6 # equals: max. number of down machines! (obviously)
BREAK_MEAN<-1/20 # 20 = MTTF
NUM_ENGINEERS<-3
REPAIR_TIME<-1.3 # in hours
engineers <- paste0("engineer", 1:NUM_ENGINEERS-1)
downevent <- trajectory("downevents' path") %>%
## add an intake activity
select(engineers, policy = "random") %>%
set_attribute("start_time", function() {now(env)}) %>%
seize_selected(1) %>%
log_(function() {paste("Waited: ", now(env) - get_attribute(env, "start_time"))}) %>%
timeout(function() rexp(1,REPAIR_TIME)) %>%
release_selected(1)
for (i in engineers) env %>%
add_resource(i, 1, 0) #, preemptive = TRUE) %>%
env %>%
add_generator("downevent",downevent,function() rexp(1,BREAK_MEAN*NUM_MACHINES))
env %>%
run(80) %>%
now()
result <-
env %>%
get_mon_arrivals() %>%
transform(waiting_time = end_time - start_time - activity_time)
print(paste("Mean waiting time: ", mean(result$waiting_time)))
```
それを行う方法のすべてのヒントをいただければ幸いです! ありがとう、アンドレアス