- 昨日の続き
- 種類として「隣り合った」虫」の動きは似ている、という制約を入れることを考える
- 多型のアレルで言えば、交叉の起きにくさ(連鎖不平衡の起源)
- こちらで、「連(連続したもの)」を考慮した0,1配列の発生を書いた。それを適用して、昨日のソースを改変したのが以下のソース
Nx<-100
Nm<-100
Nt<-100
A<-array(0,c(Nx,Nm,Nt))
Xrange<-(Nx/2-10):(Nx/2+10)
st<-sample(Xrange,Nm,replace=TRUE)
end<-sample(Xrange,Nm,replace=TRUE)
for(i in 1:Nm){
A[st[i]:end[i],i,1]<-1
}
image(A[,,1])
LoL<-0.3*Nm
UpL<-0.7*Nm
S<-apply(A[,,1],1,sum)
dead<-((S<=LoL) + ( S>=UpL))
A[which(dead==1),,1]<-0
image(A[,,1])
fcross<-0.2
for(i in 2:Nt){
A[,,i]<-A[,,i-1]
for(j in 1:Nx){
pre<-j-1
post<-j+1
if(pre<1)pre<-Nx
if(post>Nx)post<-1
rrr<-sample(c(-1,1),Nm,replace=TRUE,prob=c(fcross,1-fcross))
rrr<-cumprod(rrr)
rrr<-(rrr+1)/2
for(k in 1:Nm){
if(A[j,k,i]==0){
if(A[pre,k,i-1]==1 || A[post,k,i-1]==1){
A[j,k,i]<-rrr[k]
}
}
}
}
S<-apply(A[,,i],1,sum)
dead<-((S<=LoL) + ( S>=UpL))
A[which(dead==1),,i]<-0
image(A[,,i])
}
for(i in 1:Nt){
filenum=10000+i
filename=paste("test",filenum,".jpeg",sep="")
jpeg(file=filename)
image(A[,,i])
dev.off()
}