我正在尝试制作一个考古模型,在这个模型中,猎人们在避难所里画画,这取决于它们的质量。
breed [shelters shelter]
breed [hunters hunter]
shelters-own [quality paintings]在设置中设置每个遮蔽物质量的值(使用一个滑块表示遮蔽物的实际数量)。
create-shelters number-shelters [set quality random 100]然后,根据每个遮蔽物的质量随机定义是否喷漆的行为:
to make-painting
ask shelters [
if any? hunters-on patch-here [
if random 100 < quality [set paintings paintings + 1]
]
]
end现在,我想更复杂一点:质量不是由避难所本身定义的(因此对于每个猎人来说是相同的),而是由猎人定义的:他们每个人都会为每个避难所赋予不同的质量。绘画与否的行为仍然是对随机的测试,但是有了这个由每个个体猎人定义的新变量...
但我找不到一种方法把它写下来。
有没有人有建议?
发布于 2016-04-15 00:12:09
我想我做对了。基本上,我让每个猎人创建一个充满随机数的矩阵。它的大小是33x33,所以它遍及世界各地(必须将它设置为从一个角落开始,否则它将获得负坐标)。
create-hunters number-hunters [
set color white
set size 1
setxy random-xcor random-ycor
set hunter-matrix matrix:make-constant 33 33 random 10
]
ask n-of number-shelters patches [
sprout-shelters 1 [
set color one-of base-colors
set size 1
set xpatch xcor set ypatch ycor
]然后,当它们到达避难所时,对应于该补丁位置的值将被提取并用于绘制或不绘制。
ask patches [
ask hunters-here [set quality matrix:get hunter-matrix xpatch ypatch]
let paintings-here sum [paintings] of shelters-here
if any? hunters-here and any? shelters-here [
if random 10 < quality [
ask shelters-here [
set paintings paintings + 1]
]
]
]尽管如此,我仍然不能完全确定它是否真的做了我认为它正在做的事情。
https://stackoverflow.com/questions/36601377
复制相似问题