Notes on reinforcement schedules |
Top Previous Next |
For Simple Schedules and/or Concurrent Schedules:
When is the manipulandum visible?
But:
Ticks
Ticks occur once per second and come from a clock whose timing is not altered. They are sent to the schedule(s), and may (for example) deliver or prime reinforcement. Ticks are blocked during timeouts. Ticks are not blocked by reinforcement (unless a timeout is occuring simultaneously).
When two concurrent schedules are running, MonkeyCantab flips a coin internally, each time, to determine which one gets its tick first. (Why? Because otherwise there would be a bias towards one schedule, which might consistently reinforce and therefore, under appropriate timeout conditions, block the other from doing so.)
Timeouts
You can enable a timeout, which will begin at the moment of reinforcement.
Timeouts prevent responding and prevent ticks going to the schedule (so the schedule is effectively paused).
Note that reinforcement device being "busy" also prevents responding - but it doesn't prevent ticks. So if you want a schedule properly paused for the duration of reinforcement, set up a timeout that's the same duration as the reinforcer (or longer). Reinforcers report their total duration in their summary description, to make this easier.
Note that the pause is not phase-locked, in the sense that timeouts block ticks but don't alter the clock phase. For example:
t = 0: tick t = 1: tick t = 1.5: response, reinforced, 5-second timeout begins t = 2: tick blocked t = 3: tick blocked t = 4: tick blocked t = 5: tick blocked t = 6: tick blocked t = 6.5: timeout ends t = 7: tick
What happens when you request a timeout on a delayed-reinforcement schedule? Should the timeout occur at the time of the response, or at the time of the reinforcement? Well, a timeout is to stop you responding, so it should occur at the time you respond; that's what will happen.
Timeouts, versus the lack of a response object, and application to combined contingent/noncontingent schedules
In a few schedules, which combine response-contingent and response-noncontingent reinforcement, it is important to know exactly when contingent and noncontingent schedules are active. Noncontingent schedules are only blocked by timeouts; contingent schedules are also ineffective if there's nothing to respond on! In particular, response manipulanda are not displayed when the reinforcing device is busy (except for delayed reinforcement schedules).
Therefore, in these circumstances, you will probably wish to ensure that your timeout extends beyond the reinforcement-device-busy-time, or your noncontingent schedule may resume operation before your contingent schedule does.
Temporal reinforcement conflict with a single reinforcer (reinforcers that try to overlap)
It is possible to cause reinforcement conflicts in this task. Most particularly, if you use a delayed-reinforcement schedule, it is possible that reinforcement is scheduled while the reinforcing device is busy. SimpleSchedules ignores requests for reinforcement for devices that are busy. It records in the event log (text-based and ODBC) whether a scheduled reinforcement was actually given.
Reinforcement conflicts are unlikely with brief reinforcers (e.g. a pellet dispenser that triggers using a 45-ms pulse and can operate quite fast). They are very likely if you use a delayed-reinforcement FR-1 schedule and a slow reinforcer (e.g. a 10-second pump).
What happens when your schedule wants to reinforce, and to give you a timeout, but your reinforcement device is busy? The tasks will not reinforce (because the device is busy reinforcing you anyway) but it will implement your timeout.
Conflict between two reinforcers
This applies to the ConcurrentSchedules task only.
As the task stands, it will abort an ongoing reinforcer when a new one starts. For example, if your left schedule delivers a reinforcer, and then soon afterwards the right schedule delivers a reinforcer; the left one will be aborted (if it's still ongoing) and the right one started.
Why? Not least, because of the complexity of interpretation when a single licker drives lick-contingent reinforcement with two pump reinforcers simultaneously.
If this would be a problem, you probably want to enable "Timeouts on one schedule apply to both schedules, if two are running". That will prevent the problem.
Changeover delays
Changeover delays are "invisible"; the schedule whose responses have been temporarily disabled will still show its manipulandum.
|