Predict1PI algorithm
The Predict1PI predictive dialing algorithm over-dials based on the current connection rate and a prediction adjustment value. The prediction adjustment value is initially set to the value specified by the Interviewing Options activity, but is then continually adjusted by a proportional-integral controller to try to achieve a constant 2.8% silent call rate. The prediction adjustment value is limited to try to ensure that the daily silent call rate does not exceed 3%, and is also limited if congested calls start occurring. These percentages are defaults and can be changed if necessary by editing the appropriate properties using DPM Explorer.
The algorithm is written in mrScriptBasic and is installed in DPM in the PredictScript property in SampleManagements>ProjectName>DialingPredict.
What is a proportional-integral controller?
A proportional-integral (PI) controller is a generic model for correcting differences between a measured process and a desired result that involves calculating a corrective action that can be used to adjust the process accordingly.
In the case of the predictive dialing algorithm, the controller measures the difference between the target percentage of silent calls and the current percentage of silent calls and alters the prediction adjustment value in an attempt to make the current percentage match the target. If the current silent call rate is lower than the target, the controller increases the prediction adjustment value so that more calls are dialed; if the current silent call rate exceeds the target, the controller decreases the prediction adjustment value so that fewer calls are dialed.
Properties used by the Predict1PI algorithm
The algorithm uses the following properties, all of which are stored in the CatiParameters property collection in DPM:
PredictAdjust
Determines how aggressively to dial. The minimum value is 0, which disables over-dialing; the maximum is 1000; the default is 150. It is used as the initial value for ControllerIntegralGain (see
ControllerIntegralGain).
EnforceMaxSilentCalls
Determines whether or not the MaxPredictiveSilentCalls property is strictly enforced. The default value is False.
TargetPredictiveSilentCalls
The overall percentage of silent calls that you want to achieve. The default is 2.5%
MaxPredictiveSilentCalls
The maximum percentage of silent calls that you will allow in a 24-hour (midnight to midnight) period. The default is 3%.
MinPredictWaitingInterviewers
Determines the number of interviewers that need to be waiting before the default predict script will over-dial. This setting is used to support more over-dialing for small interviewer groups. The default value is 0.
ControllerIntegralGain
Changes the prediction adjustment value by a small amount for every call attempt, based on the difference between the target and current silent call percentages. The default is 0.05. You should not need to change this value.
ControllerProportionalGain
Changes the prediction adjustment value in direct proportion to the difference between the target and current silent call percentages. The default is 2. You should not need to change this value.
For a change to the predictive algorithm to be recognized, the DialingSync property needs to be incremented. Similarly, for changes to the CATI parameter settings to be recognized for a given project, without the need to restart the interviewing engines, the Sync property for the sample management needs to be incremented (
Site\Servers\SampleManagements\<project>\Sync). For more information, see
Sample management properties.
For further information about these properties see
CATI parameters for autodialing.
How the Predict1PI algorithm works
The Predict1PI algorithm dials more calls than there are available interviewers if all the following conditions are true:
▪The PredictAdjust property is not 0.
▪More than ten calls have been answered (either connected to an interviewer or silent).
▪There are more interviewers waiting than defined for the MinPredictWaitingInterviewers setting.
If none or only some of these conditions have been met, the algorithm dials one number for each waiting interviewer.
If all three conditions have been met, the algorithm proceeds as follows:
1 Calculates the connection rate and the base number of calls to over-dial.
2 Calculates the current prediction adjustment value.
3 Calculates how many calls to dial.
The details behind these steps are as follows.
Calculates the connection rate and the base number of calls to over-dial
This step calculates the rate at which the dialer is obtaining connections and the number of calls that could be over-dialed based on that rate.
The connection rate is the ratio of answered calls to dialed calls; for example, if 60 out of 100 calls have connected, the connection rate is 60%. Answered calls include calls that were passed to interviewers as well as silent calls. Dialed calls include all calls other than those flagged as congested. The calculation is based on the number of call attempts in the last 15 minutes or the last 100 call attempts, whichever produces the highest number of connections.
The base number of calls that could be over-dial is calculated as:
(Waiting Interviewers / Connect Rate) – Waiting Interviewers
For example, if there are ten interviewers waiting and 60% of past calls have connected, the over-dial value is (10/0.6–10) which equals 6.67. This means that six more calls than waiting interviewers could be dialed, so if the dialer dials 16 calls and 60% connect, there should be about ten connected calls.
Calculates the current prediction adjustment value
This step calculates how the algorithm will need to modify the base number of calls to over-dial, taking into account the difference between the current and target silent call percentages.
The algorithm calculates the difference between the current percentage of silent calls and the target. The current percentage of silent calls is the ratio of unconnected calls (no free interviewers) to calls connected to interviewers. The calculation is based on activity during the last 30 minutes or on the last 200 call attempts, whichever gives the most attempts.
The PI controller amends the prediction adjustment value using the ControllerIntegralGain and ControllerProportionalGain properties and the difference that has just been calculated. Refer to the algorithm script itself if you are interested in exactly how these properties are used to compute the current adjustment. Generally, the greater the difference between the target and current percentages of silent calls, the greater the adjustment. If the difference is increasing over time, the prediction adjustment value will grow proportionally; similarly, if the difference is decreasing over time, the prediction adjustment value will reduce proportionally.
Calculates how many calls to dial
This step applies the prediction adjustment rate to the base number of calls to over-dial in order to calculate the actual number of calls that can be over-dialed. In this documentation, this number is called the predicted number of calls.
The number of calls to dial is calculated as:
Waiting Interviewers + (Over-dial * PredictAdjust) / 100
The result is truncated to the nearest integer value. This predicted value might then be further adjusted by two factors:
▪By a “daily silent call percentage” limit.
This limit ensures that dialing the predicted number of calls per interviewer will not cause the silent call percentage to exceed the daily maximum limit for silent calls (defined in MaxPredictiveSilentCalls). The EnforceMaxSilentCalls determines whether or not the daily silent call percentage limit is strictly enforced.
The algorithm calculates the maximum allowed number of silent calls based on the number of connected calls. Then it counts the actual number of silent calls made since midnight and subtracts it from the maximum allowed value. This gives the number of additional silent calls that can be made without exceeding the daily limit. Next, the algorithm adds the excess calls to the number of waiting interviewers to get the total number of calls possible without exceeding the daily limit. If the predicted number of calls exceeds this total, it is reset to this value and the call limiting flag is set. (This flag prevents the incremental gain being increased in preparation for the next round of dialing. Instead, the incremental gain remains at its current level until call limiting is no longer necessary.)
For instance, if 3% of calls per day can be silent and there have been 1000 calls made since midnight, then 30 silent calls are allowed. If there have been 25 silent calls so far, a further five silent calls can be made without exceeding the 3% daily limit. If there are 4 interviewers waiting for calls, the total number of calls that can be made is 9. If the predicted number of calls is greater than 9, limiting is initiated and the predicted number of calls is reduced to nine. In all other cases, the prediction remains unchanged.
Even with call limiting, it is still possible to exceed the daily limit on silent calls if interviewers put their extensions on-hook before closing the Phone Participants activity.
▪By a congested call limit.
This limit reduces the dialing rate when calls cannot be made due to network congestion.
If the previous call attempt was returned as congested, only one more call can be dialed than the number of calls currently being dialed. If this would require more than the predicted number of calls to be made, only the predicted number is made. If congestion limiting was already happening the last time a prediction was made, one more call can be dialed than what was dialed last time. Congestion limiting continues in this way until the predicted number of calls can be dialed. When this happens, congestion limiting is switched off.
The result of this whole process is a predicted number of calls that needs to be being dialed in order to generate one connection for each waiting interviewer. If the predicted number is greater than the number of calls currently being dialed, the dialer will dial additional calls until the number of calls being dialed reaches the predicted number.
The algorithm writes a number of messages to the IVW*.tmp log file recording what it has done, which, if any, limits it has imposed, and the current status and value of certain properties and variables.
See also