Concurrent reinforcer ratios species: pigeons
Maintainer Michael Davison Current version 0.1 View the changelog
Original Author Michael Davison Date last modified Mar-7-2005
License BSD MED-PC version 4
No description given
Davison M, Baum WM. J Exp Anal Behav. 2000 Jul;74(1):1-24.
Choice in a variable environment: every reinforcer counts.
Code
How to use this code Download the code Download an example macro Download the profile
 \Davison & Baum JEAB 2000:  Within-session procedure with 7 concurrent 
\reinforcer ratios across components after Belke & Heyman (1994) JEAB
\concurrent dependent exponential VI VI schedules
\Two key concurrent.  Two yellow keys.  Random changes in reinforcer ratios.
\Michael Davison
\

\NOTE:  50 sessions per condition.  Please keep all sessions detailed data (or at least the last 35!)

\Outputs
^LKYel=1
^RKYel=2
^Rft=4
\(Mag and mag light hardware commoned)

\z pulse
^ReinforcerStart=1

\Inputs
^Lkey=1
^RKey=3
\(Center key not used)

\List q is the list of the experimental setup
\q(0) = Baserate of rfts (R/s)
\q(1) = rft duration (s)
\q(2) = timeout between components (s)
\q(3) = Reinforcers per component
\q(4) = cod (s)

\List q = 10000/27,2.5,10,4,2\	Condition 4 
\for exponential (Random-interval, RI, schedules, 10000/27 is VI 27 s if sampled once per s)

\List r is the set of probabilities of left reinforcers in the 7 components
List R=357,1000,2500,5000,7500,9000,9643

\list s is a set of subscripts for list r (need subscripts for detailed
\data collection
list s = 0,1,2,3,4,5,6

\List x is the detailed data array
dim x=5000
\and y is the counter for this array

\codes (all stored codes are time in seconds + code
\code for session start = 0
^PeckLeft=10000
^PeckRight=20000
^RftLeft=30000
^RftRight=40000
^BlackoutStart=50000
^Sessend=60000

\and component starts are the value of component index s(i) * 100000 (all components are
\listed from lowest p left to highest p of reinforcers on left)


\counters (for daily printouts only)
\c(0)=Leftkey responses
\c(1)=Rightkey responses
\c(2)=Leftkey reinforcers
\c(3)=rightkey reinforcers
\etc for each of the 7 components
dim c=27

DiskVars=c,q,x

s.s.1,
s1,\    Starting state, setting up
#start:set y=0;
	set x(y)=btime/1",q(1)=q(1)*1",q(2)=q(2)*1",q(4)=q(4)*1";--->s2

s2,\    Time out, then randomly (without replacement) determine which component
q(2) #T:set n=0;
	Randd p=s;
	add y;
	set x(y)=p*100000+btime/1";
	on ^LKYel,^RKYel;--->s3  

s3,\    Main routine
#R^Lkey:Add c(p*4+0);\	count responses on this key in this component p
	add y;\		increment index
	set x(y)=^PeckLeft+Btime/1";\	put codetime in x(y) 
	if (s.s.2=3) and (s.s.4=4)[@rft,@no]\	check if out of COD and if RFT set up
		@rft:off ^LKYel,^RKYEL;
			on ^rft;
			add c(p*4+2);\	add to reinforcer counter for this key in this component p
			add y;
			set x(y)=^RftLeft+Btime/1";
			add n;--->s4\ n is a local counter of reinforcers in a component
		@no:--->sx

#R^RKey:add c(p*4+1);
	add y;
	set x(y)=^PeckRight+btime/1";
	if (s.s.2=4) and (s.s.4=6)[@rft,@no]
		@rft:off ^LKYel,^RKYel;
			on ^Rft;
			add c(p*4+3);
			add y;
			set x(y)=^RftRight+btime/1";
			add n;--->s4
		@no:--->sx

s4,\    Reinforcers
q(1)#t:off ^rft;
	z^ReinforcerStart;
	if n=q(3)[@nextcomponent,@stay] \ check if the component should end
		  @nextcomponent:add y;
			set x(y)=^BlackoutStart+btime/1";--->s2 \ if so, delay and then select the next component
		  @stay:on ^LKYel,^RKYel;--->s3

s.s.2,\ Scheduling (Dependent, exponential)
s1,
#start:--->s2
s2,
1":if s.s.1=3[@time,@dont]\		Only time if in main routine, then sample every 1 s
	@time:withpi=q(0)[@setrft,@Dontset]\	This is the baseline VI 27-s schedule
		@SetRft:withpi=r(p)[@SetLeft,@SetRight]\	allocate RFT to left or right according to r(p)
			@SetLeft:--->s3
			@SetRight:--->s4
	@Dontset:--->sx
@dont:--->sx

S3, \   LK rft setup
#z^ReinforcerStart:--->s2\	go back and time some more when reinforcer is taken
s4,\    RK Rft set up
#z^ReinforcerStart:--->s2

s.s.3,\ Ending the session
s1,
#start:--->s2
s2,
70#z^ReinforcerStart!2800":off 1,2,34;--->stopabortflush\	End session after 70 reinforcers or 2800 s


s.s.4,\ Changeover delay
s1,
#start:--->s2

s2,
#R^Lkey:--->s4\	no changeover delay on first response in session
#R^RKey:--->s6

s3,\    Within COD left key
q(4)#t:--->s4\	time the changeover delay
#R^Rkey:--->s5\	if emit a right response, start timing on the right alternative

s4,\    Without COD Left key
#R^RKey:--->s5\	COD finished timing on left, right response starts timing on right

s5,\    Within COD Right key
q(4) #t:--->s6
#R^Lkey:--->s3

s6,\    Without COD Right key
#R^Lkey:--->s3             
Related programs Other versions
No training programs submitted/required

No older versions available
No experimental versions available