R Crowd模拟个人行为

时间:2015-01-20 00:02:28

标签: r simulation

当我执行人群模拟时,所有点都开始进入建议的点击点(对代码进行处理)。然而,点(人们离开房间)开始跨越其他点,这根据我的例外情况不应该发生。

以下是代码:

dimensionX=10
dimensionY=10
numberPeople=20
velocity=0.001
varianzavelocidad=runif(1, min=0, max=5)
x<-dimensionX*runif(numberPeople)
y<-dimensionY*runif(numberPeople)
plot(x,y,xlim=c(0,dimensionX),ylim=c(0,dimensionY))
for(i in 1:10000) {
    for(j in 1:numberPeople) {
        ang <- atan((y[j]-5)/(10-x[j]))
        x[j]<-x[j]+velocity*varianzavelocidad*cos(ang)
        y[j]<-y[j]-velocity*varianzavelocidad*sin(ang)
    }
    x[x>10]=10
    plot(x,y,xlim=c(0,dimensionX),ylim=c(0,dimensionY)) 
}

我的想法是我应该使用J数组中的If()/ Else()条件,但是我不知道如何读取每个J对象并设置一个条件,如果点/点试图跳过另一个点/点它会比较试图跳过的点之间的强度值。 我想如何使其发挥作用的线索:

dimensionX=10
dimensionY=10
numberPeople=20
velocity=0.001
strength=runit(1)   *******
varianzavelocidad=runif(1, min=0, max=5)
x<-dimensionX*runif(numberPeople)
y<-dimensionY*runif(numberPeople)
plot(x,y,xlim=c(0,dimensionX),ylim=c(0,dimensionY))
for(i in 1:10000) {
    for(j in 1:numberPeople) {
       ang <- atan((y[j]-5)/(10-x[j]))
       x[j]<-x[j]+velocity*varianzavelocidad*cos(ang)
       y[j]<-y[j]-velocity*varianzavelocidad*sin(ang)
    }
if(X[j1] = X[J2] && Y[J1] = Y[J2]) {
 //MAKE THE DOTS CHOOSE BETWEEN THE STRONGEST //using strength value
} else() { they keep on going }
    x[x>10]=10
    plot(x,y,xlim=c(0,dimensionX),ylim=c(0,dimensionY)) 
}

我尝试过下载foreach函数,但老实说还没有找到正确使用它的方法。有什么想法吗?

0 个答案:

没有答案