10 !====================== WESS7 ====================== ! TMAZE ! SIMULATION OF PUNISHMENT IN ANIMAL DISCRIMINATION ! LEARNING; WITH 5 INDEPENDENT VARIABLES AND 3 15 ! DEPENDENT VARIABLES. !=================================================== ! WRITTEN BY DR. P.F.SPELT, WABASH COLLEGE ! MARCH 1, 1975 25 !OTHER PROGRAMS CHAIN HERE 30 O$=SYS(CHR$(7%)) 35 OPEN O$ FOR INPUT AS FILE 1% 40 DIM #1%,X%(48),A9(1),A1$(5)=128,A2$(24,4)=128,D2(24,12),X2(24,384) 45 ! \-----ID RECORD ------/ \-----24 MODEL RECORDS-----------/ 48 DIM M%(30) 50 CHANGE SYS(CHR$(6%)+CHR$(9%)) TO M% : O2$="WESS"+CHR$(65%+M%(2%)/2%)+".TMP" : OPEN O2$ AS FILE 2% 55 DIM #2%,A3$(4)=128,Q(3,128),I(27),S(27),X(48),O(27),D(12),N(10), P(10),K(20),V(20),T$(500)=64 60 X9=V(1) : Q0=V(2) : P5=V(3) : P6=V(4) : D2=V(5) : Q2=V(6) : M2=V(7) : N=V(8) : A8=V(9) : A9=V(10) : J=V(11) 62 IF T$(0%)="BACKUP" THEN O3%=-1% 70 OPEN"DATA"+CHR$(65+M%(2)/2)+".TMP" AS FILE 3% 80 DIM#3%,E(200,20),L(3,5),M(4,2),B$(20),C$(20),D$(20),F(20),H(20),C(20) 85 MAT C=ZER : M(G,G3)=0 FOR G3=0 TO 2 FOR G=0 TO 4 : L(G,G3)=0 FOR G3=0 TO 5 FOR G=0 TO 3 90 O1=O(0) : P3=P(0) 95 C0$=CHR$(10%) : A0$=A1$(0%) 150 G2=S(1) : G1=S(2) 160 FORG=1TOG2:B$(G)="EA":C$(G)="NC":D$(G)="NS":F(G)=0.:H(G)=0.00:NEXT G 170 RANDOMIZE:U2=20 202 READ L(L1,L2) FOR L2=1 TO 5 FOR L1=1 TO 3 204 READ M(M1,M2) FOR M2=1 TO 2 FOR M1=1 TO 4 206 DATA 0,4,9,12,15,0,3,8,11,14,-1,2,6,10,13,0,3,3,4,0,-1,-1,-2 210 E(200,20)=0 !SET UP END OF DATA MATRIX (SAVES CPU TIME LATER) 230 IF G1*G2<201 THEN 250 240 &"YOU HAVE TOO MANY SUBJS. X GROUPS (MUST BE LESS THAN 201)": GOTO 2020 250 FOR G=1 TO G2 !NOW WE'LL INPUT THE EXPERIMENTAL DESIGN--THE !FUNCTION OF THE VARIOUS SECTIONS BELOW SHOULD BE OBVIOUS. 260 &"WHAT VARIABLE DO YOU NOW WISH TO SET FOR GROUP";G;"; IF NONE";:INPUTA1$ 270 IF LEN(A1$)=0%THEN 610 280 H=(INSTR(1,"PRTRPOINDU",LEFT(A1$,2%))+1%)/2% : IF H<1 OR H>5 THEN 330 ELSE ON H GOTO 340,410,450,510,560 330 &"THAT IS NOT A LEGAL VARIABLE!":GOTO260 340 INPUT"WHAT LEVEL FOR PROBLEM DIFFICULTY";B$(G) 350 IF INSTR(1,"EA ME MM MD DI",B$(G)) THEN 260 400 &"ILLEGAL VALUE": GOTO 340 410 INPUT"WHAT TRAINING PROCEDURE";C$(G) 420 IF INSTR(1,"NC CO",C$(G)) THEN 260 440 &"NO SUCH PROCEDURE":GOTO 410 450 INPUT"WHAT SHOCK CONDITION/POSITION";D$(G) 460 IF INSTR(1,"NS SR SW SB",D$(G)) THEN 260 500 &"NO SUCH POSITION":GOTO 450 510 INPUT"WHAT SHOCK INTENSITY (0-110 V.)";F(G) 520 IF F(G)<0 OR F(G)>110 THEN 550 540 GOTO 260 550 &"ILLEGAL VALUE!!": GOTO 510 560 INPUT"WHAT SHOCK DURATION (0.00-2.00 SEC.)";H(G) 570 IF H(G)<0.0 OR H(G)>2.00 THEN 600 590 GOTO 260 600 &" ILLEGAL DURATION!": GOTO 560 610 NEXT G !BELOW THE STUDENT CAN REVIEW THE MESS HE HATH WROUGHT. 620 &"YOUR CONDITIONS ARE:" 630 FOR I=1 TO G2:&:&"GROUP #";I 640 &"PROB.=";B$(I),"PROC.=";C$(I),"SHOCK =";D$(I) 650 &" INT.=";F(I),"DUR.=";H(I) 660 NEXT I 670 INPUT"OK";Z$:IF LEFT(Z$,1%)="N" THEN 250 680 FOR G=1TOG2 !O.K., NOW DETERMINE MAXIMUM # TRIAL-BLOCKS FOR EACH GROUP. 690 IFC$(G)="NC"THENC(G)=5ELSEIFC$(G)="CO"THENC(G)=8 700 IFC$(G)="CO"ANDD$(G)="SR"THENC(G)=6ELSEIFC$(G)="CO"ANDD$(G)="SW"THENC(G)=6 710 IFB$(G)="ME"THENL2=2 ELSE IFB$(G)="MM"THENL2=3 ELSE IFB$(G)="MD"THEN L2=4 ELSE IFB$(G)="DI"THENL2=5 ELSE L2=1 720 IFD$(G)="NS"THENL1=1 ELSE IFD$(G)="SB"THENL1=1 ELSE IFD$(G)="SR"THEN L1=2 ELSE L1=3 730 IF F(G)>=35 AND F(G)<=45 THEN M2=1 ELSE IF F(G)>45THEN M2=2 ELSE M2=0:L1=1 740 IF D$(G)="SW"THEN M3=2 ELSE M3=0 750 IF H(G)>=0.15AND H(G)<=0.30THEN M1=(1+M3)ELSE IF H(G)>0.30 THEN M1=(2+M3) ELSE M1=0:L1=1 760 C(G)=C(G)+L(L1,L2)+M(M1,M2) 780 IF C(G)>20 THEN C(G)=20 790 NEXT G 795 V(12)=TIME(0) !BEGIN TIMING THIS SILLY EXPERIMENT! 800 H1=0 810 FOR G3=1 TO G2 820 FOR G=1TO G1 830 !THIS IS THE GUTS OF THE SIMULATION--IF I UNDERSTOOD THIS I'D BE !A PROGRAMMER OR A MATHEMATICIAN INSTEAD OF A PSYCHOLOGIST!!! 840 H=1:G7=0 850 E=FNG(-.1,.01):D=FNG(E,.01):A=FNG(D,.025) !PUT SOME VARIANCE INTO THE STARTING VALUE OF EACH SUBJECT. 860 !THE FOLLOWING LOOP COMPUTES THE # ERRORS/TRIAL-BLOCK FOR THE !CURRENT SUBJECT, AND STORES IT IN THE APPROPRIATE E CELL. 870 FOR K=1 TO C(G3):W1=A:IF (C(G3)-3)>H THEN GOTO 910 880 B=(2.5-A)/3:G7=1 890 FOR J=A TO 2.5 STEP B 900 W1=J 910 L=FNG(W1,.1) !GET RANDOM-NORMAL # TO COMPUTE M 920 M=FNC(L) !COMPUTE PROBILITY OF CORRECT RESPONSE 930 U1=1-M !CONVERT M TO PROBILITY OF AN ERROR 940 IF U1<.0119 THEN N=0:GOTO980 !THIS IS A STOPPING POINT FOR A SUBJECT, EFFECTIVELY 0 ERRORS. 950 N=FNB(U1,U2) !COMPUTE # ERRORS FOR A 20-TRIAL BLOCK. 960 N=INT(N) 970 G4=G+H1:H2=H+H1 980 E(G4,H2)=N 990 H=H+1 1000 IF N=0 THEN GOTO 1050 1010 IF(C(G3)-3)>H THEN GOTO 1040 1020 NEXT J 1030 IF G7=1 THEN GOTO 1050 1040 NEXT K !NEXT WE'LL MARK THE END OF A SUBJ.'S RECORD & COMPUTE THE # !OF TRIALS NEEDED OUT OF THE FINAL 20-TRIAL BLOCK TO REACH !CRITERION. 1050 E(G4,(H2+1))=9999:&"*"; 1060 IF N=0 THEN E(G4,0)=FNG(8,3) ELSE IF N>0 AND N<4 THEN E(G4,0)=(15+N) ELSE E(G4,0)=19 1070 NEXT G:&"##":H1=H1+G1:NEXT G3 1080 V(12)=TIME(0)-V(12) !NOW THAT THE EXPERIMENT IS OVER, WE'LL ! CALCULATE THE TIME TAKEN TO RUN IT. 1090 CLOSE 1%, 2%, 3% : &". ." : & : CHAIN A0$+"WESS7A" 1400 !===================================================== ! CUMULATIVE NORMAL TRANSFORMATION, MEAN=0, S.D.=1 ! RETURNS IN Z THE PROBABILITY THAT THE VALUE OF A 1420 ! NUMBER WILL BE <= A Z-SCORE. !===================================================== ! BY P.F.SPELT & J.WARDEN, WABASH COLLEGE, SEPT., 1974 !===================================================== 1470 DEF FNC(Z) 1480 IFZ1(0)<>0THEN1530 1490 DIM Z1(20) 1500 FORZ2=0TO20:Z1(Z2)=1 1510 FOR Z3=3 TO 2*Z2+1 STEP 2 1520 Z1(Z2)=Z1(Z2)*Z3:NEXTZ3:NEXTZ2 1530 Z4=SQR(2): Z2=ABS(Z) 1540 Z1=EXP(-.5*Z^2)/SQR(PI) 1550 Z5=0.:FORZ7=0TO20 1560 Z6=(Z2/Z4)^(2*Z7+1)*2^Z7/Z1(Z7) 1570 IF Z6<1E-8 THEN 1590 1580 Z5=Z5+Z6:NEXTZ7 1590 FNC=.5+SGN(Z)*Z1*Z5 1600 FNEND ! ==== 1610 ! ================================<============ ! NORMALLY DISTRIBUTED RANDOM NUMBERS ! CALL FNG(W1,W2) WHERE W1=MEAN AND W2=STD DEV ! OF PARENT DISTRIBUTION ! ============================================= 1620 DEF FNG(W1,W2)=W2*SQR(-2.*LOG(RND))*COS(6.28318*RND)+W1 1640 ! ========================================= ! BINOMIALLY DISTRIBUTED RANDOM NUMBERS ! CALL FNB(U1,U2) WHERE U1=ELEM PROB OF SUCCESS ! AND U2=UPPER LIMIT OF IND VARIABLE ! ========================================= 1650 ! BY J.A.WARDEN, AUGUST, 1974 ! ========================================= 1660 DEF FNB(U1,U2) 1670 DIM U3(30),U1(30) 1680 IF U4=1.-U1 AND U5=U2 THEN 1810 1690 U4=1.-U1 : U5=U2 1700 U3=0. : U1(U0)=0. FOR U0=1 TO 30 1710 IF U2>30 THEN PRINT"** FNB ERROR **" : GO TO 1970 1720 FOR U0= 1 TO 30 1730 U3(U0)=U3 : IF U3>=U2 THEN 1760 1740 U3=U3+1 1750 NEXT U0 : STOP 1760 U6=U0 : V3=U2 1770 FOR V0=1 TO U6 1780 U7=U3(V0) : GOSUB 1860 : U1(V0)=V1 1790 IF V0>1 THEN U1(V0)=U1(V0)+U1(V0-1) 1800 NEXT V0 1810 V2=RND 1820 FOR U0=1 TO U6 1830 IF V2