Title: | Plotting Methods for 'simmer' |
---|---|
Description: | A set of plotting methods for 'simmer' trajectories and simulations. |
Authors: | Iñaki Ucar [aut, cph, cre] , Bart Smeets [aut, cph] |
Maintainer: | Iñaki Ucar <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.1.18.1 |
Built: | 2024-11-07 05:43:36 UTC |
Source: | https://github.com/r-simmer/simmer.plot |
A set of plotting methods for simmer trajectories and simulations.
Iñaki Ucar, Bart Smeets
simmer's homepage https://r-simmer.org and GitHub repository https://github.com/r-simmer/simmer.plot.
Replacements for get_mon_arrivals
,
get_mon_attributes
and
get_mon_resources
.
These versions just add a new class (arrivals
, attributes
or
resources
respectively) to the resulting data frame.
get_mon_arrivals(...) get_mon_attributes(...) get_mon_resources(...)
get_mon_arrivals(...) get_mon_attributes(...) get_mon_resources(...)
... |
see |
Returns a data frame of class arrivals
, attributes
or
resources
.
simmer
Monitoring StatisticsMethods for the plot
generic. See below for details about each
metric available.
## S3 method for class 'arrivals' plot(x, metric = c("activity_time", "waiting_time", "flow_time"), ...) ## S3 method for class 'attributes' plot(x, metric = NULL, keys, ...) ## S3 method for class 'resources' plot(x, metric = c("usage", "utilization"), names, items = c("queue", "server", "system"), steps = FALSE, limits = TRUE, ...)
## S3 method for class 'arrivals' plot(x, metric = c("activity_time", "waiting_time", "flow_time"), ...) ## S3 method for class 'attributes' plot(x, metric = NULL, keys, ...) ## S3 method for class 'resources' plot(x, metric = c("usage", "utilization"), names, items = c("queue", "server", "system"), steps = FALSE, limits = TRUE, ...)
x |
a data frame of class |
metric |
specific metric to compute. |
... |
unused. |
keys |
attributes to plot (if left empty, all attributes are shown). |
names |
resources to plot (if left empty, all resources are shown). |
items |
( |
steps |
( |
limits |
( |
The S3 method for 'arrivals' provides three metrics: "activity_time"
,
"waiting_time"
, and "flow_time"
. The "activity_time"
is
the amount of time spent in active state (i.e., in timeout
activities),
and it is already provided in the output of get_mon_arrivals
. The
"flow_time"
is the amount of time spent in the system, and it is
computed as follows: flow = end_time - start_time
. Finally, the
"waiting_time"
is the amount of time spent waiting (e.g., in resources'
queues, or due to a wait
activity...), and it is computed as follows:
waiting_time = flow_time - activity_time
. This method does not apply
any summary, but just shows a line plot of the values throughout the simulation.
The S3 method for 'attributes' does not support any metric. It simply shows a stairstep graph of the values throughout the simulation for the keys provided (or all the collected attributes if no key is provided).
The S3 method for 'resources' provides two metrics: "usage"
and "utilization"
. The "usage"
metric shows a line graph of
the cumulative average resource usage throughout the simulation, for each
resource, replication and item (by default, queue, server and system, which
is the sum of queue and server). If steps=TRUE
, a stairstep graph with
the instantaneous values is provided instead. The "utilization"
metric
shows a bar plot of the average resource utilization (total time in use
divided by the total simulation time). For multiple replications, the bar
represents the median, and the error bars represent the quartiles. Thus, if
a single replication is provided, the bar and the error bar coincide.
Returns a ggplot2 object.
t0 <- trajectory("my trajectory") %>% ## add an intake activity seize("nurse", 1) %>% timeout(function() rnorm(1, 15)) %>% release("nurse", 1) %>% ## add a consultation activity seize("doctor", 1) %>% timeout(function() rnorm(1, 20)) %>% release("doctor", 1) %>% ## add a planning activity seize("administration", 1) %>% timeout(function() rnorm(1, 5)) %>% release("administration", 1) env <- simmer("SuperDuperSim") %>% add_resource("nurse", 1) %>% add_resource("doctor", 2) %>% add_resource("administration", 1) %>% add_generator("patient", t0, function() rnorm(1, 10, 2)) %>% run(until=80) resources <- get_mon_resources(env) arrivals <- get_mon_arrivals(env) plot(resources, metric="usage", "doctor", items = "server", steps = TRUE) plot(resources, metric="utilization", c("nurse", "doctor", "administration")) plot(arrivals, metric="waiting_time")
t0 <- trajectory("my trajectory") %>% ## add an intake activity seize("nurse", 1) %>% timeout(function() rnorm(1, 15)) %>% release("nurse", 1) %>% ## add a consultation activity seize("doctor", 1) %>% timeout(function() rnorm(1, 20)) %>% release("doctor", 1) %>% ## add a planning activity seize("administration", 1) %>% timeout(function() rnorm(1, 5)) %>% release("administration", 1) env <- simmer("SuperDuperSim") %>% add_resource("nurse", 1) %>% add_resource("doctor", 2) %>% add_resource("administration", 1) %>% add_generator("patient", t0, function() rnorm(1, 10, 2)) %>% run(until=80) resources <- get_mon_resources(env) arrivals <- get_mon_arrivals(env) plot(resources, metric="usage", "doctor", items = "server", steps = TRUE) plot(resources, metric="utilization", c("nurse", "doctor", "administration")) plot(arrivals, metric="waiting_time")
trajectory
ObjectsA method for the plot
generic that plots a diagram of the given trajectory.
## S3 method for class 'trajectory' plot(x, engine = "dot", fill = scales::brewer_pal("qual"), verbose = FALSE, ...)
## S3 method for class 'trajectory' plot(x, engine = "dot", fill = scales::brewer_pal("qual"), verbose = FALSE, ...)
x |
a simmer trajectory. |
engine |
a string specifying a layout engine (see |
fill |
discrete color palette for resource identification. |
verbose |
show additional info directly in the labels. |
... |
additional parameters for |
Returns an htmlwidget
.
x <- trajectory() %>% seize("res", 1) %>% timeout(1) %>% release("res", 1) %>% rollback(3) plot(x)
x <- trajectory() %>% seize("res", 1) %>% timeout(1) %>% release("res", 1) %>% rollback(3) plot(x)