マルコフ連鎖の使用を考えたことがありますか?これは、事実上「確率的セルラーオートマトン」であり、それにより、望ましいランダム性を提供します。既存の世代のローカルネイバーに関して新しい世代を処方する代わりに、新しい世代の確率分布を指定します。その分布は、たとえば、同じまたは類似の領域の画像の時系列から推定できます。
直観的には、このモデルは、セルが必ずしも森林から非森林(またはその逆)に移行するとは限らないが、移行を行う可能性はその周囲の土地被覆に依存することを示しています。複数のクラスのカバー、近隣の複雑な構成を処理でき、土地被覆進化の最近の歴史を「記憶」するように一般化することもできます。
遷移は、マップ代数演算ステートメントを使用して実装できます。これにより、セルレベルのデータに直接または迅速にアクセスできない場合でも、この方法をあらゆるラスターベースのGISで実行できます。Rを使用すると、さらに簡単になります。
たとえば、白と黒の2つのクラスのみを持つこの初期構成を考えてみましょう。
何が起こり得るかを説明するために、確率1-q ^ kで黒への遷移が発生するパラメーター化モデル(データに基づいていない)を作成しました。ここで、kは3 x 3近傍内の黒セルの平均数(k = 0、1 / 9、2 / 9、...、1)。qが小さいか、近傍のほとんどが既に黒の場合、新しいセルは黒になります。以下は、0.25から0.05までの5つのqの値に対する第10世代の4つの独立したシミュレーションです。
明らかに、このモデルにはCAの多くの特性がありますが、代替結果を探索するのに役立つランダム効果も含まれています。
コード
以下は、のシミュレーションを実装していますR
。
#
# Make a transition from state `x` using a kernel having `k.ft` as
# its Fourier transform.
#
transition <- function(x, k.ft, q=0.1) {
k <- zapsmall(Re(fft(k.ft * fft(x), inverse=TRUE))) / length(x)
matrix(runif(length(k)) > q^k, nrow=nrow(k))
}
#
# Create the zeroth generation and the fft of a transition kernel.
#
n.row <- 2^7 # FFT is best with powers of 2
n.col <- 2^7
kernel <- matrix(0, nrow=n.row, ncol=n.col)
kernel[1:3, 1:3] <- 1/9
kernel.f <- fft(kernel)
set.seed(17)
x <- matrix(sample(c(0,1), n.row*n.col, replace=TRUE, prob=c(599, 1)), n.row)
#
# Prepare to run multiple simulations.
#
y.list <- list()
parameters <- c(.25, .2, .15, .1, .05)
#
# Perform and benchmark the simulations.
#
i <- 0
system.time({
for (q in parameters) {
y <- x
for (generation in 1:10) {
y <- transition(y, kernel.f, q)
}
y.list[[i <- i+1]] <- y
}
})
#
# Display the results.
#
par(mfrow=c(1,length(parameters)))
invisible(sapply(1:length(parameters),
function(i) image(y.list[[i]],
col=c("White", "Black"),
main=parameters[i])))
raster
まだパッケージを見ましたか?ラスター(noo、rly?)データを操作するためのツールがたくさんあります。