Netlogo 创建面片簇而不更改引用
我正在写一个只涉及补丁的Netlogo模型。我已经成功地创建了一个由6种不同颜色的斑块组成的景观(每种颜色代表我项目中的不同植被)。因此,每个斑块上出现红色斑块的概率为10%,黄色斑块为5%,棕色斑块为20%,依此类推 设置此概率的代码示例:Netlogo 创建面片簇而不更改引用,netlogo,Netlogo,我正在写一个只涉及补丁的Netlogo模型。我已经成功地创建了一个由6种不同颜色的斑块组成的景观(每种颜色代表我项目中的不同植被)。因此,每个斑块上出现红色斑块的概率为10%,黄色斑块为5%,棕色斑块为20%,依此类推 设置此概率的代码示例: let i random-float 1 ifelse i + random-float 0.1 <= 0.8 ;random 0.1 threshold for environmental noise [ set pco
let i random-float 1
ifelse i + random-float 0.1 <= 0.8 ;random 0.1 threshold for environmental noise
[ set pcolor green ]
[ ifelse i + random-float 0.1 <= 0.9
[ set pcolor yellow ]
[ set pcolor blue ] ]
让我随机浮动1
如果else i+随机浮动0.1你可以根据你的体重播种,然后围绕种子生长。这里有一种不同的方法:根据权重为所有面片上色,然后对颜色进行聚类
extensions [rnd] ;use the rnd extension
globals [threshold]
to setup
ca
set threshold 2
let _cw [[red 10] [yellow 20] [blue 70]] ;colors with weights
ask patches [set pcolor first rnd:weighted-one-of-list _cw [last ?]]
repeat 20 [cluster] ;adjust to taste
end
to cluster
ask patches [
if unhappy? [
swap-pcolor
]
]
end
to swap-pcolor
let _c pcolor
let _p one-of neighbors with [pcolor != [pcolor] of myself]
set pcolor [pcolor] of _p
ask _p [set pcolor _c]
end
to-report unhappy?
let _ct count neighbors with [pcolor = [pcolor] of myself]
report (_ct < threshold)
end
extensions[rnd];使用rnd扩展
全局[阈值]
设置
ca
设置阈值2
让[红色10][黄色20][蓝色70];带权重的颜色
询问修补程序[设置pcolor first rnd:加权列表之一_cw[最后?]]
重复20次[群集];适应口味
结束
群集
询问补丁[
如果不开心[
交换彩色
]
]
结束
调换颜色
让我们来看看颜色
让我们用[pcolor!=[pcolor]我自己的[pcolor]对一个邻居进行测试]
将pcolor[pcolor]设置为
ask_p[设置颜色]
结束
报喜?
让我们用[pcolor=[pcolor]自己的[pcolor]来计算邻居
报告(ct<阈值)
结束
你好,艾伦!非常感谢!除了嵌套列表部分,这对我来说基本上是有效的,在嵌套列表部分,我试图用另一个过程中计算的变量替换权重数。我读到我必须使用“列表”来创建一个带有变量的列表?但是我得到了一个错误“期望一个常数”…你可能知道如何解决这个问题吗?到目前为止我所尝试的让_cwlist(list brown x)[blue 0.2];x是上一步骤中设置的变量。Netlogo允许它,但我不能在观察者上下文中使用go。您的列表是正确的,但如果有两个以上的子列表,则需要括号。go
错误是另外一回事。这意味着您已经编写了go,以便它直接引用补丁(或turtle)变量,而不是要求补丁(或turtle)访问其属性,