diff --git a/07_final_assignment/.RData b/07_final_assignment/.RData index ea2c0c1..2e578aa 100644 --- a/07_final_assignment/.RData +++ b/07_final_assignment/.RData Binary files differ diff --git a/07_final_assignment/baboonSimulation.R b/07_final_assignment/baboonSimulation.R index 4e05fec..8292008 100644 --- a/07_final_assignment/baboonSimulation.R +++ b/07_final_assignment/baboonSimulation.R @@ -347,18 +347,18 @@ # Goal: Being able to run without a shared data structure # and thus avoiding conflicts with critical sections -print.iterations = FALSE #Note: Not meaningful for parallel execution, +print.iterations <- FALSE #Note: Not meaningful for parallel execution, #see http://blog.revolutionanalytics.com/2015/02/monitoring-progress-of-a-foreach-parallel-job.html #for a discussion -num.cores = 15 #Can NOT be changed without further code adjustment -monkeys.per.core = 8 #Can NOT be changed without further code adjustment +num.cores <- 15 #Can NOT be changed without further code adjustment +monkeys.per.core <- 8 #Can NOT be changed without further code adjustment -start.of.a.and.b = 0.001 #Can be changed with no further code adjustment -end.of.a.and.b = 0.300 #Can be changed with no further code adjustment +start.of.a.and.b <- 0.001 #Can be changed with no further code adjustment +end.of.a.and.b <- 0.300 #Can be changed with no further code adjustment -debug = TRUE +debug <- FALSE #8 experiments for each core, 15 cores @@ -386,8 +386,8 @@ } do.experiment <- function(i) { - resultdir <- "results" - dir.create(resultdir, showWarnings = FALSE) # dont show warning if dir exists + resultdir <- "results" + dir.create(resultdir, showWarnings = FALSE) # dont show warning if dir exists filename <- paste(resultdir, "/", "resultdat", i, ".txt", sep="") if(debug) { @@ -425,12 +425,12 @@ Sys.sleep(1) current.time = Sys.time() debug.frame = data.frame(alpha=a, beta=b, - Time=as.character(current.time), - NumWordsLearned=numeric(1), - NumNonwordsPresented=numeric(1), - GeneralAccuracy=numeric(1), - WordAccuracy=numeric(1), - NonwordAccuracy=numeric(1)) + Time=as.character(current.time), + NumWordsLearned=numeric(1), + NumNonwordsPresented=numeric(1), + GeneralAccuracy=numeric(1), + WordAccuracy=numeric(1), + NonwordAccuracy=numeric(1)) resultdat <- rbind(resultdat, debug.frame) @@ -442,7 +442,7 @@ c(a, b, s[2:length(s)])) } - + #write preliminary result to file -> in case of interruption nothing gets lost write.table(resultdat, file=filename, col.names=names(resultdat)) } @@ -466,62 +466,111 @@ ######################################################################################## -#### IGNORE THIS BLOCK -> used later for visualizing +#### VISUALIZATION & PLOTTING ######################################################################################## -if(FALSE) { - View(resultdat) +harvest.data <- function(write.to.file=FALSE) { + data = data.frame() + for(i in 1:num.cores) { + d <- read.table(paste("resultdat", i, ".txt", sep="")) + data <- rbind(data, d) + } + if(write.to.file) { + write.table(data, file="preliminary_results.txt", col.names=names(data)) + } + return(data) +} + + +get.index <- function(sequence, value) { + res <- logical(length(sequence)) + for(i in 1:length(sequence)) { + res[i] <- isTRUE(all.equal(sequence[i], value)) + } + return(which(res)) +} + + +get.matrix <- function(data, value, sequence) { + if(!any(names(data)==value)) { + stop("'value' needs to be part of the data.frame") + } + sequence <- round(sequence, 3) - res.matrix = matrix(nrow=length(a.seq), ncol=length(b.seq)) - counter = 1 - counter.a = 1 - for( a in a.seq) { - counter.b = 1 - for (b in b.seq) { - res.matrix[counter.a, counter.b] = as.numeric(resultdat[counter, ]$GeneralAccuracy) - counter = counter + 1 - counter.b = counter.b + 1 + z <- matrix(nrow=length(sequence), ncol=length(sequence)) + + for(i in 1:nrow(data)) { + + alpha <- round(data[i, ]$alpha, 3) + beta <- round(data[i, ]$beta, 3) + value <- data[i, ]$value + + a.index <- get.index(sequence, alpha) + b.index <- get.index(sequence, beta) + if(isTRUE(all.equal(length(a.index), 0)) || + isTRUE(all.equal(length(b.index), 0))){ + print("problem: ") + print(alpha) + print(beta) + stop("sequence must contain alpha and beta values") } - counter.a = counter.a + 1 + + z[a.index, b.index] <- data[i, ]$NumWordsLearned + z[b.index, a.index] <- data[i, ]$NumWordsLearned } - - View(res.matrix) - - # TODO: Durchlaufen lassen fuer ca 50k Trials fuer verschiedene alpha, beta zwischen 0 und 1 - # TODO: Plotten der verschiedenen Ergebnisse (num,acc) als heatmap 2d plot. - # TODO: Plotten der Unterschiede zu den Vorgabeaffen und optimale alpha beta fuer diese finden. - - #mat1 = matrix(rexp(200, rate=.1), ncol=50, nrow=50) - #mat2 = matrix(rexp(200, rate=.1), ncol=50, nrow=50) - - image.plot(res.matrix, main="Word Accuracy", xlab="alpha", ylab="beta", - useRaster=TRUE, col = topo.colors(100)) - - - View(m1) - - dat03 = data.frame() - for(i in 0:3) { - d = read.table(paste("resultdat", i, ".txt", sep="")) - d = d[-1, ] - dat03 = rbind(dat03, d) - } - View(dat03) - - write.table(dat03, file="preliminary_results.txt", col.names=names(dat03)) - - - - prelimdat = read.table("preliminary_resultsV2.txt") - View(prelimdat) - newrow = cbind(0.000001, 0.00001, monkeydat[65, 2:7]) - names(newrow)[1]= "alpha" - names(newrow)[2] = "beta" - prelimdat = rbind(prelimdat, newrow) - View(prelimdat) - write.table(prelimdat, file="preliminary_resultsV2.txt", col.names=names(dat03)) + return(z) } -# EOF +mat1 = matrix(rexp(15*15, rate=.1), ncol=15, nrow=15) + +conditions <- c("GeneralAccuracy", "WordAccuracy", "NonwordAccuracy") + +for(c in conditions) { + image.plot(x=sort(unique(aseq)), + y=sort(unique(aseq)), + z=get.matrix(data, "GeneralAccuracy", aseq), + #z = mat1, #alternative while results are not here yet + main=c, + xlab="alpha", + ylab="beta", + useRaster=TRUE, + col = topo.colors(100)) +} + + + +######################################################################################## +#### IGNORE THIS BLOCK -> unused code +######################################################################################## + + + +res.matrix = matrix(nrow=length(a.seq), ncol=length(b.seq)) +counter = 1 +counter.a = 1 +for( a in a.seq) { + counter.b = 1 + for (b in b.seq) { + res.matrix[counter.a, counter.b] = as.numeric(resultdat[counter, ]$GeneralAccuracy) + counter = counter + 1 + counter.b = counter.b + 1 + } + counter.a = counter.a + 1 +} + +View(res.matrix) + +# TODO: Durchlaufen lassen fuer ca 50k Trials fuer verschiedene alpha, beta zwischen 0 und 1 +# TODO: Plotten der verschiedenen Ergebnisse (num,acc) als heatmap 2d plot. +# TODO: Plotten der Unterschiede zu den Vorgabeaffen und optimale alpha beta fuer diese finden. + +mat1 = matrix(rexp(15*15, rate=.1), ncol=15, nrow=15) +#mat2 = matrix(rexp(200, rate=.1), ncol=50, nrow=50) + +image.plot(mat1, main="Word Accuracy", xlab="alpha", ylab="beta", + useRaster=TRUE, col = topo.colors(100)) + + +# EOF \ No newline at end of file