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

时间:2017-12-13 21:05:27

标签: netlogo

我的问题是关于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,但找不到正确的方法。

1 个答案:

答案 0 :(得分:1)

我发现了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 ]
])