public class RoutFuncBellExpDelay extends Object implements RankFunction
Waiting queues are at agent groups. If the option to minimize expected delay queue ("queueAtMinExpDelay" parameter is false), then a call can wait only at 1 queue. Otherwise, a call will wait in all queues that it can queue (the groups are defined by the parameter "queueGroupOrder"). When queued, a call will have a rank priority. The rank priority of a call type is given by the "ranksGT" parameter. If "ranksGT" is not available, all call types have equal rank priority. Calls are matched with an agent group following some rules. The user has to input two lists of agent groups : groups to check for idle agents (L1) and groups to queue (L2). The group to queue is chosen by a formula based on the expected delay of that queue. List L1 is ordered by priority (first group has highest priority). L2 should be a subset of L1 (but not necessary). In case L2 has a group not in L1 and that group has an idle agent, then the expected delay of that group's queue is assumed 0. The call-group matching is done as following. When a call arrives in the call center, the router searches for a free agent following the list L1. If there are no free agents in the group list L1, there are two possibilities: If "queueAtMinExpDelay = true", then the router will choose the group to queue by minimizing the expected delay of the queue plus a parameter alpha : i* = argmin{i∈L2}{di + αi, j}, where di is the expected delay of group i's queue and αi, j is the constant time penalty for call type j at group i. If there is a tie, the group that is placed highest (earliest) in the list L2 will be chosen. The expected delay is determined by the waiting time of the call waiting at the head of the waiting queue (the next call to be served). When there are no calls in the queue, the expected delay is assumed 0. If "queueAtMinExpDelay = false", then the call will be placed in all queues that are in the list "queueGroupOrder".
Property numberList named "idleGroupOrder" must be declared for each call type in the conditional routing to assign the order of preference to look for an idle agent. The first agent group of the list is the primary group. Property boolean named "queueAtMinExpDelay" must be declared for each call type. If this property is "true", then a call is queued only in 1 group which minimizes the expected delay plus some time penalty. If this property is "false", then a call is queued in every group in "queueGroupOrder". Property numberList named "queueGroupOrder" must be declared for each call type in the conditional routing to assign the list of groups to check for queueing. Property numberList named "queuePenality" must be declared for each call type in the conditional routing to assign the time penalty (alpha constant) to each group in the "queueGroupOrder" list. The time penalty must the expressed with the same time unit as the defaultUnit. The list "queuePenality" must have the same length as "queueGroupOrder". This property is required only if "queueAtMinExpDelay" is true. Property number named "thresDuration" can be declared to specify the threshold duration for the preferred agent group. The duration has the same time as the call center's parameter defaultUnit. If this parameter is not specified, the acceptable waiting time (AWT) is used instead if available. Otherwise, it throws an error. Property "ranksGT" may be needed to specify the rank priority of each call type to each group. If "ranksGT" is not given, then all calls have the same priority and they are served by FIFO.
Modifier and Type | Field and Description |
---|---|
protected boolean |
traceDelay |
Constructor and Description |
---|
RoutFuncBellExpDelay(CallCenter cc,
int type,
Map prop)
Implements the constructor interface.
|
public RoutFuncBellExpDelay(CallCenter cc, int type, Map prop)
cc
- the call center modeltype
- the call typeprop
- the properties mappublic boolean updateRanks(Contact c, double[] ranks)
updateRanks
in interface RankFunction
public boolean canReturnFiniteRank(int i)
canReturnFiniteRank
in interface RankFunction