ContactCenters 0.9.5 Fixed some bugs in the OverflowAndPriority routing policy. Added getAttributes() methods to Agent, AgentGroup, and WaitingQueue. Fixed a bug with ratios computed by EXPECTATIONOFRATIO-type of performance measures. ContactCenters 0.9.4 - Added a new routing policy supporting overflow and priorities as well as some forms of conditional routing - Added examples in guidemsk.pdf using this new policy - Improvements in the documentation ContactCenters 0.9.3 Generic simulator - The generic simulator does not use the static Sim class anymore so one can have multiple CallCenterSim instances to perform simulations in parallel. - Added the possibility to randomize the number of agents in periods or on shifts - Corrected a NullPointedException thrown when simulating with batch means without estimating MAXQUEUESIZE or MAXBUSYAGENTS performance measures - Corrected a bug in ArrivalProcessManager.estimateParameters preventing mskestpar from working if no parameters were given for the arrival process. - Fixed a NullPointerExcepton occurring if serviceLevel/target element is omitted. - Fixed a bug in parameter estimation for the Poisson arrival process with a gamma busyness factor - Removed the DialerPolicyWithLimitedDials class, which is not used and superseded by DialerListWithLimits in package msk.model - Corrected a bug occurring when the number of outbound call of a given type is bounded while the outbound calls of other types are unbounded - When the starting or stopping times of an arrival process or dialer matched the beginning of a period, the simulator was adding 1e-10 to the toggling time for the period-change event to always occur before the starting or stopping; this could add a small bias to estimators. This was fixed, because event priorities is now implemented in SSJ. - Added an example of how to make parallel simulations, with multiple threads, using the generic simulator - Improvements to the documentation - Added an example showing how the use of the Sim static class can be replaced by the use of a Simulator instance, to allow parallel simulations. ContactCenters 0.9.2 Generic simulator - The WAITINGTIME type of performance measures were estimating E[WS]/E[A] while the correct definition is E[WS+WL]/E[A], where WS and WL are the sum of waiting times for served and abandoned contacts respectively, and A is the number of arrivals. Similar problem with WAITINGTIMEWAIT and EXCESSTIME - Corrected problems occurring with sums in SERVEDRATES performance measures when using segments to regroup call types - The maximal waiting time over all periods, or over all call types, now corresponds to the maximum, not the sum of the maxima over each period or call type. - Fixed an exception thrown when using restrictToPrintedStat="true" in experiment parameters - Types of performance measures are now sorted in alphabetic order in reports. Originally, a fixed arbitrary but not always sensible order was used. - Better documentation of classes in package msk.model - Renamed elements splineTimes and splineLambdas to times and lambdas in the XML parameters for arrival process - Added an example of how an histogram of the waiting time distribution can be constructed - AgentsPrefRouter now throws an IllegalStateException if it requires the longest idle time of agents but cannot compute it because detailed agent groups were not used. The original behavior was to revert to using the greatest number of free agents. - Reduced some vertical spacing in PDF documentation Formatting correction in the HTML documentation - Added a new Poisson arrival process with piecewise-constant arrival rates but rates changing at arbitrary times not necessarily corresponding to the start of periods. ContactCenters 0.9.1 Generic simulator - Many improvements in the documentation of the XML Schemas - The generic simulator called from the command-line now displays a progress indicator - Added performance measures for the expected maximal number of busy agents observed, and maximal observed waiting time. - The MAXQUEUESIZE performance measure now corresponds to the expected maximal queue size observed during the simulated horizon. - Corrected a sorting bug occurring when converting a matrix of ranks to a type-to-group map. - Single-pass contact selection is turned on by default in AgentsPrefRouterWithDelays to be consistent with the XML Schema for the generic simulator - Fixed a bug in DetailedAgentGroup.setNumAgents causing busy ghost agents to be ignored when adding agents. This bug resulted in more agents than expected in some models. ContactCenters 0.9 Generic simulator - Modified the XML format to use a XML Schema, for more robust validation - Replaced home-made XMLConfig with Sun's JAXB to read/write parameters - Error messages of the simulator are now more accurate - Computing statistics for (contact type, agent group) pairs is now optional, and disabled by default to save memory. - Added the possibility of computing statistics for segments regrouping call types, agent groups, or periods - Properties such as language, region, etc., can be associated with call types and agent groups, and displayed in reports - Extended the model to allow calls to be transferred to other agents, and sent to virtual waiting queues - Added multipliers to change overall arrival rate, mean service time, and staffing - Many API changes in package msk - Many improvements in the documentation - The script oldmskccparamsconverter can be used to convert model parameter files intended for ContactCenters 0.8.5 to the newer format for 0.9. - The script oldsimparamsconverter can be used for converting experiment parameters. Added a second generic simulator using a simple Discrete-Time Markov Chain model with uniformization. This can be called using the script ctmccallcentersim for the single-period version, and ctmccallcentersimmp for the multi-period version. ContactCenters 0.8.5 Generic simulator - The WAITINGTIME type of performance measures were estimating E[WS]/E[A] while the correct definition is E[WS+WL]/E[A], where WS and WL are the sum of waiting times for served and abandoned contacts respectively, and A is the number of arrivals. Similar problem with WAITINGTIMEWAIT and EXCESSTIME - Fixed a bug in DetailedAgentGroup.setNumAgents causing busy ghost agents to be ignored when adding agents. This bug resulted in more agents than expected in some models. - Corrected a sorting bug occurring when converting a matrix of ranks to a type-to-group map. ContactCenters 0.8.4 Generic simulator - Corrected a bug occurring when formatting time durations beyond 24h in Excel ContactCenters 0.8.3 - Corrected a bug in PerformanceMeasureFormat.capitalizeFirstLetter Generic simulator - Added service level for (call type, agent group) pairs - Durations such as waiting times, speed of answer, service times, etc. now appear as durations in Excel reports rather than numbers. ContactCenters 0.8.2 - Added a getNumBusyAgents(int) method in AgentGroup to return the number of busy agents serving contacts of a specific type. - Added a size(int) method in WaitingQueue to return the number of queued contacts of a specific type. - Router.selectContact now returns a DequeueEvent instead of a Contact. - Added the Router.DEQUEUETYPE_BEGINSERVICE field for clearer routing code. - Added the QueueRatioOverflowRouter class which implements an overflow routing policy using the queue ratio. Generic simulator - Added service time and service ratio performance measure types. - Added excess time performance measure types. - Added the possibility to omit the probabilities of balking and patience times in the XML file, which provides a simpler way to disable abandonment - Removed the shades in the Excel output; this was hard to read in some configurations. - The stack trace of the exceptions produced by the simulator is now hidden by default for shorter error messages. The property umontreal.iro.lecuyer.PrintStackTrace can be set to true in order to enable the stack trace, e.g., for debugging purposes. - All 1D and 2D arrays in the XML parameter files can now refer to data read from CSV text files, Excel documents, or databases. - The simulator appends contents to text files or workbooks instead of overwriting - Replaced the performance measure type RATEOFPOSWAIT with RATEOFDELAY - The service level is estimated using the fraction of calls served after a waiting time less than or equal to the acceptable waiting time, which results in the probability of service without delay when the AWT is 0 - Added a new reportParams nested elements in simulation parameters - Added the possibility to rename or omit sheets in Excel output - The simulator now uses JExcel API rather than POI HSSF for reading and writing Excel files. This allows basic support for formulas. ContactCenters 0.8.1 Added Poisson arrival processes using inversion or thinning for time-varying arrival rates Added an agents' preference-based routing policy with overflow delays Corrected a bug in the generation of the Javadoc HTML documentation Generic simulator - Locale-specific output formatting, with strings in English or French depending on the default locale - Added a non-homogeneous Poisson arrival process using a cubic spline to model the time-varying arrival rate - Ratios on [0, 1] are now displayed in percentage notation when formatted into strings - Added an option to hide individual periods when formatting statistics - Added the average speed of answer and patience time performance measures - Added an option to format results as a Microsoft Excel document - Added an option to send call-by-call trace to a Microsoft Excel document - Using commas to separate array elements in XML files is now optional - When sending its output to a text file, the simulator now uses the correct platform-dependent line separator rather than the newline character. ContactCenters 0.8 - ContactCenters now uses new features of Java 5. - Data structures now use Java 5 generics. - WaitingQueue implements Queue. - WaitingQueueSet and AgentGroupSet implement Set and Set, respectively. - ContactCenter cannot be used as a base class anymore; it only provides static methods Generic simulator - Call-by-call data can be traced into a database by using JDBC in addition to a text file - PerformanceMeasureType.AVGWORKINGAGENTS becomes PerformanceMeasureType.AVGSCHEDULEDAGENTS. - PerformanceMeasureType.AVGWORKINGAGENTS now represents the number of working (busy or free) agents - Added a second measure of occupancy ratio, giving the number of busy agents over the number of working agents. - Added a new interface, ObservableContactCenterSim, for monitoring the progress of simulations. - Added a new interface, ContactCenterSimWithObservations, for obtaining the observations for performance measures estimated by averages. - Added a new interface, ContactCenterSimWithObservationSets, for obtaining the observations for simulations with macro-replications or strata. - Improved results formatting Documentation - Added more examples of programs using the generic blend/multi-skill simulator - Other minor corrections ContactCenters 0.7 Documentation - More accurate specification of the behavior of listeners - A note was added when a routing policy assumes a specific discipline for waiting queues - Other minor corrections Core classes - WaitingQueue.DequeueEvent became DequeueEvent for more convenience. The same thing happened to AgentGroup.EndServiceEvent (became EndServiceEvent), and DetailedAgentGroup.EndServiceEvent (EndServiceEventDetailed). - ContactCenterSim.getCompletedReplications became getCompletedSteps. - Added a general framework in the Router class for supporting rerouting of queued contacts and idle agents. - Added the longest weighted waiting time routing policy - Enhanced the agents' preference-based routing policy to support longest weighted waiting time - Support for a busyness factor has been incorporated in ContactArrivalProcess, not only in PiecewiseConstantPoissonArrivalProcess. - For the NORTA-driven arrival process, the integer parameter of the negative binomial marginal was replaced by a double-precision value. - Added methods to estimate parameters for arrival processes. - The Contact class is now Cloneable - Basic support for partially saving and restoring the state of a simulation (contents of waiting queues, contacts served by agents, etc.) - More unit testing was made on the new generic simulator, in package msk. Options added to the generic blend/multi-skill simulator - Ability to specify schedules for agent groups in addition to staffing vectors. - Caching, if enabled, applies to all random number generators, not only for inter-arrival times (new generic simulator only) - Better handling of events happening at the same time a period begins (new generic simulator only) - Added support for the longest weighted waiting time routing policy - PerformanceMeasureType was made final and will become a Java 5 enum in a future release. - Added methods, in PerformanceMeasureType, to query the type of row and column, and the type of estimation defining a group of performance measures. - In the XML file, replaced varGen with busynessGen. - Added the possibility, in the XML files, to give data rather than parameters for probability distributions and arrival processes. When data is given, parameters are estimated using maximum likelihood. - For NORTA-driven arrival processes, the XML element nortaN becomes nortaGamma and is an array of double-precision values rather than an array of integers. ContactCenters 0.6.1 - Minor corrections in the documentation - Added an example of a simple simulator producing a call-by-call trace. - Added a new generic simulator intended to replace MSKCallCenterSim in a future version - Added convenience scripts to launch the generic simulator from the command-line Options added to the generic blend/multi-skill simulator - Call-by-call trace. - Possibility of disabling the CPU time computation with the Chrono. Version 0.6 First released ContactCenters library.