## 4 Application to Staffing Optimization of a Multi-Skill Call Center
### Mathematical Formulation  
Consider an inbound call center receiving calls of \(J\) types over a single period, say 10 am-11 am of a typical Tuesday. Calls of type \(j\) arrive following a Poisson process with rate \(\lambda_{j}\), \(j=1,\ldots,J\). There are \(K\) agent groups in the call center. Agents are grouped based on the set of skills they possess. Working cost of agents in group \(k\) is \(c_{k}\) per unit time, \(k=1,\ldots,K\). Service times of agents from group \(k\) for calls of type \(j\) are lognormal distributed with mean \(\mu_{k,j}\) and standard deviation \(\sigma_{k,j}\). Customers of type \(j\) have limited patience, and are willing to wait for a period of time that is exponentially distributed with mean \(\rho_{j}\). If this time expires before they reach an agent, then they hang up without receiving service. Customer service is measured in terms of the fraction of calls received in the period that reach an agent within \(\tau\) time units, and this fraction is computed for each call type.  
Based on the terminologies presented in Section 2.1, the staffing optimization in a one-period multi-skill call center is formulated as a SICOP.  
\[\min\ \mathbf{C}\,\mathbf{x}^{T} \tag{23}\]  
\[\text{subject to }g_{j}(\mathbf{x})\geq b_{j},j=0,\ldots,J, \tag{24}\]  
\[\mathbf{V}\leq\mathbf{x}\leq\mathbf{U}. \tag{25}\]  
where \(\mathbf{x}=[x_{1},\ldots,x_{\text{K}}]\) is a \(K\)-dimensional solution vector, \(x_{\text{K}}\) denotes the number of agents in group \(k\), \(\mathbf{C}=[c_{1},\ldots,c_{\text{K}}]\) is a cost vector, \(c_{k}\) denotes the working cost in group \(k\), \(\mathbf{V}=[V_{1},\ldots,V_{\text{K}}]\) is the lower bound vector, \(\mathbf{U}=[U_{1},\ldots,U_{\text{K}}]\) is the upper bound vector, \(b_{j}\) denotes the threshold value of type \(j\), and \(g_{j}(\mathbf{x})\) denotes the service level for calls of type \(j\), which is defined as the ratio of expectations as below.  
Figure 3: A one-period multi-skill call center consisting of \(J\) call types and \(K\) agent groups.  
\[g_{j}(\mathbf{x})=\frac{E[\text{number of type- $j$ calls served within $\tau$ time units}]}{E[\text{number of type- $j$ calls arrived}]} \tag{26}\]  
The denominator in (26) does not include calls that discard before time \(\tau\). \(g_{0}(\mathbf{x})\) denotes the service level when calls of all types are included, which is defined as below.  
\[g_{0}(\mathbf{x})=\frac{E[\text{number of all calls served within $\tau$ time units}]}{E[\text{number of all calls received}]} \tag{27}\]  
The goal of this SICOP is to minimize the staffing cost (23) under the service-level constraints (24) in the call center over a single period.  
The constrained optimization problem (23)-(25) is a SICOP which is computationally expensive. The purpose is to look for the optimal number of agents, \(\mathbf{x}^{\star}\), for minimizing the staffing costs as well as satisfying the specified service level. Since the service level constraints are soft constraints, the objective function is penalized by adding a penalty function. Therefore, the constrained problem (23)-(25) can simply be reformulated as an unconstrained one as below.  
\[\min F(\mathbf{x})=\eta\sum_{k=1}^{K}c_{k}x_{k}+(1-\eta)\sum_{j=0}^{J}PF_{j}( \mathbf{x}) \tag{28}\]  
where \(\eta\in(0,1)\) represents an integrated factor, \(F(\mathbf{x})\) denotes an integrated objective value and \(PF_{j}(\mathbf{x})\) denotes a quadratic penalty function.  
\[PF_{j}(\mathbf{x})=\left\{\begin{array}{ll}0,\;if\;g_{j}(\mathbf{x})\geq b_{ j},\\ 10^{4}\times\left(g_{j}(\mathbf{x})-b_{j}\right)^{2},\;else,\end{array}\right. j=0,\ldots,J. \tag{29}\]  
Figure 4 displays the input output relationship in a one-period multi-skill call center, where \(\mathbf{x}\) represents the solution vector, \(\lambda\) expresses the vector of arrival rates, \(L\) represents the number of calls, and \(F(\mathbf{x})\) indicates the integrated objective value.