Aufgabe - Zentrum Mensch-Maschine-Systeme
Aufgabe - Zentrum Mensch-Maschine-Systeme
Aufgabe - Zentrum Mensch-Maschine-Systeme
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
Modellierungsprojekt ACT-R/PM<br />
Teil 1 – Einstieg in die Modellierung in ACT-R/PM<br />
<strong>Aufgabe</strong>nstellung<br />
Für den D2-Drive-Aufmerksamkeitstest, den Sie bereits als GOMS-Modell abgebildet haben,<br />
sind in dem ACT-R/PM Modellierungsprojekt verschiedene Modelle zu entwickeln, die<br />
Micro-Strategien der Nutzer abbilden. Als Ausgangspunkt der eigenen Arbeiten dient ein im<br />
Anhang beigelegtes Modellfragment, dessen Abschnitte in diesem Dokument im Anschluss<br />
an die <strong>Aufgabe</strong>nstellung kurz erläutert werden.<br />
<strong>Aufgabe</strong> 1: Ergänzen Sie das Modell um eine Strategie zum Erkennen, ob das dargestellte<br />
Muster zur Klasse D2 gehört.<br />
<strong>Aufgabe</strong> 2: Ergänzen sie das Modell um eine Strategie zur Eingabe einer Antwort per<br />
Tastatur. Hierzu wird das Motor-Modul über den manual-buffer veranlasst eine Taste zu<br />
drücken:<br />
(P respond<br />
=goal><br />
…<br />
=manual-state><br />
ISA module-state<br />
modality free<br />
==><br />
+manual><br />
ISA press-key<br />
key =letter<br />
=goal><br />
…<br />
)<br />
<strong>Aufgabe</strong> 3: Ergänzen sie das Modell derart, dass es sowohl D2a als auch D2b bearbeiten kann<br />
<strong>Aufgabe</strong> 4 (optional): Ergänzen sie das Modell um Programmlogik zur Reaktion auf einen<br />
Tastendruck. Benutzen Sie dazu folgendes Fragment und das AGI Handbuch, dass Sie unter<br />
y:\musimms\doku\AGI.pdf finden.<br />
(defmethod rpm-window-key-event-handler ((win rpm-window)<br />
key)<br />
(setf *response* (string key))<br />
[ your code ...]<br />
(when *actr-enabled-p* (pm-proc-display)))<br />
Viel Erfolg<br />
Erläuterungen zum Modellfragment<br />
Das weiter zu entwickelnde Modell implementiert eine mögliche Strategie zum Ablesen der<br />
Information vom Bildschirm. Es besteht aus mehreren Abschnitten, die im Folgenden kurz<br />
erläutert werden. Der vollständige Modell-Code ist im Anhang beigefügt.
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
Steuerung des Experiments<br />
(defun xp () (let* ( … )))<br />
Mit diesem Abschnitt wird eine Funktion zur Ausführung des Experiments definiert. Die<br />
Funktion erzeugt zunächst die Elemente für ein ACT Graphical Interface (AGI), ein Fenster<br />
(open-exp-window) und die dazugehörigen Textelemente (add-text-to-expwindow).<br />
Das Ergebnis ist in Abbildung 1 dargestellt.<br />
Abbildung 1. AGI Fenster für den D2a<br />
Die anschließenden Zeilen dienen der Vorbereitung und dem Starten des Experiments.<br />
Eine weiterführende Beschreibung findet sich in der AGI-Dokumentation unter<br />
y:\musimms\doku\AGI.pdf<br />
Benutzermodell<br />
Allgemeine Modellparameter<br />
Zunächst werden Reste vorheriger Modelle gelöscht (clear-all) und das PM-System<br />
zurückgesetzt (pm-reset). Der Abschnitt (sgp :v t …) definiert verschiedene interne<br />
Parameter der ACT-R Laufzeitumgebung (Siehe auch y:\musimms\doku\ACT-<br />
R5parameters.pdf).<br />
(pm-set-params :show-focus t :real-time t) definiert schließlich, dass das<br />
System in Echtzeit bearbeitet werden soll und der Fokus der Aufmerksamkeit in dem mit der<br />
Funktion xp definierten Fenster angezeigt werden soll.<br />
Deklaratives Gedächtnis<br />
Dir Produktionen des Modells benötigen ein Gedächtniselement vom Typ read-pattern.<br />
Chunks dieses Typs enthalten slots zur Definition des Aufmerksamkeitsfokus (xstart xend<br />
ystart yend), welcher Teil des Musters gerade gelesen werden soll (part), welche Version des<br />
D2 bearbeitet wird (d2version), sowie eine Größe zur Steuerung der Bearbeitungssequenz<br />
(state).<br />
Mit dem Befehl (add-dm (goal isa read-pattern xstart 50 xend 60<br />
ystart 10 yend 20 part center state find d2version a)) wird dem<br />
Gedächtnis ein Element zugefügt, dass den Fokus auf die mittlere zeile (d oder p) des dritten<br />
Element setzt.<br />
Produktionen<br />
Das eigentliche Modell besteht aus fünf Produktionen:<br />
find-pattern: Richte den Fokus auf den mit xstart, xend, ystart und yend gegebenen<br />
Bereich, ändere state zu attending
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
attend-pattern: Richte Aufmerksamkeit auf den fokusierten Bereich, ändere state zu<br />
encode<br />
encode-pattern-center: Verarbeite wahrgenommenes Muster, richte den fokus auf<br />
den nächsten bereich, ändere state zu encode und part zu upper<br />
encode-pattern-upper: Verarbeite wahrgenommenes Muster, richte den fokus auf den<br />
nächsten bereich, ändere state zu encode und part zu lower<br />
encode-pattern-lower-d2version-a: Verarbeite wahrgenommenes Muster, richte<br />
den fokus auf den nächsten bereich, ändere state zu encode und part zu center<br />
Anfangsziel<br />
Das Ziel ist ein „beliebiges“ Element des deklarativen Gedächtnisses und wird mit der Zeile<br />
(goal-focus goal) gesetzt.<br />
Ablauf des Modells<br />
Starten und Ausführen des Modells<br />
1) ACT-R starten (Start Environment.exe)<br />
2) Über Kommandofenster das Modelle Laden oder Öffnen (Siehe<br />
y:\musimms\doku\EnvironmentManual.pdf)<br />
3) In Listenerfenster (xp) mit Klammern eingeben und per return-Taste abschicken<br />
Sequenz der Produktionsaufrufe<br />
Tabelle 1 zeigt das Muster des Ablaufs. Find-Pattern wird am Anfang ausgewählt,<br />
anschließend wiederholt sich eine Sequenz von Attend-Pattern / Encode-Pattern Paaren die<br />
durch den Inhalt des part-slots gesteuert werden. Nach Zeile 7 wiederholen sich die Zeile 2<br />
bis 7 bis das Programm beendet wird.<br />
Tabelle1 Sequenz der Ausführung von Produktionen.<br />
Lfd.Nr. Time Production<br />
1 0.050 Find-Pattern<br />
2 0.100 Attend-Pattern<br />
3 0.235 Encode-Pattern-Center<br />
4 0.285 Attend-Pattern<br />
5 0.420 Encode-Pattern-Upper<br />
6 0.470 Attend-Pattern<br />
7 0.555 Encode-Pattern-Lower-D2version-A<br />
9 0.655 Attend-Pattern Fired<br />
10 0.790 Encode-Pattern-Center Fired<br />
11 0.840 Attend-Pattern<br />
u.s.w.
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
Zustände des Goal Buffers<br />
In Abbildung 2 sind die verschiedenen Zustände des Zielbuffers vom Typ read-pattern<br />
dargestellt. Im Startzustand (schwarzer Kreis) ist der slot state mit find belegt, lediglich die<br />
Produktion find-pappern kann angewandt werden. Sie modifiziert den slot state auf attending,<br />
das schränkt die Auswahl der anwendbaren Produktionen auf attend-pattern ein. Attendpattern<br />
ändert state zu encode, das schränkt die Auswahl auf die drei Produktionen encodepattern-lower,<br />
encode-pattern-upper und encode-pattern-center ein (im Bild sind der<br />
übersichlichkeit halber nur encode-pattern-lower und encode-pattern-center eingezeichnet).<br />
Die Auswahl aus diesen dreien geschieht über die Belegung des slots part.<br />
Abbildung 2 Zustände des Zielbuffers read-pattern
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
Anhang 1 Modellfragment<br />
;;; xp creates the AGI window and triggers the execution of the user model<br />
(defun xp ()<br />
(let*<br />
;; open AGI window with title "D2-DIS a", height and with 150<br />
;; and store handle in symbol window<br />
((window (open-exp-window "D2-DIS a" :height 150 :width 150)))<br />
)<br />
)<br />
;; add 15 text elements<br />
(add-text-to-exp-window :text "''" :x 10 :y 0)<br />
(add-text-to-exp-window :text "d" :x 10 :y 10)<br />
(add-text-to-exp-window :text " " :x 10 :y 20)<br />
(add-text-to-exp-window :text " " :x 30 :y 0)<br />
(add-text-to-exp-window :text "p" :x 30 :y 10)<br />
(add-text-to-exp-window :text " " :x 30 :y 20)<br />
(add-text-to-exp-window :text "o" :x 50 :y 0)<br />
(add-text-to-exp-window :text "z" :x 50 :y 10)<br />
(add-text-to-exp-window :text "u" :x 50 :y 20)<br />
(add-text-to-exp-window :text " " :x 70 :y 0)<br />
(add-text-to-exp-window :text "p" :x 70 :y 10)<br />
(add-text-to-exp-window :text "''" :x 70 :y 20)<br />
(add-text-to-exp-window :text "''" :x 90 :y 10)<br />
(add-text-to-exp-window :text "p" :x 90 :y 20)<br />
(add-text-to-exp-window :text " " :x 90 :y 30)<br />
(reset) ;; reset subsymbolic layer of ACT-R/PM<br />
(pm-install-device window) ;; install window<br />
(pm-proc-display) ;; display installed window<br />
(pm-run 20) ;; run the model for 20 seconds<br />
(clear-all) ;; clear all previous productions and dm elements<br />
(pm-reset) ;; reset the pm system<br />
(sgp<br />
:v t ;;; be verbous, i.e. show traces as specified<br />
;:act t ;;; enable trace of computation of chunk activation<br />
;:pt t ;;; enable production trace<br />
;:gt t ;;; enable goal trace<br />
;:ct t ;;; enable chunk trace<br />
;:dmt t ;;; declaratve memory trace<br />
;:LF 0.05 ;;; Latency Factor<br />
:ESC t ;;; Enable Subsymbolic Computation<br />
:egs 0.1 ;;; expected gain noise<br />
;:AL 0.2 ;;; Associative Learning<br />
;:BLC 0.1<br />
;:EPL nil<br />
)<br />
(pm-set-params :show-focus t :real-time t)<br />
;;;;;;;;;;;;;;;;; to convert model to xml uncomment this line<br />
;; (load #p"y:/musimms/act-r-lu/lisp2xml.lisp")
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
(chunk-type read-pattern<br />
xstart ;; left border of region of interest<br />
xend ;; rigth border of region of interest<br />
ystart ;; upper border of region of interest<br />
yend ;; lower border of region of interest<br />
part ;; current part of the pattern (center, upper, lower)<br />
d2version ;; d2 version (a,b,c)<br />
state ;; current state of the sequence of action<br />
)<br />
;; declarative memory<br />
(add-dm<br />
;; our goal - we start at the center of the middle element<br />
(goal isa read-pattern xstart 50 xend 60 ystart 10 yend 20 part center<br />
state find d2version a)<br />
)<br />
;;;;;;;;;;;;;;;;;<br />
(P find-pattern ;; prepare to attend on center pattern<br />
=goal><br />
isa read-pattern<br />
state find<br />
xstart =xs<br />
xend =xe<br />
ystart =ys<br />
yend =ye<br />
==><br />
+visual-location><br />
isa visual-location<br />
screen-x (within =xs =xe)<br />
screen-y (within =ys =ye)<br />
=goal><br />
state attending<br />
)<br />
(P attend-pattern ;; attend to "found" visual-location<br />
=goal><br />
isa read-pattern<br />
state attending<br />
=visual-location> ;; if visual-location is there<br />
isa visual-location<br />
=visual-state> ;; if the visual system is free<br />
isa module-state<br />
modality free<br />
==><br />
=goal><br />
state encode<br />
+visual> ;; get object at that place<br />
isa visual-object<br />
screen-pos =visual-location<br />
)<br />
(P encode-pattern-center<br />
=goal><br />
isa read-pattern<br />
state encode<br />
part center<br />
xstart =xs<br />
xend =xe<br />
ystart =ys<br />
yend =ye<br />
=visual><br />
isa text<br />
value =text
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
==><br />
=goal><br />
state attending<br />
part upper<br />
!output! ( "encoded center part as ~A" =text )<br />
+visual-location><br />
isa visual-location<br />
screen-x (within =xs =xe)<br />
screen-y (within (- =ys 10) (- =ye 10))<br />
)<br />
(P encode-pattern-upper<br />
=goal><br />
isa read-pattern<br />
state encode<br />
part upper<br />
xstart =xs<br />
xend =xe<br />
ystart =ys<br />
yend =ye<br />
=visual><br />
isa text<br />
value =text<br />
==><br />
=goal><br />
state attending<br />
part lower<br />
!output! ( "encoded upper part as ~A" =text )<br />
+visual-location><br />
isa visual-location<br />
screen-x (within =xs =xe)<br />
screen-y (within (+ =ys 20) (+ =ye 20))<br />
)<br />
(P encode-pattern-lower-d2version-a<br />
=goal><br />
isa read-pattern<br />
state encode<br />
part lower<br />
d2version a<br />
xstart =xs<br />
xend =xe<br />
ystart =ys<br />
yend =ye<br />
=visual><br />
isa text<br />
value =text<br />
==><br />
=goal><br />
;; eigentlich state response, hier aber erst mal zum nächsten item<br />
state attending<br />
part center<br />
!output! ( "encoded lower part as ~A" =text )<br />
+visual-location><br />
isa visual-location<br />
screen-x (within =xs =xe)<br />
screen-y (within =ys =ye)<br />
)<br />
(P encode-pattern-lower-d2version-b<br />
=goal><br />
isa read-pattern<br />
state encode
Modellierung und Simulation in <strong>Mensch</strong>-<strong>Maschine</strong>-<strong>Systeme</strong>n II<br />
L. Urbas, 6.6.2005<br />
part lower<br />
d2version b<br />
xstart =xs<br />
xend =xe<br />
ystart =ys<br />
yend =ye<br />
=visual><br />
isa text<br />
value =text<br />
==><br />
=goal><br />
;; eigentlich state response, hier aber erst mal zum nächsten item<br />
state attending<br />
part center<br />
!output! ( "encoded lower part as ~A" =text )<br />
+visual-location><br />
isa visual-location<br />
screen-x (within (+ =xs 20) (+ =xe 20))<br />
screen-y (within =ys =ye)<br />
)<br />
(goal-focus goal)