JCCOptim : Java Call Center Optimization Library

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


The JCCOptim 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.

JCCOptim 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, however Java 8 is recommended. The required libraries are included in the folder 'lib'.

Note that this library does not contain any LP or MIP solver. The user must install the LP/MIP solver library he wants to use 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.

Description of the library

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.


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

View the JAR dependency files. (Look here if you're missing a JAR file.)

Implemented Java solver interface : Ilog Cplex (tested with Cplex 8, 9 and 12), Apache.org Solver and Opsresearch solvers. Later version of Cplex should be compatible.
The solver interfaces can be downloaded here. Unzip the file and add the parent folder to the CLASSPATH. For example, if the zip file is unzipped in folder lib, then add the path to folder lib to the CLASSPATH.
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.

Javadoc API

View the Javadoc API

Example files

Here are some examples of XML files that are required by the programs in JCCOptim. 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.)

Online Erlang formula calculators

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

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 - chanwyea@iro.umontreal.ca
Simulation lab at DIRO - simul@iro.umontreal.ca

Last update : 2020-05-23