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