我特别喜欢"植绒" Netlogo的模型。我想要的是选择一个代理并查看是否有任何其他代理用于所选代理的下三个补丁。我想在代理周围检查它,所以我将获得矩阵形式的数据并将其保存在excel / cvs文件。
答案 0 :(得分:1)
不幸的是,我没有给你一个确定的答案,但我想你会想要做某种事情:
globals
[ output_matrix]
patches-own
[occupied?]
to setup
clear-all
reset-ticks
create-turtles 50
set output_matrix []
end
to go
move
tick
end
to move
ask turtles [set heading random-float 361 forward random-float 2 ]
ask patches with [count turtles-here > 0] [set occupied? 1]
ask patches with [count turtles-here = 0] [set occupied? 0]
check_surroundings
end
to check_surroundings
ask turtles [ ifelse any? turtles-on patch-ahead 1
[set output_matrix lput 1 output_matrix]
[set output_matrix lput 0 output_matrix]]
ask turtles [ ifelse any? turtles-on patch-ahead 2
[set output_matrix lput 1 output_matrix]
[set output_matrix lput 0 output_matrix]]
ask turtles [ ifelse any? turtles-on patch-ahead 3
[set output_matrix lput 1 output_matrix]
[set output_matrix lput 0 output_matrix]]
end
这将为您提供2个选项。 1你可以使用行为空间输入完整的补丁列表,每次打勾到一个文件(你在行为空间中指定),每个补丁用一个简单的0或1来表示它是否被占用。第二个选项是使用这个创建的output_matrix列表(不确定你的最终游戏是什么)。这将为每个蜱每个海龟提供一系列三个0和1(如果你想估计聚合如何形成随着时间的推移,这可能会更有用)。
您可能还想查看output-print和file-open / file-close原语
我确定如果您生成一些示例代码,社区将能够进一步帮助您。
答案 1 :(得分:0)
globals [rpts] ;write your code to set global only once
to test
ca
set rpts moore-offsets 3
ask n-of 50 patches [sprout 1 [set color red]]
ask one-of turtles [
ask patches at-points rpts [set pcolor yellow]
print any? other turtles-on patches at-points rpts
]
end
to-report moore-offsets [#n] ;includes center ...
let _result []
let _xs n-values (1 + 2 * #n) [? - 3]
foreach _xs [
let _y ?
foreach _xs [
let _x ?
set _result lput (list _x _y) _result
]
]
report _result
end