(defvar *system-is-still-learning*) (defvar *style*) (defvar *done-time*) (defvar *block-size*) (defvar *jtb-hacked-block-number*) (defvar *current-focus*) (defvar *correct-category*) (defvar *last-guess*) (defvar *sims*) (defvar *ebrw-criterion*) (defvar *lax-criterion*) (defvar *strict-criterion*) (defvar *r-time*) (defvar *r-thresh*) (defvar *intercept*) (defvar *counter-thresh*) (defvar *runs*) (defvar *text*) (defvar *graphic*) (defparameter *v* nil) (defvar *overlay*) (defparameter *categories* '(category-a category-b)) (defparameter *egs* (/ 2.2 (sqrt 2))) (defparameter *noise* .55) (defparameter *experiment-1-patterns* '( (bri1 sat1 nil nil category-b) (bri2 sat2 nil nil category-a) (bri3 sat3 nil nil category-a) (bri4 sat4 nil nil category-a) (bri5 sat5 nil nil category-b) (bri6 sat6 nil nil category-a) (bri7 sat7 nil nil category-a) (bri8 sat8 nil nil category-b) (bri9 sat9 nil nil category-a) (bri10 sat10 nil nil category-b) (bri11 sat11 nil nil category-b) (bri12 sat12 nil nil category-b))) (defparameter *exp-data-catds13* '(0.78 0.709 0.962 0.66 0.841 0.748 0.64 0.834 0.834 0.697 0.779 1.007)) (defparameter *ebrw-data-catds13* '(0.766 0.741 0.985 0.706 0.837 0.753 0.692 0.827 0.786 0.684 0.71 1.003)) (defparameter *exp-learning-data-catds13* '(1.5 1.1 1.01 1.01 0.99 0.95 0.85 0.82 0.84 0.79 0.79 0.82 0.79 0.79 0.79 0.8 0.79 0.8 0.75 0.7 0.72 0.8 0.8 0.75 0.72 0.7 0.79 0.85 0.82 0.83)) (defparameter *ebrw-learning-data-catds13* '(1.530807395 1.129089376 0.998599864 0.934381944 0.896295089 0.871135396 0.853299997 0.840009816 0.829731288 0.821549619 0.814885651 0.809355047 0.804692835 0.800710465 0.797270151 0.794268889 0.791628148 0.789287021 0.787197553 0.785321474 0.783627879 0.782091537 0.780691651 0.779410926 0.778234862 0.777151213 0.776149566 0.775221011 0.774357879 0.773553536)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; This section contains the interface for the WWW using the ;;; ACT-R on the Web application by Elmar Schwarz (defvar *www-interface*) (setf *WWW-interface* '((:heading "Categorization Model of Nosofsky & Palmeri, 1997 Participant 3" 2) (:table) (:table) "Retrieval Time: " (:string :sy *r-time* .05) (:new-row) "Retrieval Threshold: " (:string :sy *r-thresh* 0.0) (:new-row) "Intercept Parameter: " (:string :sy *intercept* .25) (:new-row) "Counter Threshold: " (:string :sy *counter-thresh* 4) (:new-row) "Number of runs (1-20): " (:string :sy *runs* 1) (:table-end) (:table) (:checkbox "Trace (NOT recommended, see below)" :sy *v* nil) (:new-row) (:checkbox "Text output" :sy *text* t) (:new-row) (:checkbox "Graphic output" :sy *graphic* nil) (:new-row) (:checkbox "Show simulation and experiment data on one graph" :sy *overlay* nil) (:table-end) (:table-end) (:hidden :sy *categories* (category-a category-b)) (:hidden :sy *egs* 1.56) (:hidden :sy *noise* .55) (:hidden :sy *experiment-1-patterns* ((bri1 sat1 nil nil category-b) (bri2 sat2 nil nil category-a) (bri3 sat3 nil nil category-a) (bri4 sat4 nil nil category-a) (bri5 sat5 nil nil category-b) (bri6 sat6 nil nil category-a) (bri7 sat7 nil nil category-a) (bri8 sat8 nil nil category-b) (bri9 sat9 nil nil category-a) (bri10 sat10 nil nil category-b) (bri11 sat11 nil nil category-b) (bri12 sat12 nil nil category-b))) (:new-para) (:button "Show Experimental and EBRW Results" "(display-catds13 nil (list *exp-learning-data-catds13* *exp-data-catds13*) (list *ebrw-learning-data-catds13* *ebrw-data-catds13*) )") (:new-para) (:button "Run model" "(if (and (numberp *r-time*) (numberp *r-thresh*) (numberp *intercept*) (numberp *counter-thresh*) (numberp *runs*)) (display-catds13 (doit-1-catds13 (min 20 (max 1 *runs*)) *r-time* *r-thresh* *intercept* *counter-thresh*) (list *exp-learning-data-catds13* *exp-data-catds13*) (list *ebrw-learning-data-catds13* *ebrw-data-catds13*) ) ;(dolist (x *experiment-1-patterns*)(pprint x)) (format *standard-output* \"All parameters must be numbers~%\"))") (:reset "Default values") (:button "Production Rules" "(let ((prods (no-output (pp)))) (dolist (x prods) (pp-fct (list x)) (spp-fct (list x)) (format *standard-output* \"~%\")))") (:button "Chunk types" "(chunk-type)") (:button "Chunks" "(dm)") (:new-para) "TIME and SIZE:" (:new-para) "- It usually takes about 1 minute for 1 run of the model" (:new-line) "- The trace of 1 run is approximatly 2 MEGABYTES (1000 pages) in size" (:new-para))) ;(defun display-catds13 (model expri ebrw) ; ; (pprint model) ; (pprint expri) ; (pprint ebrw)) (defun display-catds13 (model experi ebrw) (when model (format *standard-output* "~%~%Parameters for run: (~S ~S ~S ~S ~S)~%" *r-time* *r-thresh* *intercept* *counter-thresh* (min 20 (max 1 *runs*)))) (when *text* (when model (format *standard-output* "~%~%ACT-R learning data:~%") (format *standard-output* "~%Block RT (sec.)~%") (dotimes (i 30) (format *standard-output* "~3s~10,3f~%" (* 5 (1+ i)) (nth i (car model)))) (format *standard-output* "~%~%ACT-R stimulus data:~%") (format *standard-output* "~%Stimulus RT (sec.)~%") (dotimes (i 12) (format *standard-output* "~3s~13,3f~%" (1+ i) (nth i (cadr model)))) (format *standard-output* "~%")) (when (or (null model) *overlay*) (format *standard-output* "~%~%EBRW learning data:~%") (format *standard-output* "~%Block RT (sec.)~%") (dotimes (i 30) (format *standard-output* "~3s~10,3f~%" (* 5 (1+ i)) (nth i (car ebrw)))) (format *standard-output* "~%~%EBRW stimulus data:~%") (format *standard-output* "~%Stimulus RT (sec.)~%") (dotimes (i 12) (format *standard-output* "~3s~13,3f~%" (1+ i) (nth i (cadr ebrw)))) (format *standard-output* "~%~%Experimental learning data:~%") (format *standard-output* "~%Block RT (sec.)~%") (dotimes (i 30) (format *standard-output* "~3s~10,3f~%" (* 5 (1+ i)) (nth i (car experi)))) (format *standard-output* "~%~%Experimental stimulus data:~%") (format *standard-output* "~%Stimulus RT (sec.)~%") (dotimes (i 12) (format *standard-output* "~3s~13,3f~%" (1+ i) (nth i (cadr experi)))) (format *standard-output* "~%") ) (unless *graphic* (format *standard-output* "~%If your browser supports JAVA, you can display the data in a graph by checking the Graphic output box on the interface page.
~%~%")))


  (when *graphic* 
    (let ((num-lines (cond ((and model (not *overlay*)) 1)
                 ((null model) 2)
                 (t 3))))

      (format *standard-output* " 
         
        
        
        
        
        
        
        
        
        
        
        
        
        
        
" 
           
              num-lines
            )
    
    (dotimes (i (1- num-lines))
      (format *standard-output* "
                                 
                                 "

              (1+ i) (1+ i) (1+ i) (1+ i)))
    
    (format *standard-output* "
        
        ")
    (dotimes (i num-lines)
      (format *standard-output* "" 
              i (case i
                  (0 (case num-lines
                       (1 "ACT-R")
                       (2 "EBRW")
                       (3 "ACT-R")))
                  (1 (case num-lines
                       (2 "Experimental Data")
                       (3 "EBRW")))
                  (2 "Experimental Data"))))
    
    (dotimes (i num-lines)
      (format *standard-output* ""))
    
      
    (format *standard-output* "
             
Either your browser does not support JAVA or this graph has scrolled off the top of the display.~%
") (format *standard-output* "

" num-lines ) (dotimes (i (1- num-lines)) (format *standard-output* " " (1+ i) (1+ i) (1+ i) (1+ i))) (format *standard-output* " ") (dotimes (i num-lines) (format *standard-output* "" i (case i (0 (case num-lines (1 "ACT-R") (2 "EBRW") (3 "ACT-R"))) (1 (case num-lines (2 "Experimental Data") (3 "EBRW"))) (2 "Experimental Data")))) (dotimes (i num-lines) (format *standard-output* "")) (format *standard-output* "
Either your browser does not support JAVA or this graph has scrolled off the top of the display.~%
") ))) (defun correct-category-catds13 (blah) (declare (ignore blah)) (if (equal *done-time* nil) (setq *done-time* (actr-time))) (setq *last-guess* (chunk-slot-value-fct *current-focus* 'category)) (if *system-is-still-learning* *correct-category* (chunk-slot-value-fct *current-focus* 'category)) ) (defun winner-catds13 (stimulus) (let (numA numB numC numD) (setq numA (chunk-slot-value-fct stimulus 'countA)) (setq numB (chunk-slot-value-fct stimulus 'countB)) (setq numC (chunk-slot-value-fct stimulus 'countC)) (setq numD (chunk-slot-value-fct stimulus 'countD)) (if (and (>= (- numA numB) *ebrw-criterion*) (>= (- numA numC) *ebrw-criterion*) (>= (- numA numD) *ebrw-criterion*)) 'category-A (if (and (>= (- numB numA) *ebrw-criterion*) (>= (- numB numC) *ebrw-criterion*) (>= (- numB numD) *ebrw-criterion*)) 'category-B (if (and (>= (- numC numA) *ebrw-criterion*) (>= (- numC numB) *ebrw-criterion*) (>= (- numC numD) *ebrw-criterion*)) 'category-C (if (and (>= (- numD numA) *ebrw-criterion*) (>= (- numD numB) *ebrw-criterion*) (>= (- numD numC) *ebrw-criterion*)) 'category-D)))) ) ) (defun rule-category-catds13 (rule stim) (if (and (or (and (chunk-slot-value-fct rule 'feature1) (< (chunk-slot-value-fct rule 'feature1) (chunk-slot-value-fct (chunk-slot-value-fct stim 'feature1) 'value))) (not (chunk-slot-value-fct rule 'feature1))) (or (and (chunk-slot-value-fct rule 'feature2) (< (chunk-slot-value-fct rule 'feature2) (chunk-slot-value-fct (chunk-slot-value-fct stim 'feature2) 'value))) (not (chunk-slot-value-fct rule 'feature2))) (or (and (chunk-slot-value-fct rule 'feature3) (< (chunk-slot-value-fct rule 'feature3) (chunk-slot-value-fct (chunk-slot-value-fct stim 'feature3) 'value))) (not (chunk-slot-value-fct rule 'feature3))) (or (and (chunk-slot-value-fct rule 'feature4) (< (chunk-slot-value-fct rule 'feature4) (chunk-slot-value-fct (chunk-slot-value-fct stim 'feature4) 'value))) (not (chunk-slot-value-fct rule 'feature4)))) (chunk-slot-value-fct stim 'category) (nth (random (1- (length *categories*))) (remove (chunk-slot-value-fct stim 'category) *categories*))) ) (defun random-category-catds13 () (nth (random (length *categories*)) *categories*) ) (defun increment-category-count (classify-goal category) (if (equal category 'category-A) (modwme-fct classify-goal (list 'countA (+ 1 (chunk-slot-value-fct classify-goal 'countA)))) (if (equal category 'category-B) (modwme-fct classify-goal (list 'countB (+ 1 (chunk-slot-value-fct classify-goal 'countB)))) (if (equal category 'category-C) (modwme-fct classify-goal (list 'countC (+ 1 (chunk-slot-value-fct classify-goal 'countC)))) (if (equal category 'category-D) (modwme-fct classify-goal (list 'countD (+ 1 (chunk-slot-value-fct classify-goal 'countD)))))))) ) (defun experiment-1-present-pattern-catds13 (pattern) (let (name cycles start-time) (setq name (gentemp "ITEM")) (if (car (no-output (sgp :v))) (print pattern)) (add-dm-fct (list (list name 'isa 'presentation 'feature1 (first pattern) 'feature2 (second pattern) 'feature3 (third pattern) 'feature4 (fourth pattern)))) (setq *correct-category* (fifth pattern)) (setq *current-focus* name) (setq start-time (actr-time)) (setq *done-time* nil) (setq *style* nil) (goal-focus-fct (list *current-focus*)) (multiple-value-setq (cycles) (run)) (if (null *done-time*) (setq *done-time* (actr-time))) (list (- *done-time* start-time) *last-guess* (* 1.0 cycles))) ) (defun experiment-1-get-pattern-data-catds13 (patnum trial-data) (mapcar #'(lambda(x) (assoc patnum x)) trial-data) ) (defun randomize-catds13 (list) (let ((n (length list)) (result nil)) (setf list (copy-tree list)) (dotimes (i n result) (let ((data (nth (random (- n i)) list))) (push data result) (setf list (delete data list)))))) (defun experiment-1-present-block-catds13 () (setq *jtb-hacked-block-number* (+ 2 *jtb-hacked-block-number*)) (mapcar #'(lambda (x) (eval `(sdp ,x :references ,*jtb-hacked-block-number*))) (no-output (sdm isa stimulus))) (let (pb-res) (setq pb-res '()) (dolist (itm (randomize-catds13 '(0 1 2 3 4 5 6 7 8 9 10 11))) (setq pb-res (cons (cons itm (experiment-1-present-pattern-catds13 (nth itm *experiment-1-patterns*))) pb-res))) (reverse pb-res) ) ) (defun list-average*-catds13 (x) (list-average-catds13 (nthcdr 6 (reverse x)))) (defun summa-catds13 (lis) (if (equal (length lis) 0) 0 (+ (car lis) (summa-catds13 (cdr lis))))) (defun list-average-catds13 (lis) (/ (summa-catds13 lis) (length lis)) ) (defun experiment-1-average-pattern-times-catds13 (patnum trial-data) (list-average-catds13 (mapcar #'second (experiment-1-get-pattern-data-catds13 patnum trial-data))) ) (defun experiment-1-average-pattern-cycles-catds13 (patnum trial-data) (list-average-catds13 (mapcar #'fourth (experiment-1-get-pattern-data-catds13 patnum trial-data))) ) (defun experiment-1-probability-correct-catds13 (patnum trial-data) (list-average-catds13 (mapcar #'(lambda(x) (if (equal (third x) (fifth (nth patnum *experiment-1-patterns*))) 1 0)) (experiment-1-get-pattern-data-catds13 patnum trial-data))) ) (defun experiment-1-present-n-blocks-catds13 (n) (if (equal n 0) NIL (cons (experiment-1-present-block-catds13) (experiment-1-present-n-blocks-catds13 (- n 1)))) ) (defun experiment-1-setup-catds13 (rt ga effort intercept) (reset) (add-dm (one ISA feature-value value 1) (two ISA feature-value value 2) (bri1 ISA feature-value) (bri2 ISA feature-value) (bri3 ISA feature-value) (bri4 ISA feature-value) (bri5 ISA feature-value) (bri6 ISA feature-value) (bri7 ISA feature-value) (bri8 ISA feature-value) (bri9 ISA feature-value) (bri10 ISA feature-value) (bri11 ISA feature-value) (bri12 ISA feature-value) (sat1 ISA feature-value) (sat2 ISA feature-value) (sat3 ISA feature-value) (sat4 ISA feature-value) (sat5 ISA feature-value) (sat6 ISA feature-value) (sat7 ISA feature-value) (sat8 ISA feature-value) (sat9 ISA feature-value) (sat10 ISA feature-value) (sat11 ISA feature-value) (sat12 ISA feature-value) (category-a ISA category opposite category-b) (category-b ISA category opposite category-a) ) (eval *sims*) (setq *block-size* 12) ; not actually necessary, but heck, let's be consistent (setq *lax-criterion* 0.55) (setq *strict-criterion* 0.7) (setq *system-is-still-learning* T) (sgp-fct (list :ga ga)) (sgp-fct (list :rt rt)) (sgp :ans 0.5) (spp-fct (list 'recall-2feature :effort effort)) (spp-fct (list 'done-classifying-by-exemplar :effort intercept)) (sgp :lf 0.9) ) (defun experiment-1-run-once-catds13 (rt ga effort intercept) (setf *categories* '(category-a category-b)) (setq *jtb-hacked-block-number* 0) (experiment-1-setup-catds13 rt ga effort intercept) (let (results-5 results-total) (do ((n 0 (+ 1 n))) ((equal n 30)) (setq results-5 (experiment-1-present-n-blocks-catds13 5)) (setq results-total (cons (list (list-average-catds13 (mapcar #'(lambda(x) (experiment-1-average-pattern-times-catds13 x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11))) (mapcar #'(lambda(x) (experiment-1-average-pattern-times-catds13 x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11)) (mapcar #'(lambda(x) (experiment-1-probability-correct-catds13 x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11)) (mapcar #'(lambda(x) (experiment-1-average-pattern-cycles-catds13 x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11)) ) results-total)) ) (list (reverse (mapcar #'first results-total)) (mapcar #'list-average*-catds13 (mapcar #'(lambda(y) (mapcar #'(lambda(x) (nth y x)) (mapcar #'second results-total))) '(0 1 2 3 4 5 6 7 8 9 10 11))) (mapcar #'list-average*-catds13 (mapcar #'(lambda(y) (mapcar #'(lambda(x) (nth y x)) (mapcar #'third results-total))) '(0 1 2 3 4 5 6 7 8 9 10 11))) (mapcar #'list-average*-catds13 (mapcar #'(lambda(y) (mapcar #'(lambda(x) (nth y x)) (mapcar #'fourth results-total))) '(0 1 2 3 4 5 6 7 8 9 10 11))) ) ) ) (defun experiment-1-test-catds13 (rt ga effort intercept) (experiment-1-run-once-catds13 rt ga effort intercept)) (defun average-a-lol-catds13 (lol) (do ((temp lol (mapcar 'cdr temp)) (result nil (append result (do ((temp1 temp (cdr temp1)) (ans 0.0 (+ ans (caar temp1)))) ((null temp1) (list (/ ans (length lol)))))))) ((null (car temp)) result))) (defun run-1-n-catds13 (n rt effort intercept) (do ((count 0 (1+ count)) (result nil (cons (experiment-1-test-catds13 rt 0 effort intercept) result))) ((equal count n) (list (average-a-lol-catds13 (mapcar 'first result)) (average-a-lol-catds13 (mapcar 'second result)))))) (defun doit-1-catds13 (n time tau intercept counter) (setq *ebrw-criterion* counter) (setf *sims* '(set-similarities (bri2 bri1 0.99670173 ) (bri3 bri1 0.994502883 )(bri3 bri2 0.991204612 ) (bri4 bri1 0.99670173 )(bri4 bri2 1 )(bri4 bri3 0.991204612 ) (bri5 bri1 0.984608072 )(bri5 bri2 0.981309802 )(bri5 bri3 0.990105189 )(bri5 bri4 0.981309802 ) (bri6 bri1 0.99670173 )(bri6 bri2 0.993403459 )(bri6 bri3 0.997801153 )(bri6 bri4 0.993403459 )(bri6 bri5 0.987906342 ) (bri7 bri1 0.995602306 )(bri7 bri2 0.998900577 )(bri7 bri3 0.990105189 )(bri7 bri4 0.998900577 )(bri7 bri5 0.980210378 )(bri7 bri6 0.992304036 ) (bri8 bri1 0.984608072 )(bri8 bri2 0.981309802 )(bri8 bri3 0.990105189 )(bri8 bri4 0.981309802 )(bri8 bri5 1 )(bri8 bri6 0.987906342 )(bri8 bri7 0.980210378 ) (bri9 bri1 0.995602306 )(bri9 bri2 0.992304036 )(bri9 bri3 0.998900577 )(bri9 bri4 0.992304036 )(bri9 bri5 0.989005766 )(bri9 bri6 0.998900577 )(bri9 bri7 0.991204612 )(bri9 bri8 0.989005766 ) (bri10 bri1 0.969216144 )(bri10 bri2 0.965917873 )(bri10 bri3 0.974713261 )(bri10 bri4 0.965917873 )(bri10 bri5 0.984608072 )(bri10 bri6 0.972514414 )(bri10 bri7 0.96481845 )(bri10 bri8 0.984608072 )(bri10 bri9 0.973613837 ) (bri11 bri1 0.975812684 )(bri11 bri2 0.972514414 )(bri11 bri3 0.981309802 )(bri11 bri4 0.972514414 )(bri11 bri5 0.991204612 )(bri11 bri6 0.979110955 )(bri11 bri7 0.971414991 )(bri11 bri8 0.991204612 )(bri11 bri9 0.980210378 )(bri11 bri10 0.993403459 ) (bri12 bri1 0.987906342 )(bri12 bri2 0.984608072 )(bri12 bri3 0.993403459 )(bri12 bri4 0.984608072 )(bri12 bri5 0.99670173 )(bri12 bri6 0.991204612 )(bri12 bri7 0.983508648 )(bri12 bri8 0.99670173 )(bri12 bri9 0.992304036 )(bri12 bri10 0.981309802 )(bri12 bri11 0.987906342 ) (sat2 sat1 0.964899519 ) (sat3 sat1 0.978399704 )(sat3 sat2 0.986499815 ) (sat4 sat1 0.941949204 )(sat4 sat2 0.977049685 )(sat4 sat3 0.9635495 ) (sat5 sat1 0.978399704 )(sat5 sat2 0.986499815 )(sat5 sat3 1 )(sat5 sat4 0.9635495 ) (sat6 sat1 0.941949204 )(sat6 sat2 0.977049685 )(sat6 sat3 0.9635495 )(sat6 sat4 1 )(sat6 sat5 0.9635495 ) (sat7 sat1 0.908198741 )(sat7 sat2 0.943299222 )(sat7 sat3 0.929799037 )(sat7 sat4 0.966249537 )(sat7 sat5 0.929799037 )(sat7 sat6 0.966249537 ) (sat8 sat1 0.959499444 )(sat8 sat2 0.994599926 )(sat8 sat3 0.981099741 )(sat8 sat4 0.982449759 )(sat8 sat5 0.981099741 )(sat8 sat6 0.982449759 )(sat8 sat7 0.948699296 ) (sat9 sat1 0.913598815 )(sat9 sat2 0.948699296 )(sat9 sat3 0.935199111 )(sat9 sat4 0.971649611 )(sat9 sat5 0.935199111 )(sat9 sat6 0.971649611 )(sat9 sat7 0.994599926 )(sat9 sat8 0.95409937 ) (sat10 sat1 0.941949204 )(sat10 sat2 0.977049685 )(sat10 sat3 0.9635495 )(sat10 sat4 1 )(sat10 sat5 0.9635495 )(sat10 sat6 1 )(sat10 sat7 0.966249537 )(sat10 sat8 0.982449759 )(sat10 sat9 0.971649611 ) (sat11 sat1 0.928449019 )(sat11 sat2 0.9635495 )(sat11 sat3 0.950049315 )(sat11 sat4 0.986499815 )(sat11 sat5 0.950049315 )(sat11 sat6 0.986499815 )(sat11 sat7 0.979749722 )(sat11 sat8 0.968949574 )(sat11 sat9 0.985149796 )(sat11 sat10 0.986499815 ) (sat12 sat1 0.921698926 )(sat12 sat2 0.956799407 )(sat12 sat3 0.943299222 )(sat12 sat4 0.979749722 )(sat12 sat5 0.943299222 )(sat12 sat6 0.979749722 )(sat12 sat7 0.986499815 )(sat12 sat8 0.962199481 )(sat12 sat9 0.991899889 )(sat12 sat10 0.979749722 )(sat12 sat11 0.993249907 ) )) (run-1-n-catds13 n tau time intercept)) ;;; ;;; The ACT-R model (clear-all) (sgp-fct (list :lt nil :pct nil :pmt nil :v *v* :pm t :era t :er t :pl t :bll 0.5 :ans *noise* :egs *egs* :ga 1 :lf 1 :mp 45 :rt 0.0 :ut -20)) (chunk-type presentation feature1 feature2 feature3 feature4 category choice exn-used evaluated) (chunk-type stimulus feature1 feature2 feature3 feature4 category) (chunk-type feature-value value) (chunk-type category opposite) (chunk-type clean-up) (chunk-type rule feature1 feature2 feature3 feature4 guess viable current type correct incorrect) (chunk-type classify-by-rule presentation category exceptions-checked exn-used) (chunk-type apply-rule-to-presentation rule presentation checked category) (chunk-type classify-by-exemplar presentation category counta countb countc countd feature1 feature2 feature3 feature4) (chunk-type exception feature1 feature2 feature3 feature4 category) (chunk-type rule-type) (chunk-type find-rule presentation) (chunk-type evaluate classification-style presentation count last-result exn-used) (chunk-type classification-style) (add-dm (perfect ISA rule-type) (imperfect ISA rule-type) (conjunctive ISA rule-type) (rule-2 isa chunk) (rule ISA classification-style) (exemplar ISA classification-style)) (P choose-to-classify-by-rule =goal> ISA presentation category nil =rule> ISA rule viable t ==> =classify-by-rule-goal> ISA classify-by-rule presentation =goal category =c exn-used =exn =goal> category =c choice rule exn-used =exn !eval! (setq *STYLE* 'RULE) !push! =classify-by-rule-goal ) (P cant-do-jack =goal> ISA presentation category nil ==> =goal> category (!eval! (random-category-catds13)) choice random ) (P random-guess-was-right =goal> ISA presentation choice random category =c !eval! (equal =c (correct-category-catds13 =goal)) ==> =goal> evaluated right choice rule ) (P random-guess-was-wrong =goal> ISA presentation choice random category =c !eval! (not (equal =c (correct-category-catds13 =goal))) ==> =goal> evaluated wrong category (!eval! (correct-category-catds13 =goal)) choice rule ) (P choose-to-classify-by-exemplar-4feature =goal> ISA presentation category nil feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 choice nil =recall-stimulus> ISA stimulus feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c ==> =classify-by-exemplar-goal> ISA classify-by-exemplar presentation =goal counta 0 countb 0 countc 0 countd 0 category =cat feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 =goal> category =cat choice exemplar !eval! (setq *STYLE* 'EXEM4) !push! =classify-by-exemplar-goal ) (P choose-to-classify-by-exemplar-2feature =goal> ISA presentation category nil feature1 =f1 feature2 =f2 feature3 nil feature4 nil choice nil =recall-stimulus> ISA stimulus feature1 =f1 feature2 =f2 feature3 nil feature4 nil category =c ==> =classify-by-exemplar-goal> ISA classify-by-exemplar presentation =goal counta 0 countb 0 countc 0 countd 0 category =cat feature1 =f1 feature2 =f2 feature3 nil feature4 nil =goal> category =cat choice exemplar !eval! (setq *STYLE* 'EXEM2) !push! =classify-by-exemplar-goal ) (P cover-for-failed-classify =goal> ISA presentation category failure ==> =goal> category (!eval! (random-category-catds13)) ) (P general-rule-match =goal> ISA classify-by-rule presentation =pres category nil =rule> ISA rule current t =pres> ISA presentation ==> !output! =rule =apply-rule-goal> ISA apply-rule-to-presentation presentation =pres rule =rule checked 0 category =c =goal> category =c exn-used nil !push! =apply-rule-goal ) (P done-classifying-by-rule =goal> ISA classify-by-rule category =c - category failure ==> !pop! ) (P feature1-with-rule =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 0 category nil =rule> ISA rule feature1 =cutoff guess =cat =pres> ISA presentation feature1 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 1 category =cat ) (P feature2-with-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 1 category nil =rule> ISA rule feature2 =cutoff guess =cat =pres> ISA presentation feature2 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 2 category =cat ) (P feature2-with-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 1 category =cat =rule> ISA rule feature2 =cutoff guess =cat =pres> ISA presentation feature2 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 2 category =cat ) (P feature3-with-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 2 category nil =rule> ISA rule feature3 =cutoff guess =cat =pres> ISA presentation feature3 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 3 category =cat ) (P feature3-with-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 2 category =cat =rule> ISA rule feature3 =cutoff guess =cat =pres> ISA presentation feature3 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 3 category =cat ) (P feature4-with-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 3 category nil =rule> ISA rule feature4 =cutoff guess =cat =pres> ISA presentation feature4 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 4 category =cat ) (P feature4-with-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 3 category =cat =rule> ISA rule feature4 =cutoff guess =cat =pres> ISA presentation feature4 =actual =actual> ISA feature-value value =val !eval! (< =cutoff =val) ==> =goal> checked 4 category =cat ) (P feature1-against-rule =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 0 category nil =rule> ISA rule feature1 =cutoff guess =cat =pres> ISA presentation feature1 =actual =cat> ISA category opposite =opp =actual> ISA feature-value value =val !eval! (> =cutoff =val) ==> =goal> checked 1 category =opp ) (P feature2-against-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 1 =rule> ISA rule feature2 =cutoff guess =cat =pres> ISA presentation feature2 =actual =cat> ISA category opposite =opp =actual> ISA feature-value value =val !eval! (> =cutoff =val) ==> =goal> checked 2 category =opp ) (P feature2-against-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 1 category =cat =rule> ISA rule feature2 =cutoff - guess =cat ==> =goal> checked 2 ) (P feature3-against-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 2 =rule> ISA rule feature3 =cutoff guess =cat =pres> ISA presentation feature3 =actual =cat> ISA category opposite =opp =actual> ISA feature-value value =val !eval! (> =cutoff =val) ==> =goal> checked 3 category =opp ) (P feature3-against-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 2 category =cat =rule> ISA rule feature3 =cutoff - guess =cat ==> =goal> checked 3 ) (P feature4-against-rule-v1 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 3 =rule> ISA rule feature4 =cutoff guess =cat =pres> ISA presentation feature4 =actual =cat> ISA category opposite =opp =actual> ISA feature-value value =val !eval! (> =cutoff =val) ==> =goal> checked 4 category =opp ) (P feature4-against-rule-v2 =goal> ISA apply-rule-to-presentation rule =rule presentation =pres checked 3 category =cat =rule> ISA rule feature4 =cutoff - guess =cat ==> =goal> checked 4 ) (P feature1-is-nil =goal> ISA apply-rule-to-presentation rule =rule checked 0 =rule> ISA rule feature1 nil ==> =goal> checked 1 ) (P feature2-is-nil =goal> ISA apply-rule-to-presentation rule =rule checked 1 =rule> ISA rule feature2 nil ==> =goal> checked 2 ) (P feature3-is-nil =goal> ISA apply-rule-to-presentation rule =rule checked 2 =rule> ISA rule feature3 nil ==> =goal> checked 3 ) (P feature4-is-nil =goal> ISA apply-rule-to-presentation rule =rule checked 3 =rule> ISA rule feature4 nil ==> =goal> checked 4 ) (P done-applying-presentation =goal> ISA apply-rule-to-presentation rule =rule checked 4 ==> !pop! ) (P move-on-with-rule =goal> ISA apply-rule-to-presentation rule =rule checked =n !eval! (< =n 4) ==> =goal> checked (!eval! (1+ =n)) ) (P wild-flaming-leap-of-faith-guess =goal> ISA classify-by-rule presentation =pres ==> =goal> category (!eval! (random-category-catds13)) exn-used wildleapoffaith !pop! ) (P check-for-exception-4 =goal> ISA classify-by-rule presentation =pres =pres> isa presentation feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 =exception> isa exception feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c ==> =goal> category =c !pop! ) (P check-for-exception-2 =goal> ISA classify-by-rule presentation =pres =pres> isa presentation feature1 =f1 feature2 =f2 =exception> isa exception feature1 =f1 feature1 =f3 feature2 =f2 feature2 =f4 category =c !eval! (and (equal =f1 =f3) (equal =f2 =f4)) ==> =goal> category =c !pop! ) (P recall-4feature =goal> ISA classify-by-exemplar feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category nil =recall-stim> ISA stimulus feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =cat ==> !eval! (increment-category-count =goal =cat) =goal> category (!eval! (winner-catds13 =goal)) !output! ("I recall ~s" =recall-stim) ) (P recall-continue-a =goal> isa classify-by-exemplar ==> !eval! (increment-category-count =goal 'category-a) =goal> category (!eval! (winner-catds13 =goal)) ) (P recall-continue-b =goal> isa classify-by-exemplar ==> !eval! (increment-category-count =goal 'category-b) =goal> category (!eval! (winner-catds13 =goal)) ) (P recall-2feature =goal> ISA classify-by-exemplar feature1 =f1 feature2 =f2 feature3 nil feature4 nil category nil counta =a =recall-stim> ISA stimulus feature1 =f1 feature2 =f2 feature3 nil feature4 nil category =cat ==> !eval! (increment-category-count =goal =cat) =goal> category (!eval! (winner-catds13 =goal)) !output! ("I recall ~s" =recall-stim) ) (P done-classifying-by-exemplar =goal> ISA classify-by-exemplar category =cat ==> !pop! ) (P correct-finish-from-exemplar =goal> ISA presentation category =c - category failure choice exemplar evaluated nil !eval! (equal =c (correct-category-catds13 =goal)) ==> =goal> evaluated right choice rule ) (P incorrect-finish-by-exemplar =goal> ISA presentation category =c - category failure choice exemplar evaluated nil !eval! (not (equal =c (correct-category-catds13 =goal))) ==> =goal> evaluated wrong category (!eval! (correct-category-catds13 =goal)) =evaluate-goal> ISA evaluate classification-style exemplar last-result wrong presentation =goal count 0 !push! =evaluate-goal ) (P classification-by-rule-is-right =goal> ISA presentation category =c choice rule exn-used nil evaluated nil !eval! (equal =c (correct-category-catds13 =goal)) ==> =goal> evaluated right =evaluate-goal> ISA evaluate classification-style rule last-result right presentation =goal !push! =evaluate-goal ) (P classification-by-rule-is-wrong =goal> ISA presentation category =c - category failure choice rule exn-used nil evaluated nil !eval! (not (equal =c (correct-category-catds13 =goal))) ==> =goal> category (!eval! (correct-category-catds13 =goal)) evaluated wrong =evaluate-goal> ISA evaluate classification-style rule presentation =goal last-result wrong !push! =evaluate-goal ) (P it-was-a-wild-leap-of-faith-so-find-a-rule =goal> ISA presentation category =c choice rule exn-used wildleapoffaith evaluated nil ==> =goal> category (!eval! (correct-category-catds13 =goal)) evaluated wrong =newgoal> isa clean-up =find-rule-goal> ISA find-rule presentation =goal !push! =find-rule-goal !push! =newgoal ) (P it-was-a-wild-leap-of-faith-so-update-rule =goal> ISA presentation category =c choice rule exn-used wildleapoffaith evaluated nil =rule> ISA rule current t ==> =goal> category (!eval! (correct-category-catds13 =goal)) evaluated wrong) (p nothing-to-clean-up =goal> isa clean-up ==> !pop!) (P one-more-study-2feature-version =goal> ISA presentation - evaluated nil feature1 =f1 feature2 =f2 feature3 nil feature4 nil category =c choice rule !eval! *system-is-still-learning* ==> =goal> choice done =stimulus-goal> ISA stimulus feature1 =f1 feature2 =f2 category =c !push! =stimulus-goal ) (P one-more-study-4feature-version =goal> ISA presentation - evaluated nil feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c choice rule !eval! *system-is-still-learning* ==> =goal> choice done =stimulus-goal> ISA stimulus feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c !push! =stimulus-goal ) (P cant-study =goal> ISA presentation - evaluated nil choice rule !eval! (not *system-is-still-learning*) ==> =goal> choice done ) (P done-wrong =goal> ISA presentation - choice rule evaluated wrong ==> !pop! ) (P done-right =goal> ISA presentation - choice rule evaluated right ==> !pop! ) (P set-study-goal-4feature =goal> ISA evaluate classification-style exemplar - count 5 count =count presentation =pres =pres> ISA presentation feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c !eval! *system-is-still-learning* ==> =goal> count (!eval! (+ 1 =count)) =study-stimulus> ISA stimulus feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =c !push! =study-stimulus ) (P set-study-goal-2feature =goal> ISA evaluate classification-style exemplar - count 5 count =count presentation =pres =pres> ISA presentation feature1 =f1 feature2 =f2 feature3 nil feature4 nil category =c !eval! *system-is-still-learning* ==> =goal> count (!eval! (+ 1 =count)) =study-stimulus> ISA stimulus feature1 =f1 feature2 =f2 feature3 nil feature4 nil category =c !push! =study-stimulus ) (P pop-on-study =goal> ISA stimulus ==> !pop! ) (P done-studying =goal> ISA evaluate classification-style exemplar count 5 ==> !pop! ) (P no-more-learning =goal> ISA evaluate !eval! (not *system-is-still-learning*) ==> !pop! ) (P perfect-rule-is-okay =goal> ISA evaluate last-result right =rule> ISA rule current t type perfect !eval! *system-is-still-learning* ==> !pop! ) (P throw-out-perfect-rule =goal> ISA evaluate classification-style rule last-result wrong presentation =pres =rule> ISA rule current t type perfect viable t !eval! *system-is-still-learning* ==> =rule> current nil viable nil =find-rule-goal> ISA find-rule presentation =pres !focus-on! =find-rule-goal ) (P increment-incorrect-count =goal> ISA evaluate classification-style rule last-result wrong =rule> ISA rule current t - type perfect incorrect =ic !eval! *system-is-still-learning* ==> =rule> incorrect (!eval! (+ 1 =ic)) =goal> last-result nil ) (P increment-correct-count =goal> ISA evaluate classification-style rule last-result right =rule> ISA rule current t - type perfect correct =c !eval! *system-is-still-learning* ==> =rule> correct (!eval! (+ 1 =c)) =goal> last-result nil ) (P learn-exception-to-imperfect-rule-4 =goal> ISA evaluate classification-style rule last-result wrong presentation =pres exn-used nil =rule> ISA rule correct =c incorrect =ic type imperfect current t !eval! (>= (+ =c =ic) (* 2 *block-size*)) !eval! (>= (/ =c (+ =c =ic)) *strict-criterion*) !eval! *system-is-still-learning* =pres> ISA presentation category =cat feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 ==> =goal> exn-used t =exception-goal> ISA exception feature1 =f1 feature2 =f2 feature3 =f3 feature4 =f4 category =cat !focus-on! =exception-goal ) (P learn-exception-to-imperfect-rule-2 =goal> ISA evaluate classification-style rule last-result wrong presentation =pres exn-used nil =rule> ISA rule correct =c incorrect =ic type imperfect current t !eval! (>= (+ =c =ic) (* 2 *block-size*)) !eval! (>= (/ =c (+ =c =ic)) *strict-criterion*) !eval! *system-is-still-learning* =pres> ISA presentation category =cat feature1 =f1 feature2 =f2 ==> =goal> exn-used t =exception-goal> ISA exception feature1 =f1 feature2 =f2 category =cat !focus-on! =exception-goal ) (p pop-exception =goal> isa exception ==> !pop!) (P imperfect-rule-not-yet-to-lower-window =goal> ISA evaluate classification-style rule last-result nil =rule> ISA rule current t correct =c incorrect =ic !eval! (< (+ =c =ic) *block-size*) !eval! *system-is-still-learning* ==> !pop! ) (P keep-rule-at-lower-window =goal> ISA evaluate classification-style rule last-result nil =rule> ISA rule correct =c incorrect =ic - type perfect current t !eval! (>= (+ =c =ic) *block-size*) !eval! (< (+ =c =ic) (* 2 *block-size*)) !eval! (>= (/ =c (+ =c =ic)) *lax-criterion*) !eval! *system-is-still-learning* ==> !pop! ) (P drop-rule-at-lower-window =goal> ISA evaluate classification-style rule last-result nil presentation =pres =rule> ISA rule correct =c incorrect =ic - type perfect current t !eval! (>= (+ =c =ic) *block-size*) !eval! (< (+ =c =ic) (* 2 *block-size*)) !eval! (< (/ =c (+ =c =ic)) *lax-criterion*) !eval! *system-is-still-learning* ==> =rule> current nil viable nil =find-rule-goal> ISA find-rule presentation =pres !focus-on! =find-rule-goal ) (P keep-imperfect-rule-at-upper-window =goal> ISA evaluate classification-style rule last-result nil presentation =pres =rule> ISA rule correct =c incorrect =ic type imperfect current t !eval! (>= (+ =c =ic) (* 2 *block-size*)) !eval! (>= (/ =c (+ =c =ic)) *strict-criterion*) !eval! *system-is-still-learning* ==> !pop! ) (P drop-imperfect-rule-at-uwindow =goal> ISA evaluate classification-style rule last-result nil presentation =pres =rule> ISA rule correct =c incorrect =ic type imperfect current t !eval! (= (+ =c =ic) (* 2 *block-size*)) !eval! (< (/ =c (+ =c =ic)) *strict-criterion*) !eval! *system-is-still-learning* ==> =rule> current nil viable nil =find-rule-goal> ISA find-rule presentation =pres !focus-on! =find-rule-goal ) (P select-perfect-rule =goal> ISA find-rule presentation =pres =rule> ISA rule viable t current nil type perfect =pres> ISA presentation !eval! *system-is-still-learning* ==> =rule> current t guess (!eval! (rule-category-catds13 =rule =pres)) !pop! ) (P select-imperfect-rule =goal> ISA find-rule presentation =pres =rule> ISA rule viable t current nil type imperfect =pres> ISA presentation !eval! *system-is-still-learning* ==> =rule> current t guess (!eval! (rule-category-catds13 =rule =pres)) correct 1 !pop! ) (spp SELECT-PERFECT-RULE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp SELECT-IMPERFECT-RULE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 750 :EVENTUAL-FAILURES 250 :EVENTUAL-EFFORTS 1000) (spp SET-STUDY-GOAL-4FEATURE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp SET-STUDY-GOAL-2FEATURE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp NO-MORE-LEARNING :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp RECALL-4FEATURE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp RECALL-2FEATURE :STRENGTH 10 :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp DONE-CLASSIFYING-BY-EXEMPLAR :EFFORT 0.20 :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp WILD-FLAMING-LEAP-OF-FAITH-GUESS :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 250 :EVENTUAL-FAILURES 750 :EVENTUAL-EFFORTS 1000) (spp GENERAL-RULE-MATCH :SUCCESSES 10000 :FAILURES 0 :EFFORTS 500 :EVENTUAL-SUCCESSES 8000 :EVENTUAL-FAILURES 2000 :EVENTUAL-EFFORTS 10000) (spp DONE-CLASSIFYING-BY-RULE :EFFORT 0.20 :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp POP-ON-STUDY :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp keep-imperfect-rule-at-upper-window :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 500 :EVENTUAL-FAILURES 500 :EVENTUAL-EFFORTS 1000) (spp recall-continue-a :SUCCESSES 10000 :FAILURES 0 :EFFORTS 500 :EVENTUAL-SUCCESSES 2500 :EVENTUAL-FAILURES 7500 :EVENTUAL-EFFORTS 10000) (spp recall-continue-b :SUCCESSES 10000 :FAILURES 0 :EFFORTS 500 :EVENTUAL-SUCCESSES 2500 :EVENTUAL-FAILURES 7500 :EVENTUAL-EFFORTS 10000) (spp increment-incorrect-count :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 750 :EVENTUAL-FAILURES 250 :EVENTUAL-EFFORTS 1000) (spp increment-correct-count :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 750 :EVENTUAL-FAILURES 250 :EVENTUAL-EFFORTS 1000) (spp learn-exception-to-imperfect-rule-2 :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp learn-exception-to-imperfect-rule-4 :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp pop-exception :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp check-for-exception-2 :SUCCESSES 1000000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp check-for-exception-4 :SUCCESSES 1000000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp RANDOM-GUESS-WAS-RIGHT :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp ONE-MORE-STUDY-4FEATURE-VERSION :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp ONE-MORE-STUDY-2FEATURE-VERSION :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp IT-WAS-A-WILD-LEAP-OF-FAITH-SO-FIND-A-RULE :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 500 :eventual-failures 500 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp it-was-a-wild-leap-of-faith-so-update-rule :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp INCORRECT-FINISH-BY-EXEMPLAR :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp DONE-RIGHT :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp COVER-FOR-FAILED-CLASSIFY :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp CORRECT-FINISH-FROM-EXEMPLAR :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp CLASSIFICATION-BY-RULE-IS-WRONG :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp CLASSIFICATION-BY-RULE-IS-RIGHT :SUCCESSES 1000 :FAILURES 0 :EFFORTS 50 :EVENTUAL-SUCCESSES 1000 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 1000) (spp CHOOSE-TO-CLASSIFY-BY-RULE :SUCCESSES 20 :FAILURES 0 :EFFORTS 1 :EVENTUAL-SUCCESSES 30 :EVENTUAL-EFFORTS 30) (spp CHOOSE-TO-CLASSIFY-BY-EXEMPLAR-4FEATURE :SUCCESSES 2400 :EFFORTS 120 :EVENTUAL-SUCCESSES 30 :EVENTUAL-FAILURES 50 :EVENTUAL-EFFORTS 80) (spp DONE-WRONG :EVENTUAL-EFFORTS 1000 :EVENTUAL-FAILURES 0 :EFFORTS 50 :SUCCESSES 1000 :EVENTUAL-SUCCESSES 1000 :FAILURE T) (spp CHOOSE-TO-CLASSIFY-BY-EXEMPLAR-2FEATURE :EFFORT 0.1 :FAILURES 0 :SUCCESSES 2400 :EFFORTS 120 :EVENTUAL-SUCCESSES 30 :EVENTUAL-FAILURES 50 :EVENTUAL-EFFORTS 80) (spp CANT-DO-JACK :SUCCESSES 10000 :EFFORTS 500 :EVENTUAL-SUCCESSES 12500 :EVENTUAL-FAILURES 87500 :EVENTUAL-EFFORTS 100000) (spp FEATURE1-AGAINST-RULE :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE1-WITH-RULE :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE1-IS-NIL :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE2-AGAINST-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE2-AGAINST-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE2-WITH-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE2-WITH-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE2-IS-NIL :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp move-on-with-rule :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 300 :EVENTUAL-EFFORTS 400) (spp FEATURE3-AGAINST-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE3-AGAINST-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE3-WITH-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE3-WITH-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE3-IS-NIL :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE4-AGAINST-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE4-AGAINST-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE4-WITH-RULE-V1 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE4-WITH-RULE-V2 :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100) (spp FEATURE4-IS-NIL :EFFORT 0.05 :SUCCESSES 100 :EFFORTS 5 :EVENTUAL-SUCCESSES 100 :EVENTUAL-FAILURES 0 :EVENTUAL-EFFORTS 100)