Netlogo:重复具有不同值的代码

Netlogo: repeat code with different values

我的问题是关于 netlogo 的。

我的变量每次大于某个值时都必须更改。但是代码有点长,只有阈值发生变化。

有没有办法只纠正一次此代码并从列表中选择号码。 就像第一次通过代码一样,它第二次使用第一个列表编号,第二次等。

这是我需要的代码:

if Low-amount > 0.025 * number-of-companies and generationL = 1 [
    set generationL generationL + 1
    set Low-multiplier Low-multiplier * 0.8 ]
if medium-amount > 0.025 * number-of-companies and generationm = 1 [
    set generationm generationm + 1
    set Medium-multiplier Medium-multiplier * 0.8 ]
if high-amount > 0.025 * number-of-companies and generationh = 1 [
    set generationh generationh + 1
    set high-multiplier High-multiplier * 0.8 ]

唯一改变的是阈值变量 0.025 变为 0.125 0.25 0.5 0.75 和 1 以及 if 中的生成变量。

我宁愿不要将这段代码写 6 次,尽管它花费的时间不多,但看起来很丑,而且可以更容易地完成。 我查看了 foreach 和 map 但找不到正确的方法。

我用 foreach 找到了它。代码现在看起来像这样

(foreach [0.025 0.16 0.5 0.84 1] [1 2 3 4 5] [0.8 0.64 0.512 0.4096 0.32768] [ [a b c] ->
  if Low-amount > a * count companies with [t-needed = "low"] and generationL = b [
    set generationL generationL + 1
    set Low-multiplier c ] 
  if medium-amount > a * number-of-companies and generationm = b [
    set generationm generationm + 1
    set Medium-multiplier c ]
  if high-amount > a * number-of-companies and generationh = b [
    set generationh generationh + 1
    set high-multiplier c ]
])