CCOptim : Call Center Optimization Java Library

Keywords : Call center, contact center, staffing and routing optimization, queueing approximation, free Java software

Note: This web page is under construction.


The CCOptim library contains Java programs for the management of call centers. The main programs are developed for the agent staffing and scheduling optimization, and also call-to-agent routing optimization. Several queueing formulas, such as Erlang A (abandonment), Erlang B and C, are also available. This package uses heavily the (free) Java libraries ContactCenters and SSJ for the modeling and simulation of call centers.

CCOptim has been developed mostly during the master and doctorate degrees of Wyean Chan, under the supervision of Prof. Pierre L'Ecuyer, at the Department of Computer Science and Operations Research of Université de Montréal. This library contains original algorithms developed by the author and also implementations of methods from scientific papers written by other researchers.

Java 6 is required to run these programs. The required libraries are included in the folder 'lib'. This Java library is free to use, but the user must install his own solver library in order to run the cutting-plane optimization. In particular, many staffing optimization programs that solve linear and integer problems have been hard-coded to use Ilog Cplex.

This software is provided as is and free to use for personal, academic and non-commercial usage. This software is provided without warranty of any kind.


Version 2:
Last update: 2015-08-24
Download the CCOptim JAR file.

View the JAR Libraries.

Implemented Java solver interface : Ilog Cplex (tested with Cplex 8, 9 and 12), Solver and Opsresearch solvers. Later version of Cplex should be compatible.
Unfortunately, Opsresearch has been discontinued since many years and it seems to have disappeared from the web. Their jar package is made available here: or124.jar.

Go here for the old version 1.

Javadoc API

View the Javadoc API (HTML).
Download Javadoc API (zip file).

Example files

Here are some examples of XML files that are required by the programs in CCOptim. The user can use these files to test the programs or to customize the parameters.

For example, the files batchSimParams.xml and repSimParams.xml contain parameters for the simulator. The file cp.xml contains the optimization parameters for CuttingPlaneOptimizer. To solve example ex4.xml with this program, the user can execute the following command in the terminal:

java umontreal.iro.lecuyer.ccoptim.cp.CuttingPlaneOptimizer ex4.xml batchSimParams.xml cp.xml

(Sorry, I will give a better description of the examples in the future.)

Description of the library CCOptim

As a Java library, the methods and algorithms are accessible and can be integrated into the user's own program. The library also provides many executable programs (implemented as the main method) that can be executed in terminal or command line.

This library contains multiple packages, with each package usually designed for a particular type of problem.

  1. Agent staffing optimization for a single period.

  2. Agent scheduling optimization with shifts and multiple periods. This problem is a generalization of the staffing problem with many periods and a shift structure.

  3. Call-to-agent routing policies and routing optimization.

  4. Approximation formulas (Erlang A, B and C), and call center approximation models.

Online Erlang formula calculators

The Erlang formulas, implemented in CCOptim, are also available for online use.

Note: These online programs require a web browser that supports HTML5 and Javascript. These web pages have been tested with Firefox 26 and higher, Google Chrome 40, and Internet Explorer 9 and higher. Internet Explorer 7 and 8 are supported, but the graphic outputs are unstable.

Looking for a call center simulation software? Check out our project ContactCenters!


. . . . , edn., () : chap. , . .

Here is a partial list of the scientific publications that have been implemented in this library:


For questions, comments, suggestions or bug alerts, please contact:

Wyean Chan -
Simulation lab at DIRO -

Last update : 2017-04-25