我有问题的括号放置和ifelse和让命令在网络徽标。
我有很多关于斑块的不同条件--自己的(envi)和海龟自己的(生态位-选择,生态位范围)变量,这些变量决定了一个局部变量(多个),然后被用来确定繁殖的概率。
海龟有一个可变的生态位选择,如果这与补丁变量envi相匹配,则局部变量multi1。
如果生态位-opt != envi但envi在生态位-opt +-生态位范围内(海龟变量,整数范围为1- 3),则多= 0.8。
最后,如果envi是外部生态位-选择+-生态位范围,那么多= 0.2。
因此,局部变量“多重”可以是三个值(1,0.8或0.2)之一,然后与海龟自己的变量(特质-2)相乘,用来确定孵化发生的概率。
我的问题是,在代码行中:
if random-float 100 < (multi * trait-2 * 100)
找出"nothing named“错误。我确信问题与我的括号放置有关,因为let创建了一个局部变量,但我不知道我是否需要添加更多的括号,或者只是移动我拥有的方括号。
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
发布于 2016-09-04 13:16:24
使用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
未测试.
https://stackoverflow.com/questions/39313446
复制相似问题