simulate_RLF <- function(n_trials = 15,
alpha = 0.29,
beta = 24.1,
epsilon = 0.07,
ns = 2,
n_sims = 500) {
set.seed(42)
n_actions <- 3
results <- matrix(NA, nrow = n_sims, ncol = n_trials)
for (i in 1:n_sims) {
Q <- matrix(1/n_actions, nrow = ns, ncol = n_actions)
correct_actions <- sample(1:n_actions, ns, replace = TRUE)
stimulus_order <- rep(1:ns, n_trials)[order(runif(ns * n_trials))]
zaehler <- integer(ns)
for (t in seq_along(stimulus_order)) {
s <- stimulus_order[t]
zaehler[s] <- zaehler[s] + 1
if (zaehler[s] > n_trials) next
exp_Q <- exp(beta * Q[s, ])
probs <- exp_Q / sum(exp_Q)
choice <- sample(1:n_actions, 1, prob = probs)
reward<- as.numeric(choice == correct_actions[s])
results[i, zaehler[s]] <- reward
Q[s, choice] <- Q[s, choice] + alpha * (reward - Q[s, choice])
Q <- Q + epsilon * (1/n_actions - Q)
}
}
data.frame(
iterseq = 1:n_trials,
correct = colMeans(results, na.rm = TRUE),
ns = factor(ns)
)
}