jakdot/pyactr

Finst spans

Opened this issue · 0 comments

pyactr seems to lack a mechanism for finst timeouts in VisualLocation and DecMemBuffer.

Vanilla ACT-R allows you to set not just the number of finsts for each of these buffers, but also a time span after which a chunk will no longer bear a finst (i.e. will no longer be tracked as a recent attended location or retrieved chunk). See the :visual-finst-span parameter for the vision module described on p. 364 of the current manual, or the :declarative-finst-span parameter for the declarative module described on p. 300.

As far as I can tell, finsts are tracked in pyactr by adding any new or modified chunks to the VisualLocation.recent and DecMemBuffer.recent deques, and popping the oldest member when the finst number (e.g. VisualLocation.__finst) is exceeded. To implement finst spans, given that pyactr already tracks the time of addition/last modification for each chunk in VisualLocation and DecMemBuffer (right?), one simple way would just be to adjust x.recent by comparing the time-lapse and this span parameter everywhere x.recent might be queried (e.g. in DecMemBuffer.retrieve(), VisualLocation.find() and a few other methods in VisualLocation).

Of course, it seems debatable whether finsts should indeed time-out, but separately from the modeling question, it would be practically useful to have this functionality in pyactr for comparability with existing ACT-R models.