netlogo中整个列表的随机泊松值

时间:2018-12-28 12:16:01

标签: loops random netlogo poisson agent-based-modeling

我有称为“订单”的代理商 在这些代理中,有许多设备作为属性。根据每个设备的使用年限,一定数量的设备会根据随机泊松过程而损坏。例如:

订单具有以下属性:

  • 已安装的设备数(已安装的数量)
  • 损坏的设备数量(损坏的数量)
  • 此时间段内损坏的设备数量(今年已损坏)
  • 按此顺序排列的设备年龄(订购年龄)
  • 该订单的平均寿命(平均寿命)

我找到了几种方法,以列表方式使用过滤器来实现此目的:

ask orders [
    let broken-list n-values amount-installed [random-poisson order-age]
    set broken-list filter [s -> s >= average-lifespan] broken-list
    set broken-this-year length broken-list
    set amount-installed amount-installed - broken-this-year
    set amount-broken amount-broken + broken-this-year
]

我发现实现此目标的另一种方法是使用while循环方法:

 ask orders [
    while [amount-checked < amount-installed] [
      if random-poisson order-age >= average-lifespan [
        set broken-this-year broken-this-year + 1
      ]
      set amount-checked amount-checked + 1
    ]
    set amount-installed amount-installed - broken-this-year
    set amount-broken amount-broken + broken-this-year
]

因此,应该有许多已安装的设备出现故障,而许多设备仍在工作。但是,每个订单都包含数千个设备,并且在我的模型中有数百个订单。因此,此过程要花很长时间才能达到计算机死机的程度。必须有一种无需使用循环方法即可获得相同结果的方法。有谁知道更好的方法来解决这个问题?

0 个答案:

没有答案