我正在尝试使用 R 对代理网格进行建模,这些代理网格会根据直接邻近的其他代理的决定来改变他们的决定。基本上,每个智能体都会在网格上查看他周围的其他智能体,并且可能会根据他周围的动作改变其行为。我在下面包含了一些示例 dinky-toy 代码来显示(一次迭代)这种动态。
我想知道是否
有一种优雅的方式来处理网格的边界(目前 t+1, i+1 代码在边缘上不起作用),
或者是否有其他方法使用矩阵的“空间”维度/使用基于图形的方法来模拟这类模型?
NCols=10
NRows=10
df=round(matrix(runif(NCols*NRows), ncol=NCols),0); df
t=1;i=1
for(i in 1:(nrow(df)-1)){
for(t in 1:(ncol(df)-1)){
prox=sum(df[t+1,i]+df[t+1,i-1]+df[t+1,i+1]+df[t,i]+df[t,i-1]+df[t,i+1]+df[t-1,i]+df[t-1,i-1]+df[t-1,i+1])
if(prox<=3) {df[t,i]=0} else {df[t,i]=1}
}
}
df