15.04.2013 Aufrufe

Aufgabe - Zentrum Mensch-Maschine-Systeme

Aufgabe - Zentrum Mensch-Maschine-Systeme

Aufgabe - Zentrum Mensch-Maschine-Systeme

MEHR ANZEIGEN
WENIGER ANZEIGEN

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)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!