[ACT-R-users] Novice help on ACT-R's functionality
db30 at andrew.cmu.edu
db30 at andrew.cmu.edu
Tue Jun 29 09:59:27 EDT 2010
--On Tuesday, June 29, 2010 1:58 PM +0530 Vinay Chilukuri
<vinay.chilukuri at gmail.com> wrote:
> Hello all,
> I have recently discovered ACT-R. I have been reading about this
> wonderful tool and trying out some basic models on my own.
> I understand that ACT-R is a theory in cognition and also that it can
> be used to model behavioral experiments.
>
The first suggestion I would have is that if you have not yet read
the ACT-R tutorial and worked through the models that come with it
to do so. The texts and models are included with the software in
the tutorial directory of the distribution and the unit texts are
also available as PDFs from the ACT-R web site at:
<http://act-r.psy.cmu.edu/actr6/>
In particular, unit 1 introduces the basics of using declarative
memory and units 4 and 5 cover the details of the activation equation
for chunks.
> My question is:
> 1) Given some knowledge in the declarative memory, can I retrieve the
> information when queried upon?
> If yes, how can I query it?
>
> Specifically,
> my experiment consisted of assessing recall of a movie-stimulus and
> the questions that were posed to the participants were Open-Ended.
> Eg: "Describe what happened in Jack's apartment?"; "Why did Jack had
> to stop on his way to the restaurant?"
> I intend to describe the events of the movie as chunks. Each event
> would be characterized by a set of attributes/slots.
>
> Though I think it is quite a challenge to query the model in the same
> way as was done with the experiment, I would like to know how an ACT-R
> model can be queried.
>
I'm not sure I understand exactly what you want to know. The basic
answer of how to retrieve information from declarative memory would
be to make a request through the retrieval buffer. That request
would be done with a "+retrieval" action in a production and would look
something like this with the appropriate details included:
(p get-fact
=goal>
isa retrieve-fact
...
==>
+retrieval>
isa movie-fact
...
)
If instead you're asking how you would form the request to get the
specific information as indicated then that is going to depend a lot
on how you have represented the information and which sorts of
activation effects (partial matching and spreading activation in
particular) you feel are appropriate for the task. So, I can't really
offer any suggestions about that without knowing more details.
Finally, if the question is how do you pose the question to the model
to be answered, then again, that depends a lot on exactly how you want
to represent the task. One way would be to just set a particular goal
chunk which has the details of the question in it as the starting point
for the model (the fan model from unit 5 of the tutorial would be an
example of something like that). Alternatively, you could have the
model read the question from the screen or hear it and then also model
the internal deliberation of converting that to appropriate requests
of declarative memory.
> 2) Also, is there a way of adding chunks to the model's declarative
> memory at a specific time duration?
>
Yes, there are essentially two ways to set the creation time for a
chunk.
The first would be to do just as you ask -- add it to the model's
declarative memory at the time you want it created. Here are two
ways to accomplish that. First you could advance the clock to the
desired time and then add it explicitly in code which might look
something like this in a function to create the chunks for a movie
at times of 600 seconds and 1100 seconds (assuming this was called at
time 0 seconds otherwise it would be 600 and 1100 seconds from the
current time):
(defun add-movie-chunks ()
;;; advance the clock 600 seconds
(run-full-time 600)
;;; add a chunk
(add-dm (isa movie-fact ...))
;;; do that again
(run-full-time 500)
(add-dm (isa movie-fact ...))
;;; more as necessary
...)
Alternatively, you can schedule an event to occur at a particular time
to add the chunk and then it will be added when the model gets to that
point in time while it is running. Here's a function which would
schedule two events to add chunks at times 600 and 1100 explicitly:
(defun add-movie-chunks-2 ()
(schedule-event 600 (lambda () (add-dm (isa movie-fact ...))))
(schedule-event 1100 (lambda () (add-dm (isa movie-fact ...)))))
The other way to change the creation time of a chunk would be to
use the sdp command to change the chunk's parameters and directly set
the creation time. The creation time is set with the :creation-time
parameter. Thus, this would change the creation time of the chunk
named fact-1 to be at time 600 seconds:
(sdp fact-1 :creation-time 600)
Those ACT-R commands: run-full-time, add-dm, schedule-event, and sdp
are described in the experiment discussion texts of the tutorial and
in the reference manual which is in the docs directory of the
software distribution.
Hope that helps, and if you have other questions or problems feel
free to ask,
Dan
More information about the ACT-R-users
mailing list