Skip to content

Commit 9b33809

Browse files
committed
v0.4.1
将reset写进了dcay_func 将Q0写进了lrng_func 简化了主循环的逻辑
1 parent 103d9f1 commit 9b33809

14 files changed

Lines changed: 105 additions & 80 deletions

R/func_alpha.R

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
#'
66
#' @param shown
77
#' Which options shown in this trial.
8-
#' @param first
9-
#' Is it the first time pick this option?
8+
#' @param is.fp
9+
#' Is it the first time picking this option?
1010
#' @param qvalue
1111
#' The expected Q values of different behaviors produced by different systems
1212
#' when updated to this trial.
@@ -88,7 +88,7 @@
8888
#' @section Body:
8989
#' \preformatted{func_alpha <- function(
9090
#' shown,
91-
#' first,
91+
#' is.fp,
9292
#' qvalue,
9393
#' reward,
9494
#' utility,
@@ -156,7 +156,7 @@
156156
#'
157157
func_alpha <- function(
158158
shown,
159-
first,
159+
is.fp,
160160
qvalue,
161161
reward,
162162
utility,
@@ -181,11 +181,11 @@ func_alpha <- function(
181181
alphaN <- params[["alphaN"]]
182182
alphaP <- params[["alphaP"]]
183183

184-
if (is.nan(Q0) && first) {
184+
if (is.nan(Q0) && is.fp) {
185185
update <- utility
186186
hidden[1] <- "first"
187187
return(list(output = update, hidden = hidden))
188-
}
188+
}
189189

190190
# Determine the model currently in use based on which parameters are free.
191191
if (

R/func_zeta.R

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#'
66
#' @param shown
77
#' Which options shown in this trial.
8+
#' @param is.nb
9+
#' Is it the new block?
810
#' @param value0
911
#' The initial values for all actions.
1012
#' @param values
@@ -106,7 +108,15 @@
106108
#'
107109
#' zeta <- params[["zeta"]]
108110
#' bonus <- params[["bonus"]]
109-
#'
111+
#' reset <- params[["reset"]]
112+
#'
113+
#' # If reset all Q values
114+
#' if (is.nb && !is.na(reset)) {
115+
#' decay <- rep(reset, length(values))
116+
#' hidden[6] <- "reset"
117+
#' return(list(output = decay, hidden = hidden))
118+
#' }
119+
#'
110120
#' if (reward == 0) {
111121
#' decay <- values + zeta * (value0 - values)
112122
#' } else if (reward < 0) {
@@ -121,6 +131,7 @@
121131
#'
122132
func_zeta <- function(
123133
shown,
134+
is.nb,
124135
value0,
125136
values,
126137
reward,
@@ -143,7 +154,15 @@ func_zeta <- function(
143154

144155
zeta <- params[["zeta"]]
145156
bonus <- params[["bonus"]]
157+
reset <- params[["reset"]]
146158

159+
# If reset all Q values
160+
if (is.nb && !is.na(reset)) {
161+
decay <- rep(reset, length(values))
162+
hidden[6] <- "reset"
163+
return(list(output = decay, hidden = hidden))
164+
}
165+
147166
if (reward == 0) {
148167
decay <- values + zeta * (value0 - values)
149168
} else if (reward < 0) {

R/process_4_output.R

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -237,33 +237,21 @@ process_4_output_r <- function(
237237
hidden[i + 1, ] <- util_results$hidden
238238

239239
# 判断是否需要重置:Block是否发生变化
240-
if (!is.nan(reset)) {
241-
is.nb <- trial[i] == 1
242-
} else {
243-
is.nb <- FALSE
244-
}
245-
240+
is.nb <- trial[i] == 1
246241
# 检查此时是否是第一次选(全局第一次 or 局部第一次, 都算)
247242
is.fp <- count[i, latent[i, ]] == 0
248243

249244
# 多系统更新价值
250245
for (sub_system in system) {
251-
sub_value <- value[[sub_system]]
252246

253-
# 是否在进入新block时重置
254-
if (is.nb) {
255-
cur_value <- rep(reset, length(sub_value[i, ]))
256-
Qi <- reset
257-
} else {
258-
cur_value <- sub_value[i, ]
259-
Qi <- sub_value[i, latent[i, ]]
260-
}
247+
sub_value <- value[[sub_system]]
261248

262249
# 工作记忆容量有限导致未被选择选项的价值衰减
263250
dcay_results <- dcay_func(
264251
shown = shown[i, ],
252+
is.nb = is.nb,
265253
value0 = sub_value[1, ],
266-
values = cur_value,
254+
values = sub_value[i, ],
267255
reward = as.numeric(reward[i, ]),
268256
utility = as.numeric(utility[i, ]),
269257
system = sub_system,
@@ -282,13 +270,17 @@ process_4_output_r <- function(
282270
hidden[i, ] <- dcay_results$hidden
283271
hidden[i + 1, ] <- dcay_results$hidden
284272

285-
# 当使用dcay_func设定初始值(Q0 = NA_real_)需要从事实第一行读取初始值.
286-
if (is.nb) {Qi = sub_value[i + 1, latent[i, ]]}
273+
# 从当前行读取Qi
274+
Qi = sub_value[i, latent[i, ]]
275+
# 如果是新block, 且reset是NA_real而非NaN, 则Qi从新block第一试次读取.
276+
if (is.nb && is.na(reset) && !is.nan(reset)) {
277+
Qi = sub_value[i + 1, latent[i, ]]
278+
}
287279

288280
# learning rate function: 如果不是第一次选, 则按照学习率方程更新
289281
lrng_results <- lrng_func(
290282
shown = shown[i, ],
291-
first = is.fp,
283+
is.fp = is.fp,
292284
qvalue = Qi,
293285
reward = as.numeric(reward[i, ]),
294286
utility = as.numeric(utility[i, ]),
@@ -318,7 +310,7 @@ process_4_output_r <- function(
318310
}
319311

320312
# 如果需要重置, 且进入了新block, 则计数器也要归零
321-
if (is.nb) {
313+
if (is.nb && is.nan(reset)) {
322314
count[i + 1, ] <- 0
323315
} else {
324316
count[i + 1, ] <- count[i, ]

docs/articles/Step_1_run_m.html

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/pkgdown.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ articles:
88
Step_2_rcv_d: Step_2_rcv_d.html
99
Step_3_fit_p: Step_3_fit_p.html
1010
Step_4_rpl_e: Step_4_rpl_e.html
11-
last_built: 2026-04-20T14:40Z
11+
last_built: 2026-04-21T06:17Z
1212
urls:
1313
reference: https://yuki-961004.github.io/multiRL/reference
1414
article: https://yuki-961004.github.io/multiRL/articles

docs/reference/func_alpha.html

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/func_zeta.html

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/run_m.html

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/search.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

man/func_alpha.Rd

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)