Я пытаюсь использовать R для моделирования сетей агентов, которые меняют свои решения на основе решений других агентов, находящихся в непосредственной близости от них. По сути, каждый агент смотрит на других агентов вокруг него в сетке и может изменять свое поведение в зависимости от действий вокруг него. Я включил пример кода игрушечной игрушки, как показано ниже, чтобы показать (одну итерацию) такой динамики.
Мне интересно, есть ли
существует элегантный способ обращения к границам сетки (в настоящее время код 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