Je veux être en mesure de modifier la capacité des ressources à l'intérieur de la trajectoire en fonction de la longueur de la file d'attente.laisser mijoter: lire les ressources des fonctions à l'intérieur trajectoire
Le code suivant (simplifié) ne fonctionne pas au-dessous. - Quand je tente d'appeler get_mon_resources(simStore)
dans la fonction, le code se bloque avec l'erreur:
Error in run_(private$sim_obj, until) :
Expecting a single value: [extent=0].
Merci pour votre aide.
simStore <- simmer()
fUpdateNumberOfCashiers <- function() {
dtLastRes <- simStore %>% get_mon_resources %>% tail(1)
nCapacityNow <- dtLastRes$capacity # same result with get_capacity(simStore),
nQueueNow <- dtLastRes$queue # same result with get_queue_count(simStore)
print(dtLastRes) # prints empty data-frame !
return (5) # crashes here ! (eventually 5 will be replaced with more meaningful formula
}
trajClient <- trajectory("Client's path") %>%
log_("Arrived to cashier") %>%
set_capacity("Cashier", value = fUpdateNumberOfCashiers) %>%
seize("Cashier") %>%
timeout(function() {rexp(1, 30)}) %>% # One Cashier processes 30 clients/hour
release("Cashier") %>%
log_(function(attr) { sprintf("In total spent %.2f", now(simStore) - attr["start_time"])})
simStore <- simmer("Store") %>%
add_resource("Cashier", 1) %>%
add_generator("Store Clients", trajClient, function() {rexp(1, 120)}) %>% # 120 clients/hour
run(until=nHoursObserved <- 1) ; simStore