Skip to content

Self-induced preemption fails #125

Closed
@Enchufa2

Description

@Enchufa2

Simple reprex:

library(simmer)

t <- trajectory() %>%
  seize("res") %>%
  set_capacity("res", function() get_capacity(env, "res")-1) %>%
  timeout(10) %>%
  release("res")

env <- simmer(verbose=TRUE) %>%
  add_resource("res", preemptive=TRUE) %>%
  add_generator("dummy", t, at(0))

run(env)
#>          0 | generator: dummy          |       new: dummy0         | 0
#>          0 |   arrival: dummy0         |  activity: Seize          | res, 1, 0 paths
#>          0 |  resource: res            |   arrival: dummy0         | SERVE
#>          0 |   arrival: dummy0         |  activity: SetCapacity    | res, 0x55d1919f9c08
#>          0 |  resource: res            |   arrival: dummy0         | PREEMPT
#>          0 |   arrival: dummy0         |  activity: Timeout        | 10
#>         10 |   arrival: dummy0         |  activity: Release        | res, 1
#>         10 |  resource: res            |   arrival: dummy0         | DEPART

By contrast,

library(simmer)

t1 <- trajectory() %>%
  seize("res") %>%
  timeout(10) %>%
  release("res")

t2 <- trajectory() %>%
  set_capacity("res", function() get_capacity(env, "res")-1)

env <- simmer(verbose=TRUE) %>%
  add_resource("res", preemptive=TRUE) %>%
  add_generator("dummy", t1, at(0)) %>%
  add_generator("other", t2, at(0))

run(env)
#>          0 | generator: dummy          |       new: dummy0         | 0
#>          0 | generator: other          |       new: other0         | 0
#>          0 |   arrival: dummy0         |  activity: Seize          | res, 1, 0 paths
#>          0 |  resource: res            |   arrival: dummy0         | SERVE
#>          0 |   arrival: dummy0         |  activity: Timeout        | 10
#>          0 |   arrival: other0         |  activity: SetCapacity    | res, 0x55da5a78a620
#>          0 |  resource: res            |   arrival: dummy0         | PREEMPT

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions