Netlogo,要求代理人完成任务的汇总值

Netlogo, asking a rounded up value of agents to do a task

我试图在 NetLogo 中找到一个函数或方法,其中执行了一个值的舍入和舍入。有两个函数 n-of 和 up-to-n-of,但是,这两个函数都执行向下舍入(即 0.4 将导致 0,0.6 也将导致 0)。我想做的是,如果我得到的值为 0.4,则将其向下舍入 0,但如果我的值为 0.6,则将其向上舍入为 1。这在我的模型中是一个大问题,因为我得到的值介于 0 和 1 之间。

ask n-of (0.8 * (count pop-agents with [TS = 3 and Deceased? = False])) (pop-agents with [TS = 3 and 
Deceased? = False]) [
  set deceased? true
]

得到的结果有点像,问 n-of (0.94) [set Deceased? = 真]。所以在我的模型中从来没有人死过。 有没有一种简单的方法可以解决这个同时考虑四舍五入和四舍五入的问题。

您需要做的就是 round 值。您可以分两步完成,因此:

let target-num round (0.8 * (count pop-agents with [TS = 3 and not deceased?]))
ask n-of target-num (pop-agents with [TS = 3 and not deceased?]) [set deceased? true]

您也可以一步完成,只需将 round 放在当前代码的括号前即可。

此外,在 NetLogo 中,您可以只执行 not deceased? 而不是 deceased? = false。最后,我将您所有的 Deceased? 更改为 deceased? - 我不知道您使用的是哪种方式,但您需要保持一致,而您提供的代码不是。