diff --git a/07_final_assignment/baboonSimulation.R b/07_final_assignment/baboonSimulation.R index c8ab5b7..4f8ba82 100644 --- a/07_final_assignment/baboonSimulation.R +++ b/07_final_assignment/baboonSimulation.R @@ -192,7 +192,7 @@ }) MakeMonkey <- function(cueset, outcomeset=c("Word", "Nonword"), - alpha=sqrt(0.001), beta=sqrt(0.001), lambda=1.0){ + alpha=sqrt(0.001), beta=sqrt(0.001), lambda=1.0, randomRatio=0.2){ weights <- matrix(0, length(cueset), length(outcomeset)) rownames(weights) <- cueset colnames(weights) <- outcomeset @@ -205,8 +205,11 @@ maxActivated <- names(totalActivation[totalActivation == max(totalActivation)]) return(RandomPick(maxActivated,1)) } + randomLearner <- function(stim,resp){ + c("Word","Nonword")[sample(1:2,1)] + } - learner <- function(stim, resp){ + realLearner <- function(stim, resp){ cues <- unlist(strsplit(stim, "_")) cueWeights <- weights[cues, outcomeset] @@ -227,7 +230,16 @@ weights[cues[j],noType] <<- weights[cues[j],noType] + alpha * beta * (0 - totalActivation[noType]) } - return(rate(stim)) + monkeyGuess <- rate(stim) + return(monkeyGuess) + } + + learner <- function(stim, resp) { + if( runif(1) < randomRatio ){ + randomLearner(stim,resp) + } else { + realLearner(stim,resp) + } } give_weights <- function(){ @@ -240,17 +252,6 @@ Rate=rate)) } -################################################ -#TODO @David: Insert in right place. -#replace get.real.guess() by the Monkey's guess. - -#randomly pick a guess in 50% of the cases -monkeyGuess = get.real.guess() -if(isTRUE(all.equal(1,sample(1:2, 1)))) { - monkeyGuess = ifelse(isTRUE(all.equal(1,sample(1:2, 1))), "Word", "Nonword") -} -################################################ - test_that("MakeMonkey",{ cueset <- c("a","b","c") @@ -279,8 +280,8 @@ list(cues=cues,outcomes=outcomes,dat=dat) } -runSim <- function(data, trialCount, alpha, beta, lambda) { - monkey <- MakeMonkey(data$cues, data$outcomes, alpha, beta, lambda=1.0) +runSim <- function(data, trialCount, alpha, beta, lambda=1, randomRatio) { + monkey <- MakeMonkey(data$cues, data$outcomes, alpha, beta, lambda=lambda, randomRatio=randomRatio) trialNum <- round(trialCount) pres <- PresentTrials( trialNum, @@ -308,8 +309,8 @@ nonwordAcc) } -simulateAndAnalyse <- function(data, trialCount, alpha=sqrt(0.001), beta=sqrt(0.001)){ - p <- runSim(data, trialCount, alpha, beta, lambda=1) +simulateAndAnalyse <- function(data, trialCount, alpha=sqrt(0.001), beta=sqrt(0.001), randomRatio=0.2){ + p <- runSim(data, trialCount, alpha, beta, lambda=1, randomRatio) analyseSim(p) } @@ -391,7 +392,7 @@ write.table(resultdat, file=filename, col.names=names(resultdat)) trialCount <- 50000 - + r <- 0.5 for(index in 1:monkeys.per.core) { a = get.a(i, index) @@ -399,10 +400,10 @@ resultdat = read.table(filename) if(print.iterations) { - print(paste("--running-- i: ", i, " a: ", a, " b: ", b, sep="" )) + print(paste("--running-- i: ", i, " a: ", a, " b: ", b, " r: ", r, sep="" )) } - s <- simulateAndAnalyse(data, trialCount, alpha=a, beta=b) + s <- simulateAndAnalyse(data, trialCount, alpha=a, beta=b, randomRatio=r ) s[1] <- as.character(trialCount) resultdat <- rbind(resultdat, c(a, b, s[2:length(s)])) @@ -485,4 +486,4 @@ -# EOF \ No newline at end of file +# EOF