2017-06-26 12 views
0

軌道内のリソース容量をキュー長の関数として変更できるようにしたい。simmer:内部軌跡関数からリソースを読み込む

以下の(簡略化された)コードは機能しません。 - 私は、関数の内部get_mon_resources(simStore)を呼び出そうとすると、エラーでコードがクラッシュ:

Error in run_(private$sim_obj, until) : 
    Expecting a single value: [extent=0]. 

はあなたの助けをいただき、ありがとうございます。書かれたが、下図のように、他のパッケージ(lubridate)マスクは「煮る」からオブジェクトということです問題の原因は何https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/simmer-devel/NgIikOpHpss

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 

答えて

0

ここで、この問題のトラブルシューティングに関連する議論を参照してください

Attaching package: ‘lubridate’ 
The following objects are masked from ‘package:simmer’: 
     now, rollback 
私は012で

library(simmer); library(lubridate); 

を交換したら

library(lubridate); library(simmer); 

問題は消えました。

関連する問題