Sistem dinamiklerinde ‘stocks’ olarak anılan her bir düğüm artış ve azalışa hazir olan bir olgudan başka bir şey değildir. Örneğin stock nüfus olduğunda nüfus için ‘inflow’ doğumlar, ‘outflow’ ölümlerdir. Amaç diyelim ki bugün nüfusunu bildiğimiz bir yerde 10 sene sonraki nüfusu hesaplamaktır. Bu hesaplama yapılırken elbette elimizde nüfusun nasıl artacağına dair bir fonksiyon olmalıdır. Bu fonksiyon literatürden veya uzmanlıktan gelen bir fonksiyon olabilir.
Girdilerimiz 1970 yılındaki nüfus: 3.7 milyar, artış oranımız: 0.01801. Başka bir şey yok. aux parametremize artış oranını, 1970 yılındaki nüfüsu sCustomers değişkenimize atadık. START<-1970; FINISH<-2008; STEP<-0.25 zaten kendi kendini açıklıyor. Daha sonra her yıl çeyreklik bazda (step) nüfus artışını ve grafikleri ortaya çıkarıyoruz.
Sistem dinamikleri elbette bundan ibaret değil. Malthus modeli gibi modellerin çıktılarını başka bir modele örneğin artan nüfusa göre gıda ihtiyacı fonksiyonuna bağlayarak fonkisyonlardan oluşan bir network yaratarak simülasyonlar yapıyoruz.
library(scales)
# Setup simulation times and time step
START<-1970; FINISH<-2008; STEP<-0.25
# Create time vector
simtime <- seq(START, FINISH, by=STEP)
Kademeli olarak çeyreklik bazda (0.25) yılları arttırdık
#Stock ve Aux değerlerini atadık. Müşteri sayısı 10.000
# Create stock and auxs
stocks <- c(sCustomers=3712000000)
auxs <- c(aGrowthFraction=0.018021)
Model basit bir fonksiyondur.
# Model function
model <- function(time, stocks, auxs){
with(as.list(c(stocks, auxs)),{
#Denklem: fRecruits işe değerimiz müşteri sayısı ile artış katsayısı
#çarpımı kadardır
fRecruits<-sCustomers*aGrowthFraction
# Inflow
dC_dt <- fRecruits
return (list(c(dC_dt),
Recruits=fRecruits,
GF=aGrowthFraction))
})
}
# Modeli ve değerleri Düzenli Difereansiyel Denkleme Sokalım
# Run simulation
o<-data.frame(ode(y=stocks, times=simtime, func = model,
parms=auxs, method="euler"))