我在支架放置和netlogo中的ifelse和let命令时遇到问题。
我有各种不同的条件,这些条件与确定局部变量(多个)的补丁 - 拥有(envi)和乌龟 - 自己(生态位选择,生态位范围)变量相关,然后将用于确定再生概率。
Turtles有一个变量niche-opt,如果这匹配patch变量envi那么局部变量multi = 1
如果niche-opt!= envi但envi在niche-opt + - niche-range范围内(turtle变量,整数范围从1到3)则multi = 0.8
最后,如果envi在niche-opt + - niche-range之外,那么multi = 0.2
所以局部变量" multi"可以是三个值中的一个(1,0.8或0.2),然后乘以海龟自己的变量(trait-2)并用于确定孵化发生的概率。
我的问题是在代码行中:
if random-float 100 < (multi * trait-2 * 100)
出现错误&#34;没有任何名为multi defined&#34;。我确定问题与我的支架放置有关,因为我创建了一个局部变量,但我无法弄清楚我是否需要添加更多括号或只是移动我拥有的那些。
to go
ask turtles [
reproduce
]
end
to reproduce
ifelse niche-opt = envi
[let multi 1]
[ifelse envi >= (niche-opt - niche-range) and envi <= (niche-opt + niche-range)
[let multi 0.8]
[let multi 0.2]
]
if random-float 100 < (multi * trait-2 * 100)
hatch 1
end
答案 0 :(得分:2)
使用ifelse-value
:
to reproduce
let multi ifelse-value (niche-opt = envi)[1] [
ifelse-value (envi >= (niche-opt - niche-range) and envi <= (niche-opt + niche-range)) [0.8][0.2]
]
if random-float 100 < (multi * trait-2 * 100) [hatch 1]
end
<强>未测试强>