public class GenCMuRouting extends Object
The score of call type k and agent group i is defined as the product of the derivative of the delay cost function, say f = F' and the service rate of group i on call type k. According to the theory, the delay cost functions must be convex to be asymptotically optimal (under heavy traffic regime and some other assumptions). This implementation does not verify the convexity of the functions. The user is only required to provide the K + I derivative functions.
The input for this policy is:
The router works as follows. For call type k, there is the derivative function fk(wk) which takes into argument wk, the waiting time of the longest waiting call in queue k. There is a waiting queue for each call type. The generalized-cμ rule has been proven asymptotically optimal in heavy traffic regime where most calls have to wait (the system becomes static). Note that generalized-cμ policy do not assume call-to-group routing (when a new call arrives), because of the heavy traffic assumption. If the highest score is shared my multiple pairs, then a pair is chosen randomly among them. The score is negative infinity if there are no free agents or no call waiting. Calls of the same type are always served FCFS (first come, first served) and agents in the same group work as LISF (longest idle server first).
The last I functions are used for the agent selection when a new call arrives. Instead of the waiting time of the call,
the score ck, i of pair (type k, group i) is :
The score for the agent selection is as follows:
The router works as follows. There are only 2 instances where the router can make a decision: (1) when a new call arrives and (2) when an agent completes a call and becomes idle. When a new call of type k arrives, the router will compute the scores ck, i for all groups i that can serve call type k. When an agent of group i becomes idle, the router will compute the score ck, i for all call types k that this group can serve. The router selects the pair with the highest score ck, i. This is a work conserving policy: an agent cannot stay idle if there is a call he can serve.
The user must use the routing policy name GENCMU2 and give the name of the class that implemented the derivative functions with a list of string parameter named functionClassNames and a doubleArray matrice named funcParams which will contain the parameters for each of the derivative functions. The parameter functionClassNames contains the class name of the derivative of the delay cost function for each call type and agent group. The number of rows in funcParams should be equal to K + I. The boolean matrix canServeGT of size I×K is used to define if group i can serve call type k or not.
Modifier and Type | Class and Description |
---|---|
static class |
GenCMuRouting.GenCMuRouter |
static class |
GenCMuRouting.GenCMuRouterFactory
Defines this router factory.
|