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 ]
])
我的问题是关于 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 ]
])