;
#| The functions doit-1, doit-2, and doit-3 run the three subjects from data set 1 (Nosofsky & Palmeri, 1997). The functions demo-2 and demo-3 run data sets 2 and 3 from: Nosofsky, Palmeri, & McKinley,1994 and Erickson & Krushke, 1998 respectively. All of these functions take the same parameters n -- the number of runs time -- effort to retrieve an instance tau -- activation threshold for successful retrieval -- the :rt parameter intercept -- intercept time to encode and respond counter -- number of steps in the random walk |# (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 *rt*) (defvar *last-guess*) (defvar *sims*) (defvar *ebrw-criterion*) (defvar *lax-criterion*) (defvar *strict-criterion*) (defparameter *categories* '(category-a category-b)) (defparameter *egs* (/ 2.2 (sqrt 2))) (defparameter *noise* .55) (defparameter *jtb-sim-factor* 30) (defparameter *jtb-hack-track* nil) (defparameter *learning* nil) (defparameter *styles* nil) (defparameter nosof-results '( ((B B B B B B A) 0.0018 0.0040) ((B B B B B A B) 0.0054 0.0040) ((B B B B B A A) 0.0014 0.0000) ((B B B B A B B) 0.0032 0.0040) ((B B B B A B A) 0.0024 0.0040) ((B B B B A A B) 0.0038 0.0040) ((B B B B A A A) 0.0020 0.0000) ((B B B A B B B) 0.0032 0.0000) ((B B B A B B A) 0.0020 0.0000) ((B B B A B A B) 0.0124 0.0000) ((B B B A B A A) 0.0028 0.0040) ((B B B A A B B) 0.0028 0.0090) ((B B B A A B A) 0.0018 0.0000) ((B B B A A A B) 0.0034 0.0000) ((B B B A A A A) 0.0038 0.0000) ((B B A B B B B) 0.0080 0.0440) ((B B A B B B A) 0.0032 0.0090) ((B B A B B A B) 0.0344 0.0350) ((B B A B B A A) 0.0056 0.0000) ((B B A B A B B) 0.0048 0.0310) ((B B A B A B A) 0.0030 0.0090) ((B B A B A A B) 0.0170 0.0180) ((B B A B A A A) 0.0038 0.0180) ((B B A A B B B) 0.0106 0.0130) ((B B A A B B A) 0.0034 0.0000) ((B B A A B A B) 0.1266 0.1320) ((B B A A B A A) 0.0114 0.0040) ((B B A A A B B) 0.0036 0.0000) ((B B A A A B A) 0.0020 0.0040) ((B B A A A A B) 0.0352 0.0310) ((B B A A A A A) 0.0066 0.0130) ((B A B B B B B) 0.0022 0.0090) ((B A B B B B A) 0.0022 0.0000) ((B A B B B A B) 0.0038 0.0040) ((B A B B B A A) 0.0038 0.0000) ((B A B B A B B) 0.0030 0.0000) ((B A B B A B A) 0.0026 0.0000) ((B A B B A A B) 0.0010 0.0000) ((B A B B A A A) 0.0006 0.0000) ((B A B A B B B) 0.0016 0.0000) ((B A B A B B A) 0.0022 0.0040) ((B A B A B A B) 0.0030 0.0000) ((B A B A B A A) 0.0022 0.0000) ((B A B A A B B) 0.0028 0.0000) ((B A B A A B A) 0.0028 0.0000) ((B A B A A A B) 0.0022 0.0000) ((B A B A A A A) 0.0030 0.0000) ((B A A B B B B) 0.0116 0.0130) ((B A A B B B A) 0.0024 0.0000) ((B A A B B A B) 0.0090 0.0090) ((B A A B B A A) 0.0034 0.0000) ((B A A B A B B) 0.0044 0.0000) ((B A A B A B A) 0.0032 0.0000) ((B A A B A A B) 0.0066 0.0000) ((B A A B A A A) 0.0024 0.0000) ((B A A A B B B) 0.0046 0.0000) ((B A A A B B A) 0.0032 0.0040) ((B A A A B A B) 0.0112 0.0130) ((B A A A B A A) 0.0056 0.0000) ((B A A A A B B) 0.0032 0.0040) ((B A A A A B A) 0.0012 0.0000) ((B A A A A A B) 0.0054 0.0000) ((B A A A A A A) 0.0016 0.0000) ((A B B B B B B) 0.0054 0.0000) ((A B B B B B A) 0.0022 0.0090) ((A B B B B A B) 0.0034 0.0000) ((A B B B B A A) 0.0026 0.0000) ((A B B B A B B) 0.0030 0.0000) ((A B B B A B A) 0.0024 0.0000) ((A B B B A A B) 0.0020 0.0090) ((A B B B A A A) 0.0036 0.0000) ((A B B A B B B) 0.0026 0.0040) ((A B B A B B A) 0.0010 0.0000) ((A B B A B A B) 0.0052 0.0130) ((A B B A B A A) 0.0032 0.0000) ((A B B A A B B) 0.0024 0.0040) ((A B B A A B A) 0.0022 0.0000) ((A B B A A A B) 0.0022 0.0000) ((A B B A A A A) 0.0026 0.0040) ((A B A B B B B) 0.0348 0.0260) ((A B A B B B A) 0.0038 0.0040) ((A B A B B A B) 0.0290 0.0700) ((A B A B B A A) 0.0048 0.0000) ((A B A B A B B) 0.0138 0.0090) ((A B A B A B A) 0.0046 0.0090) ((A B A B A A B) 0.0150 0.0260) ((A B A B A A A) 0.0036 0.0090) ((A B A A B B B) 0.0072 0.0000) ((A B A A B B A) 0.0022 0.0000) ((A B A A B A B) 0.0334 0.0220) ((A B A A B A A) 0.0032 0.0040) ((A B A A A B B) 0.0038 0.0000) ((A B A A A B A) 0.0024 0.0000) ((A B A A A A B) 0.0106 0.0180) ((A B A A A A A) 0.0046 0.0040) ((A A B B B B B) 0.0124 0.0130) ((A A B B B B A) 0.0030 0.0040) ((A A B B B A B) 0.0052 0.0040) ((A A B B B A A) 0.0020 0.0000) ((A A B B A B B) 0.0056 0.0040) ((A A B B A B A) 0.0030 0.0090) ((A A B B A A B) 0.0032 0.0000) ((A A B B A A A) 0.0032 0.0000) ((A A B A B B B) 0.0024 0.0040) ((A A B A B B A) 0.0020 0.0000) ((A A B A B A B) 0.0028 0.0000) ((A A B A B A A) 0.0016 0.0000) ((A A B A A B B) 0.0024 0.0000) ((A A B A A B A) 0.0026 0.0040) ((A A B A A A B) 0.0034 0.0000) ((A A B A A A A) 0.0020 0.0040) ((A A A B B B B) 0.1218 0.1410) ((A A A B B B A) 0.0116 0.0130) ((A A A B B A B) 0.0342 0.0260) ((A A A B B A A) 0.0054 0.0000) ((A A A B A B B) 0.0354 0.0130) ((A A A B A B A) 0.0072 0.0040) ((A A A B A A B) 0.0102 0.0130) ((A A A B A A A) 0.0020 0.0000) ((A A A A B B B) 0.0104 0.0040) ((A A A A B B A) 0.0022 0.0000) ((A A A A B A B) 0.0116 0.0130) ((A A A A B A A) 0.0024 0.0000) ((A A A A A B B) 0.0048 0.0040) ((A A A A A B A) 0.0026 0.0040) ((A A A A A A B) 0.0034 0.0000) ((A A A A A A A) 0.0020 0.0090) ((B B B B B B B) 0.0038 0.0000) )) (defparameter *experiment-2-patterns* '( (one one one two category-a) (one two one two category-a) (one two one one category-a) (one one two one category-a) (two one one one category-a) (one one two two category-b) (two one one two category-b) (two two two one category-b) (two two two two category-b))) (defparameter *experiment-2-transfer-patterns* '( (one two two one) (one two two two) (one one one one) (two two one two) (two one two one) (two two one one) (two one two two))) (defparameter interesting-patterns '((A A A A A A A) (A A A A B A B) (A A A B A A B) (A A A B A B B) (A A A B B A B) (A A A B B B A) (A A A B B B B) (A A B B A B A) (A A B B B B B) (A B A A A A B) (A B A A B A B) (A B A B A A A) (A B A B A A B) (A B A B A B A) (A B A B A B B) (A B A B B A B) (A B A B B B B) (A B B A B A B) (A B B B A A B) (A B B B B B A) (B A A A B A B) (B A A B B A B) (B A A B B B B) (B A B B B B B) (B B A A A A A) (B B A A A A B) (B B A A B A B) (B B A A B B B) (B B A B A A A) (B B A B A A B) (B B A B A B A) (B B A B A B B) (B B A B B A B) (B B A B B B A) (B B A B B B B) (B B B A A B B))) (defparameter *jtb-hack-track-track* nil) (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 *experiment-3-patterns* '((item1 h-nine p-two nil nil category-a) (item2 h-nine p-seven nil nil category-a) (item3 h-eight p-five nil nil category-a) (item4 h-seven p-zero nil nil category-a) (item5 h-seven p-nine nil nil category-a) (item6 h-six p-four nil nil category-a) (item7 h-five p-one nil nil category-a) (item8 h-five p-six nil nil category-a) (item9-1 h-seven p-two nil nil category-c) (item9-2 h-seven p-two nil nil category-c) (item9-3 h-seven p-two nil nil category-c) (item9-4 h-seven p-two nil nil category-c) (item10-1 h-seven p-seven nil nil category-a)(item10-2 h-seven p-seven nil nil category-a) (item11 h-four p-three nil nil category-b) (item12 h-four p-eight nil nil category-b) (item14 h-three p-five nil nil category-b) (item15 h-two p-zero nil nil category-b) (item16 h-two p-nine nil nil category-b) (item17 h-one p-four nil nil category-b) (item18 h-zero p-two nil nil category-b) (item19 h-zero p-seven nil nil category-b) (item20-1 h-two p-two nil nil category-b) (item20-2 h-two p-two nil nil category-b) (item20-3 h-two p-two nil nil category-b) (item20-4 h-two p-two nil nil category-b) (item21-1 h-two p-seven nil nil category-d) (item21-2 h-two p-seven nil nil category-d) ) ) (defparameter *interesting* '( (a a a a a) (a a a a b) (a a a b a) (a a a b b) (a a b a a) (a a b a b) (a a b b a) (a a b b b) (a b a a a) (a b a a b) (a b a b a) (a b a b b) (a b b a a) (a b b a b) (a b b b a) (a b b b b) (b a a a a) (b a a a b) (b a a b a) (b a a b b) (b a b a a) (b a b a b) (b a b b a) (b a b b b) (b b a a a) (b b a a b) (b b a b a) (b b a b b) (b b b a a) (b b b a b) (b b b b a) (b b b b b))) (defparameter *experiment-3-transfer-patterns* '( (tran0 h-zero p-zero nil nil category-b)(tran1 h-zero p-one nil nil category-b) (tran2 h-zero p-two nil nil category-b)(tran3 h-zero p-three nil nil category-b) (tran4 h-zero p-four nil nil category-b)(tran5 h-zero p-five nil nil category-b) (tran6 h-zero p-six nil nil category-b) (tran7 h-zero p-seven nil nil category-b) (tran8 h-zero p-eight nil nil category-b) (tran9 h-zero p-nine nil nil category-b) (tran10 h-one p-zero nil nil category-b) (tran11 h-one p-one nil nil category-b) (tran12 h-one p-two nil nil category-b) (tran13 h-one p-three nil nil category-b) (tran14 h-one p-four nil nil category-b) (tran15 h-one p-five nil nil category-b) (tran16 h-one p-six nil nil category-b) (tran17 h-one p-seven nil nil category-b) (tran18 h-one p-eight nil nil category-b) (tran19 h-one p-nine nil nil category-b) (tran20 h-two p-zero nil nil category-b) (tran21 h-two p-one nil nil category-b) (tran22 h-two p-two nil nil category-b) (tran23 h-two p-three nil nil category-b) (tran24 h-two p-four nil nil category-b) (tran25 h-two p-five nil nil category-b) (tran26 h-two p-six nil nil category-b) (tran27 h-two p-seven nil nil category-b) (tran28 h-two p-eight nil nil category-b) (tran29 h-two p-nine nil nil category-b) (tran30 h-three p-zero nil nil category-b) (tran31 h-three p-one nil nil category-b) (tran32 h-three p-two nil nil category-b) (tran33 h-three p-three nil nil category-b)(tran34 h-three p-four nil nil category-b) (tran35 h-three p-five nil nil category-b) (tran36 h-three p-six nil nil category-b) (tran37 h-three p-seven nil nil category-b)(tran38 h-three p-eight nil nil category-b) (tran39 h-three p-nine nil nil category-b) (tran40 h-four p-zero nil nil category-b) (tran41 h-four p-one nil nil category-b) (tran42 h-four p-two nil nil category-b) (tran43 h-four p-three nil nil category-b) (tran44 h-four p-four nil nil category-b) (tran45 h-four p-five nil nil category-b) (tran46 h-four p-six nil nil category-b) (tran47 h-four p-seven nil nil category-b) (tran48 h-four p-eight nil nil category-b) (tran49 h-four p-nine nil nil category-b nil nil category-b) (tran50 h-five p-zero nil nil category-a) (tran51 h-five p-one nil nil category-a) (tran52 h-five p-two nil nil category-a) (tran53 h-five p-three nil nil category-a) (tran54 h-five p-four nil nil category-a) (tran55 h-five p-five nil nil category-a) (tran56 h-five p-six nil nil category-a) (tran57 h-five p-seven nil nil category-a) (tran58 h-five p-eight nil nil category-a) (tran59 h-five p-nine nil nil category-a) (tran60 h-six p-zero nil nil category-a) (tran61 h-six p-one nil nil category-a) (tran62 h-six p-two nil nil category-a) (tran63 h-six p-three nil nil category-a) (tran64 h-six p-four nil nil category-a) (tran65 h-six p-five nil nil category-a) (tran66 h-six p-six nil nil category-a) (tran67 h-six p-seven nil nil category-a) (tran68 h-six p-eight nil nil category-a) (tran69 h-six p-nine nil nil category-a) (tran70 h-seven p-zero nil nil category-a) (tran71 h-seven p-one nil nil category-a) (tran72 h-seven p-two nil nil category-a)(tran73 h-seven p-three nil nil category-a)(tran74 h-seven p-four nil nil category-a) (tran75 h-seven p-five nil nil category-a) (tran76 h-seven p-six nil nil category-a) (tran77 h-seven p-seven nil nil category-a) (tran78 h-seven p-eight nil nil category-a)(tran79 h-seven p-nine nil nil category-a) (tran80 h-eight p-zero nil nil category-a) (tran81 h-eight p-one nil nil category-a) (tran82 h-eight p-two nil nil category-a) (tran83 h-eight p-three nil nil category-a) (tran84 h-eight p-four nil nil category-a) (tran85 h-eight p-five nil nil category-a) (tran86 h-eight p-six nil nil category-a) (tran87 h-eight p-seven nil nil category-a)(tran88 h-eight p-eight nil nil category-a)(tran89 h-eight p-nine nil nil category-a) (tran90 h-nine p-zero nil nil category-a) (tran91 h-nine p-one nil nil category-a) (tran92 h-nine p-two nil nil category-a) (tran93 h-nine p-three nil nil category-a) (tran94 h-nine p-four nil nil category-a) (tran95 h-nine p-five nil nil category-a) (tran96 h-nine p-six nil nil category-a) (tran97 h-nine p-seven nil nil category-a) (tran98 h-nine p-eight nil nil category-a) (tran99 h-nine p-nine nil nil category-a))) (defparameter *exp3-data* '(0.73 0.79 0.87 0.81 0.625 0.509 0.872 0.809)) (defparameter *experiment-3-all-patterns* (append *experiment-3-transfer-patterns* *experiment-3-patterns*)) (defparameter *p1-experiment-1-final-data* '(0.815 0.795 1.159 0.725 0.967 1.068 0.706 0.931 1.346 0.744 0.911 1.208)) (defparameter *p1-ebrw-data* '(0.971 0.831 1.04 0.797 0.907 0.945 0.779 0.908 1.257 0.767 0.826 1.341)) (defparameter *p1-experiment-1-learning-data* '(1.85 1.41 1.25 1.05 1.05 0.9 1.11 0.95 0.96 0.91 0.92 0.86 1.12 0.9 1.05 1.03 0.9 0.934 0.931 0.95 0.926 0.924 0.922 0.9 0.94 0.85 0.85 0.87 0.94 0.95 )) (defparameter *p1-ebrw-learning-data* '(1.86 1.364 1.201 1.12 1.072 1.04 1.017 1 0.986 0.976 0.967 0.96 0.954 0.949 0.944 0.94 0.937 0.934 0.931 0.929 0.926 0.924 0.922 0.921 0.919 0.918 0.916 0.915 0.914 0.913)) (defparameter *p2-experiment-1-final-data* '(0.982 0.601 1.007 0.546 0.665 0.649 0.529 0.619 0.734 0.53 0.577 0.857)) (defparameter *p2-ebrw-data* '(0.995 0.587 0.981 0.564 0.614 0.649 0.552 0.596 0.744 0.545 0.585 0.88)) (defparameter *p2-experiment-1-learning-data* '(1.010 .810 .750 .760 .810 .760 .805 .800 .800 .795 .815 .700 .720 .650 .700 .640 .640 .700 .600 .590 .600 .695 .690 .695 .695 .610 .610 .620 .590 .620)) (defparameter *p2-ebrw-learning-data* '(1.055765694 0.862582862 0.796230966 0.762438798 0.741888979 0.728042633 0.7180649 0.710525108 0.704622202 0.699872285 0.695965584 0.692694477 0.68991453 0.687522119 0.685440945 0.683613566 0.681995903 0.680553558 0.679259291 0.678091248 0.677031687 0.676066053 0.675182295 0.674370344 0.673621723 0.672929246 0.672286777 0.671689044 0.671131498 0.670610184)) (defparameter *p3-experiment-1-final-data* '(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 *p3-ebrw-data* '(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 *p3-experiment-1-learning-data* '(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 *p3-ebrw-learning-data* '(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)) (defun randomize (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 q-vals-from-list (p-vals noise) ; the first value needs to be the largest (let (q-val-res tsumlog) (setq tsumlog (- (/ 18.95 noise) (log (car p-vals)))) (setq q-val-res nil) (dolist (itm p-vals) (setq q-val-res (cons (/ (+ 1.05 (* noise (+ tsumlog (log itm)))) 20) q-val-res))) (reverse q-val-res)) ) (defun sqr (x) (* x x)) (defun correct-category (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 present-pattern (pattern) (let (name) (setf *last-guess* nil) (setq *style* nil) (setq *done-time* nil) (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) (goal-focus-fct (list *current-focus*)) (run) (setq *jtb-hack-track* (cons (if (equal *style* 'rule) 1 (if (equal *style* 'exem4) 0 0.5)) *jtb-hack-track*)) *last-guess*) ) (defun opposite-category (category) (if (equal category 'category-A) 'category-B (if (equal category 'category-B) 'category-A)) ) (defun winner (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 (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 () (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-setup (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-present-pattern (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-present-block () (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 '(0 1 2 3 4 5 6 7 8 9 10 11))) (setq pb-res (cons (cons itm (experiment-1-present-pattern (nth itm *experiment-1-patterns*))) pb-res))) (reverse pb-res) ) ) (defun experiment-1-present-n-blocks (n) (if (equal n 0) NIL (cons (experiment-1-present-block) (experiment-1-present-n-blocks (- n 1)))) ) (defun experiment-1-get-pattern-data (patnum trial-data) (mapcar #'(lambda(x) (assoc patnum x)) trial-data) ) (defun experiment-1-average-pattern-times (patnum trial-data) (list-average (mapcar #'second (experiment-1-get-pattern-data patnum trial-data))) ) (defun experiment-1-average-pattern-cycles (patnum trial-data) (list-average (mapcar #'fourth (experiment-1-get-pattern-data patnum trial-data))) ) (defun experiment-1-probability-correct (patnum trial-data) (list-average (mapcar #'(lambda(x) (if (equal (third x) (fifth (nth patnum *experiment-1-patterns*))) 1 0)) (experiment-1-get-pattern-data patnum trial-data))) ) (defun experiment-1-run-once (rt ga effort intercept) (setf *categories* '(category-a category-b)) (setq *jtb-hacked-block-number* 0) (experiment-1-setup 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 5)) (setq results-total (cons (list (list-average (mapcar #'(lambda(x) (experiment-1-average-pattern-times x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11))) (mapcar #'(lambda(x) (experiment-1-average-pattern-times x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11)) (mapcar #'(lambda(x) (experiment-1-probability-correct x results-5)) '(0 1 2 3 4 5 6 7 8 9 10 11)) (mapcar #'(lambda(x) (experiment-1-average-pattern-cycles 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* (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* (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* (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 list-average* (x) (list-average (nthcdr 6 (reverse x)))) (defun list-average (lis) (/ (summa lis) (length lis)) ) (defun summa (lis) (if (equal (length lis) 0) 0 (+ (car lis) (summa (cdr lis))))) (defun square (x) (* x x)) (defun jtb-normalize (lis) (mapcar #'(lambda(x) (- x (list-average lis))) lis) ) (defun experiment-1-test (rt ga effort intercept) (experiment-1-run-once rt ga effort intercept)) (defun hard-core-exp-1-test (n rt ga effort intercept) (let (res tres) (do ((i 0 (+ 1 i))) ((equal i n)) (setq res (cons (experiment-1-test rt ga effort intercept) res)) ) (print (mapcar #'fourth res)) (print (list-average (mapcar #'first res))) (print (list-average (mapcar #'second res))) (print (list-average (mapcar #'third res))) (setq tres '()) (do ((n 0 (+ 1 n))) ((equal n 30)) (setq tres (cons (* 1.0 (list-average (mapcar #'(lambda (x) (nth n x)) (mapcar #'first (mapcar #'fifth res))))) tres))) (print (reverse tres)) (dolist (itm (reverse tres)) (print itm)) (setq tres '()) (do ((n 0 (+ 1 n))) ((equal n 12)) (setq tres (cons (* 1.0 (list-average (mapcar #'(lambda (x) (nth n x)) (mapcar #'second (mapcar #'fifth res))))) tres))) (print (reverse tres)) (dolist (itm (reverse tres)) (print itm)) (list-average (mapcar #'fourth res)) ) ) (defun average-a-lol (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 (n rt effort intercept) (do ((count 0 (1+ count)) (result nil (cons (experiment-1-test rt 0 effort intercept) result))) ((equal count n) (list (average-a-lol (mapcar 'first result)) (average-a-lol (mapcar 'second result)))))) (defun doit-1 (n time tau intercept counter) (setq *ebrw-criterion* counter) (setf *sims* '(set-similarities (bri2 bri1 0.993797325 ) (bri3 bri1 0.982425753 )(bri3 bri2 0.988628428 ) (bri4 bri1 0.985527091 )(bri4 bri2 0.991729766 )(bri4 bri3 0.996898662 ) (bri5 bri1 0.961750168 )(bri5 bri2 0.967952843 )(bri5 bri3 0.979324415 )(bri5 bri4 0.976223077 ) (bri6 bri1 0.97312174 )(bri6 bri2 0.979324415 )(bri6 bri3 0.990695987 )(bri6 bri4 0.987594649 )(bri6 bri5 0.988628428 ) (bri7 bri1 0.979324415 )(bri7 bri2 0.985527091 )(bri7 bri3 0.996898662 )(bri7 bri4 0.993797325 )(bri7 bri5 0.982425753 )(bri7 bri6 0.993797325 ) (bri8 bri1 0.954513713 )(bri8 bri2 0.960716389 )(bri8 bri3 0.97208796 )(bri8 bri4 0.968986623 )(bri8 bri5 0.992763545 )(bri8 bri6 0.981391974 )(bri8 bri7 0.975189298 ) (bri9 bri1 0.95864883 )(bri9 bri2 0.964851506 )(bri9 bri3 0.976223077 )(bri9 bri4 0.97312174 )(bri9 bri5 0.996898662 )(bri9 bri6 0.985527091 )(bri9 bri7 0.979324415 )(bri9 bri8 0.995864883 ) (bri10 bri1 0.93177057 )(bri10 bri2 0.937973245 )(bri10 bri3 0.949344817 )(bri10 bri4 0.946243479 )(bri10 bri5 0.970020402 )(bri10 bri6 0.95864883 )(bri10 bri7 0.952446155 )(bri10 bri8 0.977256857 )(bri10 bri9 0.97312174 ) (bri11 bri1 0.940040804 )(bri11 bri2 0.946243479 )(bri11 bri3 0.957615051 )(bri11 bri4 0.954513713 )(bri11 bri5 0.978290636 )(bri11 bri6 0.966919064 )(bri11 bri7 0.960716389 )(bri11 bri8 0.985527091 )(bri11 bri9 0.981391974 )(bri11 bri10 0.991729766 ) (bri12 bri1 0.952446155 )(bri12 bri2 0.95864883 )(bri12 bri3 0.970020402 )(bri12 bri4 0.966919064 )(bri12 bri5 0.990695987 )(bri12 bri6 0.979324415 )(bri12 bri7 0.97312174 )(bri12 bri8 0.997932442 )(bri12 bri9 0.993797325 )(bri12 bri10 0.979324415 )(bri12 bri11 0.987594649 ) (sat2 sat1 0.971118455 ) (sat3 sat1 0.987484664 )(sat3 sat2 0.983633791 ) (sat4 sat1 0.957640401 )(sat4 sat2 0.986521946 )(sat4 sat3 0.970155737 ) (sat5 sat1 0.997111846 )(sat5 sat2 0.97400661 )(sat5 sat3 0.990372818 )(sat5 sat4 0.960528555 ) (sat6 sat1 0.965342146 )(sat6 sat2 0.994223691 )(sat6 sat3 0.977857482 )(sat6 sat4 0.992298255 )(sat6 sat5 0.968230301 ) (sat7 sat1 0.936460601 )(sat7 sat2 0.965342146 )(sat7 sat3 0.948975937 )(sat7 sat4 0.9788202 )(sat7 sat5 0.939348756 )(sat7 sat6 0.971118455 ) (sat8 sat1 0.984596509 )(sat8 sat2 0.986521946 )(sat8 sat3 0.997111846 )(sat8 sat4 0.973043891 )(sat8 sat5 0.987484664 )(sat8 sat6 0.980745637 )(sat8 sat7 0.951864092 ) (sat9 sat1 0.951864092 )(sat9 sat2 0.980745637 )(sat9 sat3 0.964379428 )(sat9 sat4 0.994223691 )(sat9 sat5 0.954752246 )(sat9 sat6 0.986521946 )(sat9 sat7 0.984596509 )(sat9 sat8 0.967267582 ) (sat10 sat1 0.990372818 )(sat10 sat2 0.980745637 )(sat10 sat3 0.997111846 )(sat10 sat4 0.967267582 )(sat10 sat5 0.993260973 )(sat10 sat6 0.974969328 )(sat10 sat7 0.946087783 )(sat10 sat8 0.994223691 )(sat10 sat9 0.961491273 ) (sat11 sat1 0.973043891 )(sat11 sat2 0.998074564 )(sat11 sat3 0.985559228 )(sat11 sat4 0.984596509 )(sat11 sat5 0.975932046 )(sat11 sat6 0.992298255 )(sat11 sat7 0.96341671 )(sat11 sat8 0.988447382 )(sat11 sat9 0.9788202 )(sat11 sat10 0.982671073 ) (sat12 sat1 0.961491273 )(sat12 sat2 0.990372818 )(sat12 sat3 0.97400661 )(sat12 sat4 0.996149127 )(sat12 sat5 0.964379428 )(sat12 sat6 0.996149127 )(sat12 sat7 0.974969328 )(sat12 sat8 0.976894764 )(sat12 sat9 0.990372818 )(sat12 sat10 0.971118455 )(sat12 sat11 0.988447382 ) )) (run-1-n n tau time intercept)) (defun doit-2 (n time tau intercept counter) (setq *ebrw-criterion* counter) (setf *sims* '(set-similarities (bri2 bri1 0.996672326 ) (bri3 bri1 0.997781551 )(bri3 bri2 0.994453877 ) (bri4 bri1 1 )(bri4 bri2 0.996672326 )(bri4 bri3 0.997781551 ) (bri5 bri1 0.985025469 )(bri5 bri2 0.981697796 )(bri5 bri3 0.987243918 )(bri5 bri4 0.985025469 ) (bri6 bri1 0.994453877 )(bri6 bri2 0.991126204 )(bri6 bri3 0.996672326 )(bri6 bri4 0.994453877 )(bri6 bri5 0.990571592 ) (bri7 bri1 0.994453877 )(bri7 bri2 0.991126204 )(bri7 bri3 0.996672326 )(bri7 bri4 0.994453877 )(bri7 bri5 0.990571592 )(bri7 bri6 1 ) (bri8 bri1 0.978924734 )(bri8 bri2 0.975597061 )(bri8 bri3 0.981143183 )(bri8 bri4 0.978924734 )(bri8 bri5 0.993899265 )(bri8 bri6 0.984470857 )(bri8 bri7 0.984470857 ) (bri9 bri1 0.984470857 )(bri9 bri2 0.981143183 )(bri9 bri3 0.986689306 )(bri9 bri4 0.984470857 )(bri9 bri5 0.999445388 )(bri9 bri6 0.990016979 )(bri9 bri7 0.990016979 )(bri9 bri8 0.994453877 ) (bri10 bri1 0.966723265 )(bri10 bri2 0.963395591 )(bri10 bri3 0.968941714 )(bri10 bri4 0.966723265 )(bri10 bri5 0.981697796 )(bri10 bri6 0.972269387 )(bri10 bri7 0.972269387 )(bri10 bri8 0.98779853 )(bri10 bri9 0.982252408 ) (bri11 bri1 0.975597061 )(bri11 bri2 0.972269387 )(bri11 bri3 0.97781551 )(bri11 bri4 0.975597061 )(bri11 bri5 0.990571592 )(bri11 bri6 0.981143183 )(bri11 bri7 0.981143183 )(bri11 bri8 0.996672326 )(bri11 bri9 0.991126204 )(bri11 bri10 0.991126204 ) (bri12 bri1 0.978924734 )(bri12 bri2 0.975597061 )(bri12 bri3 0.981143183 )(bri12 bri4 0.978924734 )(bri12 bri5 0.993899265 )(bri12 bri6 0.984470857 )(bri12 bri7 0.984470857 )(bri12 bri8 1 )(bri12 bri9 0.994453877 )(bri12 bri10 0.98779853 )(bri12 bri11 0.996672326 ) (sat2 sat1 0.978392704 ) (sat3 sat1 0.991357082 )(sat3 sat2 0.987035622 ) (sat4 sat1 0.969749785 )(sat4 sat2 0.991357082 )(sat4 sat3 0.978392704 ) (sat5 sat1 0.994238054 )(sat5 sat2 0.972630758 )(sat5 sat3 0.985595136 )(sat5 sat4 0.96398784 ) (sat6 sat1 0.97983319 )(sat6 sat2 0.998559514 )(sat6 sat3 0.988476109 )(sat6 sat4 0.989916595 )(sat6 sat5 0.974071245 ) (sat7 sat1 0.958225894 )(sat7 sat2 0.97983319 )(sat7 sat3 0.966868813 )(sat7 sat4 0.988476109 )(sat7 sat5 0.952463948 )(sat7 sat6 0.978392704 ) (sat8 sat1 0.996398784 )(sat8 sat2 0.98199392 )(sat8 sat3 0.994958298 )(sat8 sat4 0.973351001 )(sat8 sat5 0.990636838 )(sat8 sat6 0.983434406 )(sat8 sat7 0.96182711 ) (sat9 sat1 0.969749785 )(sat9 sat2 0.991357082 )(sat9 sat3 0.978392704 )(sat9 sat4 1 )(sat9 sat5 0.96398784 )(sat9 sat6 0.989916595 )(sat9 sat7 0.988476109 )(sat9 sat8 0.973351001 ) (sat10 sat1 0.998559514 )(sat10 sat2 0.97983319 )(sat10 sat3 0.992797568 )(sat10 sat4 0.971190272 )(sat10 sat5 0.992797568 )(sat10 sat6 0.981273677 )(sat10 sat7 0.959666381 )(sat10 sat8 0.99783927 )(sat10 sat9 0.971190272 ) (sat11 sat1 0.994238054 )(sat11 sat2 0.984154649 )(sat11 sat3 0.997119027 )(sat11 sat4 0.975511731 )(sat11 sat5 0.988476109 )(sat11 sat6 0.985595136 )(sat11 sat7 0.96398784 )(sat11 sat8 0.99783927 )(sat11 sat9 0.975511731 )(sat11 sat10 0.995678541 ) (sat12 sat1 0.97983319 )(sat12 sat2 0.998559514 )(sat12 sat3 0.988476109 )(sat12 sat4 0.989916595 )(sat12 sat5 0.974071245 )(sat12 sat6 1 )(sat12 sat7 0.978392704 )(sat12 sat8 0.983434406 )(sat12 sat9 0.989916595 )(sat12 sat10 0.981273677 )(sat12 sat11 0.985595136 ) )) (run-1-n n tau time intercept) ) (defun doit-3 (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 n tau time intercept) ) (defun demo-1 (n) (print "Participant 1") (print (doit-1 n 0.10 -0.3 0.18 4)) (print "Participant 2") (print (doit-2 n 0.05 0.5 0.18 4)) (print "Participant 3") (print (doit-3 n 0.050 0.0 0.25 4)) nil) (defun present-block (pattern-list) ; IMPORTANT: THIS FUNCTION DOES NOT RANDOMIZE THE STIMULI!!! ; DO IT WHEN YOU CALL! (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 pattern-list) (setq pb-res (cons (present-pattern itm) pb-res))) (reverse pb-res) ) ) (defun times10000round (x) (round (* 10000 x))) (defun set-gain-noise-and-production (noise) (let ()(sgp-fct (list :egs noise)) ) ) (defun pattern-list-trans (lis) (let (res) (setq res '()) (dolist (itm lis) (if (eq itm 'Category-A) (setq res (cons 'A res)) (if (eq itm 'Category-B) (setq res (cons 'B res)) (if (eq itm 'Category-C) (setq res (cons 'C res)) (if (eq itm 'Category-D) (setq res (cons 'D res))))))) (reverse res) ) ) (defun two-out-of-three (lis) (if (or (equal (first lis) (second lis)) (equal (first lis) (third lis))) (first lis) (second lis)) ) (defun majority-rule (l1 l2 l3) (let (res) (setq res '()) (do ((n 0 (+ 1 n))) ((equal n (length l1))) (setq res (cons (two-out-of-three (mapcar #'(lambda(x) (nth n x)) (list l1 l2 l3))) res))) (reverse res) ) ) (defun hamming-dist (l1 l2) (let (total) (setq total 0) (do ((n 0 (+ 1 n))) ((equal n (length l1))) (if (not (equal (nth n l1) (nth n l2))) (setq total (+ 1 total)))) total) ) (defun experiment-2-setup (noise) (add-dm (category-a ISA category opposite category-b) (category-b ISA category opposite category-a) (one ISA feature-value value 1) (two ISA feature-value value 2) (checked ISA feature-value) (feature1-p ISA rule feature1 1.5 viable T type perfect correct 0 incorrect 0) (feature2-p ISA rule feature2 1.5 viable T type perfect correct 0 incorrect 0) (feature3-p ISA rule feature3 1.5 viable T type perfect correct 0 incorrect 0) (feature4-p ISA rule feature4 1.5 viable T type perfect correct 0 incorrect 0) (feature1-i ISA rule feature1 1.5 viable T type imperfect correct 0 incorrect 0) (feature2-i ISA rule feature2 1.5 viable T type imperfect correct 0 incorrect 0) (feature3-i ISA rule feature3 1.5 viable T type imperfect correct 0 incorrect 0) (feature4-i ISA rule feature4 1.5 viable T type imperfect correct 0 incorrect 0) ) (set-base-levels (feature1-p 1000 -100) (feature2-p 1000 -100) (feature3-p 1000 -100) (feature4-p 1000 -100) (feature1-i 1000 -100) (feature2-i 1000 -100) (feature3-i 1000 -100) (feature4-i 1000 -100) (one 1000 -100) (two 1000 -100) (category-a 1000 -100) (category-b 1000 -100) ) (set-similarities (one two 0.95)) (setq *block-size* 9) (setq *lax-criterion* 0.55) (setq *strict-criterion* (+ 0.65 (/ (random 2000) 10000))) (setq *ebrw-criterion* 1) (sgp :rt 1.1) (set-gain-noise-and-production noise) ) (defun run-experiment-2-once (noise time intercept) (setf *categories* '(category-a category-b)) (let (transfer-results styles) (reset) (spp-fct (list 'recall-2feature :effort time)) (spp-fct (list 'done-classifying-by-exemplar :effort intercept)) (spp-fct (list 'DONE-CLASSIFYING-BY-RULE :effort intercept)) (setq *jtb-hacked-block-number* 0) (experiment-2-setup noise) (sgp-fct (list :v nil :rt *rt*)) (setq *system-is-still-learning* 1) (do ((n 0 (+ 1 n))) ((equal n 16)) (present-block (randomize *experiment-2-patterns*)) (setf styles (append styles (list *style*))) ) (setq transfer-results '()) (setq *system-is-still-learning* '()) (do ((n 0 (+ 1 n))) ((equal n 3)) (setq transfer-results (cons (present-block *experiment-2-transfer-patterns*) transfer-results))) (list (hamming-dist (third transfer-results) (second transfer-results)) (pattern-list-trans (majority-rule (first transfer-results) (second transfer-results) (third transfer-results))) styles) )) (defun nlist (n) ; this is a function I need to create a list of the integers from 0 to n-1 (let (nlist-res) (do ((i (- n 1) (- i 1))) ((equal i -1)) (setq nlist-res (cons i nlist-res)) ) nlist-res )) (defun experiment-2-present-many-subjects (number-subjects gain-noise time intercept) (let (all-hammings all-generalizations immediate-result tmp hamm-res gen-res (rule-count 0) history) (setq all-hammings '()) (setq all-generalizations '()) (do ((n 0 (+ 1 n))) ((equal n number-subjects)) (setq immediate-result (run-experiment-2-once gain-noise time intercept)) (cond ((eq *style* 'rule) (setf rule-count (1+ rule-count)))) (setq all-hammings (cons (first immediate-result) all-hammings)) (setq all-generalizations (cons (second immediate-result) all-generalizations)) (setf history (cons (third immediate-result) history)) (setq *jtb-hack-track-track* (cons *jtb-hack-track* *jtb-hack-track-track*)) (setq *jtb-hack-track* nil) ) (setq tmp all-generalizations) (setq gen-res nil) (dolist (itm all-generalizations) (if (member itm tmp) (list (setq gen-res (cons (list itm (count itm tmp :test #'equal)) gen-res)) (setq tmp (set-difference tmp (list itm) :test #'equal)))) ) (setq hamm-res '()) (dolist (itm '(0 1 2 3 4 5 6 7)) (if (member itm all-hammings) (setq hamm-res (cons (list itm (count itm all-hammings :test #'equal)) hamm-res)))) (list hamm-res gen-res rule-count (examples history)))) (defun examples (history) (do ((temp history (cdr temp)) (result (list 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (do ((temp1 result (cdr temp1)) (temp2 (car temp) (cdr temp2)) (answer nil (cond ((eq (car temp2) 'rule) (cons (car temp1) answer)) (t (cons (1+ (car temp1)) answer))))) ((null temp1) (reverse answer))))) ((null temp) result))) (defun experiment-2-run-and-show (number-subjects time intercept) (let (results this-result nosof-freq result-value (gain-noise *egs*)what-to-return ssd2) (setq results (experiment-2-present-many-subjects number-subjects gain-noise time intercept)) (setq what-to-return '()) (setq ssd2 0) (dolist (itm interesting-patterns) (setq this-result (assoc itm (second results) :test #'equal)) (setq nosof-freq (second (assoc itm nosof-results :test #'equal))) (setq result-value (if this-result (second this-result) 0)) (setq what-to-return (cons (/ result-value number-subjects) what-to-return)) (setq ssd2 (+ (sqr (- nosof-freq (/ result-value number-subjects))) ssd2)) ) (list (second results) (fourth results)) ) ) (defun match-pattern (a b) (and (eq (first a) (first b)) (eq (second a) (second b)) (eq (fourth a) (third b)) (eq (fifth a) (fourth b)) (eq (sixth a) (fifth b)))) (defun aggregate (data n) (do ((temp *interesting* (cdr temp)) (result nil (append result (list (cons (car temp) (do ((temp1 data (cdr temp1)) (sum 0 (cond ((match-pattern (caar temp1) (car temp)) (+ sum (cadar temp1))) (t sum)))) ((null temp1) (/ sum (* n 1.0))))))))) ((null temp) (mapcar 'print result) nil))) (defun demo-2 (n time tau intercept counter) (let (result) (setf *rt* tau) (setq *ebrw-criterion* counter) (setf result (experiment-2-run-and-show n time intercept)) (aggregate (car result) n) (mapcar #'(lambda (x) (/ x (* 1.0 n))) (second result)))) (defun set-my-similarities-1 (chunk-list) ; the big assumption made here for convenience is that values can not span a range of more ; than 10 (let () (dolist (itm1 chunk-list) (dolist (itm2 chunk-list) (set-similarities-fct (list (list itm1 itm2 (- 1 (/ (* (abs (- (chunk-slot-value-fct itm1 'value) (chunk-slot-value-fct itm2 'value))) 1) *jtb-sim-factor*))))))) ) ) (defun set-my-similarities-2 (chunk-list) ; the big assumption made here for convenience is that values can not span a range of more ; than 10 (let () (dolist (itm1 chunk-list) (dolist (itm2 chunk-list) (set-similarities-fct (list (list itm1 itm2 (- 1 (/ (* (abs (- (chunk-slot-value-fct itm1 'value) (chunk-slot-value-fct itm2 'value))) 1) (* 1 *jtb-sim-factor*)))))))) ) ) (defun analyze-results (results pat1 pat2 pat3 pat4) (do ((temp results (cdr temp)) (r1 nil (cond ((member (first (car temp)) (car pat1)) (setf r1 (cons (position (second (car temp)) (cadr pat1)) r1))) (t r1))) (r2 nil (cond ((member (first (car temp)) (car pat2)) (setf r2 (cons (position (second (car temp)) (cadr pat2)) r2))) (t r2))) (r3 nil (cond ((member (first (car temp)) (car pat3)) (setf r3 (cons (position (second (car temp)) (cadr pat3)) r3))) (t r3))) (r4 nil (cond ((member (first (car temp)) (car pat4)) (setf r4 (cons (position (second (car temp)) (cadr pat4)) r4))) (t r4)))) ((null temp) (list (reverse r1) (reverse r2) (reverse r3) (reverse r4))))) (defun experiment-3-setup (rt) (add-dm (h-zero ISA feature-value value 0) (h-one ISA feature-value value 1) (h-two ISA feature-value value 2) (h-three ISA feature-value value 3) (h-four ISA feature-value value 4) (h-five ISA feature-value value 5) (h-six ISA feature-value value 6) (h-seven ISA feature-value value 7) (h-eight ISA feature-value value 8) (h-nine ISA feature-value value 9) (p-zero ISA feature-value value 0) (p-one ISA feature-value value 1) (p-two ISA feature-value value 2) (p-three ISA feature-value value 3) (p-four ISA feature-value value 4) (p-five ISA feature-value value 5) (p-six ISA feature-value value 6) (p-seven ISA feature-value value 7) (p-eight ISA feature-value value 8) (p-nine ISA feature-value value 9) (category-a ISA category opposite category-b) (category-b ISA category opposite category-a) (category-c ISA category opposite category-d) (category-d ISA category opposite category-c) (rule-1 ISA rule feature1 4.5 viable T type imperfect correct 0 incorrect 0) (rule-2 ISA rule feature1 4.5 viable T type perfect correct 0 incorrect 0) (rule-3 ISA rule feature1 4.5 viable T type imperfect correct 0 incorrect 0) (rule-4 ISA rule feature1 4.5 viable T type imperfect correct 0 incorrect 0) (rule-5 ISA rule feature1 4.5 viable T type imperfect correct 0 incorrect 0) (rule-6 ISA rule feature1 4.5 viable T type imperfect correct 0 incorrect 0) ) (set-base-levels (h-zero 1000 -100) (h-one 1000 -100) (h-two 1000 -100) (h-three 1000 -100) (h-four 1000 -100) (h-five 1000 -100) (h-six 1000 -100) (h-seven 1000 -100) (h-eight 1000 -100) (h-nine 1000 -100) (p-zero 1000 -100) (p-one 1000 -100) (p-two 1000 -100) (p-three 1000 -100) (p-four 1000 -100) (p-five 1000 -100) (p-six 1000 -100) (p-seven 1000 -100) (p-eight 1000 -100) (p-nine 1000 -100) (category-a 1000 -100) (category-b 1000 -100) (category-c 1000 -100) (category-d 1000 -100) (rule-1 1000 -100) (rule-2 1000 -100) (rule-3 1000 -100) (rule-4 1000 -100) (rule-5 1000 -100) (rule-6 1000 -100) ) (setq *block-size* 9) (setq *lax-criterion* 0.5) (setq *strict-criterion* 0.6) (setq *ebrw-criterion* 4) (set-my-similarities-1 '(h-zero h-one h-two h-three h-four h-five h-six h-seven h-eight h-nine)) (set-my-similarities-2 '(p-zero p-one p-two p-three p-four p-five p-six p-seven p-eight p-nine)) (sgp-fct (list :rt rt)) (sgp :lf 0.5) (sgp :lf 0.5) (setf *ebrw-criterion* 1)) (defun experiment-3-present-pattern (pattern) (let (name) (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 *done-time* nil) (setq *STYLE* nil) (goal-focus-fct (list *current-focus*)) (run) (if (null *done-time*) (setq *done-time* (actr-time))) (setq *jtb-hack-track* (cons (if (equal *style* 'rule) 1 (if (equal *style* 'exem4) 0 0.5)) *jtb-hack-track*)) (list *last-guess* *STYLE*))) (defun experiment-3-present-block (patterns) (let (rule-use) (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))) (mapcar #'(lambda(x) (eval `(sdp ,x :references ,(* 2 *jtb-hacked-block-number*)))) (no-output (sdm isa stimulus feature1 h-seven feature2 p-seven category category-a))) (mapcar #'(lambda(x) (eval `(sdp ,x :references ,(* 2 *jtb-hacked-block-number*)))) (no-output (sdm isa stimulus feature1 h-two feature2 p-seven category-d))) (mapcar #'(lambda(x) (eval `(sdp ,x :references ,(* 4 *jtb-hacked-block-number*)))) (no-output (sdm isa stimulus feature1 h-seven feature2 p-two category category-c))) (mapcar #'(lambda(x) (eval `(sdp ,x :references ,(* 4 *jtb-hacked-block-number*)))) (no-output (sdm isa stimulus feature1 h-two feature2 p-two category category-b))) (let (pb-res) (setq pb-res '()) (dolist (itm (randomize patterns)) (setq pb-res (cons (cons (first itm) (experiment-3-present-pattern (cdr itm))) pb-res))) (setq rule-use 0) (mapcar (lambda(x) (if (equal x 'rule) (setq rule-use (+ 1 rule-use)))) (mapcar #'third pb-res)) (sort pb-res #'string-lessp :key #'car) ) )) (defun find-tran-pattern (pat tran-res) (let (ftp-res) (setq ftp-res 'nil) (dolist (itm tran-res) (if (equal (car itm) pat) (setq ftp-res (cons itm ftp-res)))) ftp-res )) (defun convert-to-rule-response (response) (if (equal response 'category-a) 'category-a (if (equal response 'category-b) 'category-b (if (equal response 'category-c) 'category-a (if (equal response 'category-d) 'category-b nil)))) ) (defun rule-appropriate-response-p (response stim) (if (equal response (convert-to-rule-response (nth 5 (assoc stim *experiment-3-all-patterns*)) )) 1 0) ) (defun run-experiment-3-once ( time intercept) (setf *categories* '(category-a category-b category-c category-d)) (let (transfer-results results learning transfer (style nil)) (reset) (spp-fct (list 'done-classifying-by-exemplar :effort intercept)) (spp-fct (list 'DONE-CLASSIFYING-BY-RULE :effort intercept)) (spp-fct (list 'recall-2feature :effort time)) (experiment-3-setup *rt*) (eval `(sgp :v nil) ) (setq *system-is-still-learning* 1) (setq *jtb-hacked-block-number* 1) (do ((n 0 (+ 1 n))) ((equal n 16)) (setq results (append results (list (experiment-3-present-block *experiment-3-patterns*)))) (setf style (append style (list *style*))) (setq *system-is-still-learning* nil) (setq transfer-results (append (experiment-3-present-block (nbutlast (randomize *experiment-3-transfer-patterns*) 85)) transfer-results)) (setq *system-is-still-learning* 1)) (setf *styles* (cons style *STYLES*)) (setf learning (analyze-results (apply 'append results) '((item9-1 item9-2 item9-3 item9-4) (category-a category-b category-c category-d)) '((item10-1 item10-2) (category-a category-b category-c category-d)) '((item20-1 item20-2 item20-3 item20-4) (category-a category-b category-c category-d)) '((item21-1 item21-2) (category-a category-b category-c category-d)))) (setf *learning* (cons learning *learning*)) (setf transfer (analyze-results transfer-results '((tran81 tran82 tran83 tran71 tran73 tran61 tran62 tran63) (category-a category-b category-c category-d)) '((tran86 tran87 tran88 tran76 tran78 tran66 tran67 tran68) (category-a category-b category-c category-d)) '((tran31 tran32 tran33 tran21 tran23 tran11 tran12 tran13) (category-a category-b category-c category-d)) '((tran36 tran37 tran38 tran26 tran28 tran16 tran17 tran18) (category-a category-b category-c category-d)))) (list (score-3 (first transfer) 0) (score-3 (fourth transfer) 1) (score-3 (third transfer) 1) (score-3 (second transfer) 0) (score-3 (first learning) 2) (score-3 (fourth learning) 3) (score-3 (third learning) 1)(score-3 (second learning)0)) )) (defun score-a (lis target) (do ((temp lis (cdr temp)) (result nil (cons (cond ((eq (car temp) target) 1) (t 0)) result))) ((null temp) (reverse result)))) (defun analyze-learning () (do ((temp *learning* (cdr temp)) (result (list (list 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (list 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (do ((temp1 (score-a (first (car temp)) 2) (cddddr temp1)) (temp2 (score-a (second (car temp)) 0) (cddr temp2)) (temp3 (score-a (third (car temp)) 1) (cddddr temp3)) (temp4 (score-a (fourth (car temp)) 3) (cddr temp4)) (temp5 (first result) (cdr temp5)) (temp6 (second result) (cdr temp6)) (temp7 (third result) (cdr temp7)) (temp8 (fourth result) (cdr temp8)) (result1 nil (cons (+ (/ (+ (first temp1) (second temp1) (third temp1) (fourth temp1)(first temp4) (second temp4)) (* (length *learning*) 6.0)) (car temp5)) result1)) (result2 nil (cons (+ (/ (+ (first temp2) (second temp2)(first temp3) (second temp3)(third temp3) (fourth temp3)) (* (length *learning*)6.0)) (car temp6)) result2))) ((null temp1) (list (reverse result1) (reverse result2) ))))) ((null temp) result))) (defun analyze-style () (do ((temp *styles* (cdr temp)) (result (list 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0) (do ((temp1 (car temp) (cdr temp1)) (temp2 result (cdr temp2)) (result1 nil (cond ((eq (car temp1) 'rule) (cons (car temp2) result1)) (t (cons (+ (/ 1 (length *styles*)) (car temp2)) result1))))) ((null temp1) (reverse result1))))) ((null temp) result))) (defun run-n (n time intercept) (setf *learning* nil) (setf *styles* nil) (do ((count 0 (1+ count)) (result (list 0 0 0 0 0 0 0 0) (do ((temp1 (run-experiment-3-once time intercept) (cdr temp1)) (temp2 result (cdr temp2)) (result1 nil (cons (+ (/ (car temp1) n) (car temp2)) result1))) ((null temp1) (reverse result1))))) ((equal count n) (deviations-3 result)))) (defun deviations-3 (lis) (print lis) ; (print (analyze-learning)) (print (analyze-style)) (do ((temp1 lis (cdr temp1)) (temp2 *exp3-data* (cdr temp2)) (result 0 (+ result (sqr (- (car temp1) (car temp2)))))) ((null temp1) result))) (defun rule-ish (lis) (/ (+ (first lis) (second lis) (third lis) (fourth lis) (- 1 (fifth lis)) (sixth lis)) 6)) (defun score-3 (lis target) (do ((temp lis (cdr temp)) (result 0.0 (cond ((eq (car temp) target) (1+ result)) (t result)))) ((null temp) (/ result (length lis))))) (defun demo-3 (n time tau intercept counter) (setf *rt* tau) (setq *ebrw-criterion* counter) (setf *jtb-sim-factor* 30) (run-n n time intercept)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; The ACT-R model (clear-all) (sgp-fct (list :lt nil :pct nil :pmt nil :v nil :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)) choice random ) (P random-guess-was-right =goal> ISA presentation choice random category =c !eval! (equal =c (correct-category =goal)) ==> =goal> evaluated right choice rule ) (P random-guess-was-wrong =goal> ISA presentation choice random category =c !eval! (not (equal =c (correct-category =goal))) ==> =goal> evaluated wrong category (!eval! (correct-category =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)) ) (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)) 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 =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 =goal)) ) (P recall-continue-b =goal> isa classify-by-exemplar ==> !eval! (increment-category-count =goal 'category-b) =goal> category (!eval! (winner =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 =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 =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 =goal))) ==> =goal> evaluated wrong category (!eval! (correct-category =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 =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 =goal))) ==> =goal> category (!eval! (correct-category =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 =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 =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 =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 =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)