Multi-objective scheduling optimization in contact centers using mixed-integer programming (MIP) models

By using a mixed-integer programming model for multi-objective scheduling optimization, the problem of balancing service quality and cost in contact centers is solved, and scheduling efficiency and seat utilization are improved.

CN122497962APending Publication Date: 2026-07-31GENESIS CLOUD SERVICES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
GENESIS CLOUD SERVICES CO LTD
Filing Date
2024-12-16
Publication Date
2026-07-31

AI Technical Summary

Technical Problem

Traditional contact center scheduling technologies are insufficient to handle the complexity and scale of modern contact centers, making it difficult to strike a balance between service quality and cost, especially in terms of staffing and scheduling efficiency.

Method used

A mixed-integer programming model is used for multi-objective scheduling optimization. The optimal solution is determined by the computation system to schedule contact center agents. The optimization objectives include minimizing unassigned agents, staff shortages, interrupted active sessions, and the proportion of open sessions, while satisfying various constraints.

Benefits of technology

It achieves a balance between service quality and cost, improves the dispatch efficiency of the contact center, reduces unassigned seats and staff shortages, and reduces interruptions and session overhead.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122497962A_ABST
    Figure CN122497962A_ABST
Patent Text Reader

Abstract

A method for multi-objective scheduling optimization in a contact center using a mixed-integer programming model, according to an implementation scheme, includes: a computing system determining a mixed-integer programming model based on multiple constraints and multiple optimization objectives; the computing system receiving activity rules from a rule queue of activity rules to be scheduled; and the computing system scheduling multiple contact center agents to one or more activity sessions based on the activity rules by finding the optimal solution to a mixed-integer programming problem generated based on the mixed-integer programming model and the activity rules.
Need to check novelty before this filing date? Find Prior Art

Description

Cross-references to related applications

[0001] This application claims priority to U.S. Patent Application No. 18 / 395,462, filed on December 22, 2023, with the same title, “MULTI-OBJECTIVE SCHEDULE OPTIMIZATION IN CONTACT CENTERS UTILIZING A MIXED INTEGERPROGRAMMING (MIP) MODEL”. Background Technology

[0002] Contact centers rely on agents to communicate with and respond to client inquiries. Contact center performance is typically measured against two conflicting objectives: quality of service and cost. Quality can be measured by service level, average processing time, and abandonment rate. While contact center costs may originate from various sources, the most significant cost is often associated with staffing. Therefore, contact centers attempt to schedule the right number of employees with the right skills at the right time to handle interactive workloads and meet relevant quality standards. Traditional scheduling techniques are insufficient to handle the complexity and scale of modern contact centers. Summary of the Invention

[0003] Various implementation schemes relate to one or more unique systems, components, and methods for multi-objective scheduling optimization in contact centers. Other implementation schemes relate to apparatus, systems, devices, hardware, methods, and combinations thereof for multi-objective scheduling optimization in contact centers.

[0004] According to the implementation scheme, a method for multi-objective scheduling optimization in a contact center using a mixed-integer programming model may include: a computing system determining a mixed-integer programming model based on multiple constraints and multiple optimization objectives; the computing system receiving activity rules from a rule queue of activity rules to be scheduled; and the computing system scheduling multiple contact center agents to one or more activity sessions based on the activity rules by finding the optimal solution to a mixed-integer programming problem generated based on the mixed-integer programming model and the activity rules.

[0005] In some implementations, the method may further include: receiving scheduling information for a contact center by a computing system; identifying potential candidate sessions by the computing system based on the scheduling information; estimating the contribution of each of the multiple contact center agents and facilitators to each of the multiple planning groups of the contact center by the computing system; identifying concurrent sessions by the computing system based on the potential candidate sessions; identifying incompatible sessions by the computing system based on the potential candidate sessions; and determining staffing surplus by the computing system regarding the minimum staffing requirements for each of the multiple planning groups of the contact center.

[0006] In some implementations, multiple optimization objectives may include minimizing the number of unassigned contact center agents.

[0007] In some implementations, multiple optimization objectives may include minimizing staff shortages caused by scheduling one or more activity sessions.

[0008] In some implementations, multiple optimization objectives may include the optimization objective of minimizing interrupted active sessions.

[0009] In some implementations, multiple optimization objectives may include minimizing the percentage of open sessions.

[0010] In some implementations, multiple constraints may include the constraint that an agent must not be assigned or must be assigned to a session.

[0011] In some implementations, multiple constraints may include at least one constraint that the number of contact center agents assigned to a scheduling session must be at least the minimum group size and no greater than the maximum group size.

[0012] In some implementations, multiple constraints may include constraints that prevent previously scheduled sessions from being scheduled.

[0013] In some implementations, multiple constraints may include the constraint that the total number of scheduled sessions is not greater than the maximum total session count.

[0014] In some implementations, multiple constraints may include a constraint that the number of concurrent sessions must not exceed the maximum number of concurrent sessions.

[0015] In some implementations, multiple constraints may include constraints that allow only one of two incompatible sessions to be scheduled.

[0016] In some implementations, multiple constraints may include constraints that define whether staffing shortages below the minimum staffing requirements for the corresponding program group are permitted.

[0017] In some implementations, the method may further include: scheduling activity rules in response to one or more reproducibility settings based on activity rules, updating activity rules by a computing system; and adding the updated activity rules to a rule queue by the computing system.

[0018] In some implementations, the method may further include adding an initial set of active rules to a rule queue by a computing system, and wherein receiving active rules from the rule queue may occur after the initial set of active rules is added to the rule queue.

[0019] According to another embodiment, a computing system for multi-objective scheduling optimization in a contact center using a mixed-integer programming model may include at least one processor and at least one memory, the at least one memory including a plurality of instructions stored thereon, the plurality of instructions being executed by the at least one processor to cause the computing system to: determine a mixed-integer programming model based on a plurality of constraints and a plurality of optimization objectives; receive activity rules from a rule queue of activity rules to be scheduled; and schedule a plurality of contact center agents to one or more activity sessions based on the activity rules by finding the optimal solution to a mixed-integer programming problem generated based on the mixed-integer programming model and the activity rules.

[0020] In some implementations, multiple instructions may also enable the computing system to receive scheduling information for the contact center, search for possible candidate sessions based on the scheduling information, estimate the contribution of each of the multiple contact center agents and facilitators to each of the multiple planning groups of the contact center, identify concurrent sessions based on possible candidate sessions, identify incompatible sessions based on possible candidate sessions, and determine staffing redundancy regarding the minimum staffing requirements for each of the multiple planning groups of the contact center.

[0021] In some implementations, multiple optimization objectives may include a first optimization objective of minimizing unassigned contact center seats, a second optimization objective of minimizing staff shortages caused by scheduling one or more active sessions, a third optimization objective of minimizing interrupted active sessions, and a fourth optimization objective of minimizing the percentage of open sessions.

[0022] In some implementations, multiple constraints may include: a first constraint that contact center agents must not be assigned or must be assigned to a session; a second constraint that the number of contact center agents assigned to a scheduling session must be at least the largest group size; a third constraint that the number of contact center agents assigned to a scheduling session must not exceed the largest group size; a fourth constraint that previously scheduled sessions cannot be unscheduled; a fifth constraint that the total number of scheduled sessions does not exceed the maximum total session count; a sixth constraint that the number of concurrent sessions must not exceed the maximum number of concurrent sessions; a seventh constraint that only one of two incompatible sessions can be scheduled; and an eighth constraint that defines whether staffing shortages below the minimum staffing requirements for the corresponding program group are permitted.

[0023] In some implementations, multiple instructions may also enable the computing system to: schedule activity rules in response to one or more reproducible settings based on activity rules, update activity rules, and add the updated activity rules to the rule queue.

[0024] According to another implementation, a method for multi-objective scheduling optimization in a contact center using a heuristic approach may include: adding assignable contact center agents to a pre-existing scheduling session by a computing system; selecting a session to be opened from a plurality of candidate sessions in response to adding the assignable contact center agents to the pre-existing scheduling session by the computing system; opening the selected session by the computing system; and assigning unassigned contact center agents to the opened session by the computing system, wherein at most one of the plurality of candidate sessions is opened for assignment at a given time.

[0025] In some implementations, adding an assignable contact center agent to a pre-existing scheduling session may include sorting the assignable contact center agents in descending order based on at least one of the following: the average number of sessions since the last scheduling of the corresponding assignable contact center agent, the queuing percentage of the corresponding assignable contact center agent, and the quality of service obtained by the contact center when the corresponding assignable contact center agent is assigned.

[0026] In some implementations, adding assignable contact center agents to a pre-existing scheduling session may also include assigning the assignable contact center agents in descending order of sorting.

[0027] In some implementations, selecting the session to be opened from multiple candidate sessions may include determining the corresponding percentage of contact center agents who are able to participate in each of the multiple candidate sessions.

[0028] In some implementations, selecting a session to open from multiple candidate sessions may include determining staffing surplus based on the minimum staffing requirements for each of multiple plan groups of contact centers that unassigned contact center agents can handle.

[0029] In some implementations, the method may further include the computing system reassigning at least one contact center agent assigned to another session in response to determining that the number of contact center agents assigned to the opened session is not at least the minimum group size of the opened session.

[0030] In some implementations, assigning unassigned contact center agents to open sessions may include sorting the unassigned contact center agents in descending order based on the average number of sessions since the last dispatch of the corresponding unassigned contact center agent.

[0031] In some implementations, assigning unassigned contact center agents to an open session may include sorting the unassigned contact center agents in descending order of their respective queue percentages.

[0032] In some implementations, assigning unassigned contact center agents to an open session may include sorting the unassigned contact center agents in descending order of the quality of service the contact center receives when assigning the corresponding unassigned contact center agent.

[0033] In some implementations, assigning unassigned contact center agents to an open session may include assigning unassigned contact center agents to an open session until an acceptable negative impact on contact center coverage is satisfied.

[0034] In some implementations, assigning unassigned contact center agents to open sessions may include assigning unassigned contact center agents to open sessions until the maximum session size is met.

[0035] According to another embodiment, a computing system for performing multi-objective scheduling optimization in a contact center using a heuristic approach may include at least one processor and at least one memory, the at least one memory including a plurality of instructions stored thereon, the plurality of instructions being executed by the at least one processor to cause the computing system to: add an assignable contact center agent to a pre-existing scheduling session; select a session to open from a plurality of candidate sessions in response to adding the assignable contact center agent to the pre-existing scheduling session; open the selected session; and assign an unassigned contact center agent to the opened session, wherein at most one of the plurality of candidate sessions is opened for assignment at a given time.

[0036] In some implementations, adding an assignable contact center agent to a pre-existing scheduling session may include sorting the assignable contact center agents in descending order based on at least one of the following: the average number of sessions since the last scheduling of the corresponding assignable contact center agent, the queuing percentage of the corresponding assignable contact center agent, and the quality of service obtained by the contact center when the corresponding assignable contact center agent is assigned.

[0037] In some implementations, adding assignable contact center agents to a pre-existing scheduling session may also include assigning the assignable contact center agents in descending order of sorting.

[0038] In some implementations, selecting the session to be opened from multiple candidate sessions may include determining the corresponding percentage of contact center agents who are able to participate in each of the multiple candidate sessions.

[0039] In some implementations, selecting a session to open from multiple candidate sessions may include determining staffing surplus based on the minimum staffing requirements for each of multiple plan groups of contact centers that unassigned contact center agents can handle.

[0040] In some implementations, multiple instructions may also cause the computing system to reassign at least one contact center agent assigned to another session in response to determining that the number of contact center agents assigned to the opened session is not at least the minimum group size of the opened session.

[0041] In some implementations, assigning unassigned contact center agents to open sessions may include sorting the unassigned contact center agents in descending order based on the average number of sessions since the last dispatch of the corresponding unassigned contact center agent.

[0042] In some implementations, assigning unassigned contact center agents to an open session may include sorting the unassigned contact center agents in descending order of their respective queue percentages.

[0043] In some implementations, assigning unassigned contact center agents to an open session may include sorting the unassigned contact center agents in descending order of the quality of service the contact center receives when assigning the corresponding unassigned contact center agent.

[0044] This invention is not intended to identify key or essential features of the claimed subject matter, nor is it intended to serve as an aid to limiting the scope of the claimed subject matter. Other embodiments, forms, features, and aspects of this application will become apparent from the description and drawings provided herein. Attached Figure Description

[0045] The concepts described herein are illustrated in the accompanying drawings by way of example and not by way of limitation. For simplicity and clarity, the elements illustrated in the drawings are not necessarily drawn to scale. Where deemed appropriate, reference numerals have been repeated in the drawings to indicate corresponding or similar elements.

[0046] Figure 1 A simplified block diagram of at least one implementation scheme of a contact center system is depicted;

[0047] Figure 2 It is a simplified block diagram of at least one implementation of a computing device;

[0048] Figure 3 This is a simplified flowchart of at least one implementation of a method for multi-objective scheduling optimization in a contact center;

[0049] Figure 4 This is a simplified flowchart of at least one implementation of a method for adding initial activity rules to a queue;

[0050] Figure 5This is a simplified flowchart of at least one implementation of a method for generating candidate time slots for activity rules;

[0051] Figure 6 This is a simplified flowchart of at least one implementation of a method for scheduling activity rules using a mixed-integer programming (MIP) model;

[0052] Figure 7 This is a simplified flowchart of at least one implementation of a method for preprocessing data used in scheduling activity rules;

[0053] Figure 8 It is a simplified flowchart of at least one implementation of a method for scheduling activity rules using a heuristic approach;

[0054] Figure 9 Examples of waiting and Figure 6 The MIP model combines example abbreviations, symbols, and / or sets used in combination;

[0055] Figure 10 Examples of waiting and Figure 8 The heuristic approach combines the use of example abbreviations, symbols, and / or sets; and

[0056] Figure 11 yes Figure 8 A simplified example of pseudocode for at least one implementation of a heuristic approach. Detailed Implementation

[0057] While the concepts of this disclosure are susceptible to various modifications and alternatives, specific embodiments have been shown by way of example in the accompanying drawings and will be described in detail herein. However, it should be understood that the concepts of this disclosure are not intended to be limited to the specific forms disclosed, but rather are intended to cover all modifications, equivalents, and alternatives consistent with this disclosure and the appended claims.

[0058] References to "an embodiment," "an embodiment," "an exemplary embodiment," etc., in the specification indicate that the described embodiment may include a particular feature, structure, or characteristic; however, each embodiment may or may not include that particular feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. It should also be understood that although references to "preferred" components or features may indicate the desirability of a particular component or feature with respect to an embodiment, this disclosure is not therefore limited to other embodiments in which such component or feature may be omitted. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is considered that implementing such a feature, structure, or characteristic in conjunction with other embodiments is within the knowledge of those skilled in the art, whether explicitly described or not. Moreover, in various embodiments, a particular feature, structure, or characteristic may be combined in any suitable combination and / or sub-combination.

[0059] Additionally, it should be understood that items included in the list in the form of “at least one of A, B, and C” may mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Similarly, items listed in the form of “at least one of A, B, or C” may mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Furthermore, with respect to the claims, the use of words and phrases such as “a,” “an,” “at least one,” and / or “at least a portion” should not be construed as limiting to only one such element unless specifically stated otherwise, and the use of phrases such as “at least a portion” and / or “a portion” should be construed as covering both embodiments that include only a portion of such element and embodiments that include the entire such element, unless specifically stated otherwise.

[0060] In some cases, the disclosed embodiments may be implemented in hardware, firmware, software, or a combination thereof. The disclosed embodiments may also be implemented as instructions carried or stored on one or more transient or non-transient machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. Machine-readable storage media may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a machine-readable form (e.g., volatile or non-volatile memory, media disk, or other media device).

[0061] In the accompanying drawings, certain structural or methodological features may be shown in a particular arrangement and / or sequence. However, it should be understood that such a particular arrangement and / or sequence may not be necessary. Rather, in some embodiments, unless otherwise indicated, such features may be arranged in a different manner and / or order than shown in the illustrative figures. Additionally, the inclusion of a structural or methodological feature in a particular figure does not imply that such a feature is required in all embodiments, and in some embodiments, such a feature may be omitted or may be combined with other features.

[0062] Now for reference Figure 1 This diagram illustrates a simplified block diagram of at least one embodiment of a communication infrastructure and / or content center system that can be used in conjunction with one or more embodiments described herein. The contact center system 100 can be embodied as any system capable of providing contact center services (e.g., call center services, chat center services, SMS center services, etc.) to end users, and otherwise performing the functions described herein. The exemplary contact center system 100 includes client equipment 102, network 104, switch / media gateway 106, call controller 108, interactive media response (IMR) server 110, routing server 112, storage device 114, statistics server 116, agent devices 118A, 118B, 118C, media server 120, knowledge management server 122, knowledge system 124, chat server 126, web server 128, interactive (iXn) server 130, general contact server 132, reporting server 134, media service server 136, and analytics module 138. Although in Figure 1The exemplary implementation shows only one client device 102, one network 104, one switch / media gateway 106, one call controller 108, one IMR server 110, one routing server 112, one storage device 114, one statistics server 116, one media server 120, one knowledge management server 122, one knowledge system 124, one chat server 126, one iXn server 130, one general contact server 132, one reporting server 134, one media service server 136, and An analysis module 138 is included, but in other embodiments, the contact center system 100 may include multiple client devices 102, a network 104, a switch / media gateway 106, a call controller 108, an IMR server 110, a routing server 112, a storage device 114, a statistics server 116, a media server 120, a knowledge management server 122, a knowledge system 124, a chat server 126, an iXn server 130, a general contact server 132, a reporting server 134, a media service server 136, and / or an analysis module 138. Furthermore, in some embodiments, one or more of the components described herein may be excluded from system 100, one or more independent components described as separate components may form part of another component, and / or one or more components described as forming part of another component may be separate.

[0063] It should be understood that the term "contact center system" is used in this article to refer to Figure 1 The term “contact center” is used more generally to refer to a contact center system, the customer service providers operating those systems, and / or the organizations or enterprises associated with them. Therefore, unless explicitly limited otherwise, the term “contact center” generally refers to a contact center system (such as contact center system 100), the associated customer service providers (such as specific customer service providers / agents providing customer service through contact center system 100), and the organizations or enterprises that provide those customer services on its behalf.

[0064] In the back-end, customer service providers can offer a variety of services through contact centers. Such contact centers may be staffed with employees or customer service agents (or simply "agents") who act as intermediaries between companies, businesses, government agencies, or organizations (hereinafter referred to interchangeably as "organizations" or "enterprises") and individuals such as users, individuals, or customers (hereinafter referred to interchangeably as "individuals," "customers," or "contact center clients"). For example, agents at a contact center can assist customers in making purchasing decisions, receiving orders, or resolving issues with received products or services. Within a contact center, such interactions between contact center agents and external entities or customers can take place on various communication channels, such as, for example, via voice (e.g., telephone calls or VoIP calls), video (e.g., video conferencing), text (e.g., email and text chat), screen sharing, shared browsing, and / or other communication channels.

[0065] Operationally, contact centers typically strive to provide high-quality service to customers while minimizing costs. For example, one way contact centers operate is by handling each customer's interaction with a live agent. While this approach may score well in terms of service quality, it can also be very expensive due to the high cost of agent labor. Therefore, most contact centers utilize some degree of automation to replace live agents, such as interactive voice response (IVR) systems, interactive media response (IMR) systems, internet bots or "bots," automated chat modules or "chatbots," and / or other automated processes. In many cases, this has proven to be a successful strategy because automated processes can handle certain types of interactions very efficiently and effectively reduce the need for live agents. Such automation allows contact centers to use human agents for more challenging customer interactions, while automated processes handle more repetitive or routine tasks. Furthermore, automated processes can be built in ways that optimize efficiency and promote repeatability. While human or live agents may forget to ask certain questions or follow up on specific details, such errors can often be avoided by using automated processes. Although customer service providers are increasingly reliant on automated processes to interact with customers, customers still use such technologies far less. Therefore, although IVR systems, IMR systems, and / or robots are used to automate some interactions on the contact center side of the interaction, the actions on the customer side are still performed manually by the customer.

[0066] It should be understood that customer service providers can use contact center system 100 to provide various types of services to customers. For example, contact center system 100 can be used to participate in and manage interactions between automated processes (or robots) or human agents and customers. It should be understood that contact center system 100 can be an internal facility of a company or enterprise for performing sales and customer service functions relative to products and services available to the enterprise. In another embodiment, contact center system 100 can be operated by a third-party service provider contracted to provide services to another organization. Furthermore, contact center system 100 can be deployed on equipment dedicated to an enterprise or third-party service provider, and / or deployed in a remote computing environment, such as, for example, a private or public cloud environment with infrastructure for supporting multiple contact centers for multiple enterprises. Contact center system 100 may include software applications or programs that can be executed on-site or remotely, or some combination thereof. It should also be understood that the various components of contact center system 100 can be distributed across various geographical locations and are not necessarily contained in a single location or computing environment.

[0067] It should also be understood that, unless otherwise expressly limited, any of the computing elements in this invention may also be implemented in a cloud-based or cloud computing environment. As used herein and further described below with reference to computing device 200, “cloud computing” (or simply “cloud”) is defined as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage devices, applications, and services), which can be rapidly configured via virtualization and deployed with minimal management effort or service provider interaction, and then scaled accordingly. Cloud computing can be comprised of various characteristics (e.g., on-demand self-service, extensive network access, resource pooling, rapid elasticity, metered services, etc.), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), Infrastructure as a Service (“IaaS”), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.). Cloud execution models are often referred to as “serverless architectures,” which typically involve service providers that dynamically manage the allocation and configuration of remote servers to achieve the required functionality.

[0068] It should be understood that, relative to Figure 1 Any of the computer-implemented components, modules, or servers described can be accessed via one or more types of computing devices (such as, for example...) Figure 2The contact center system 100 is implemented using a computing device 200. As will be seen, the contact center system 100 typically manages resources (e.g., personnel, computers, telecommunications equipment, etc.) to enable the delivery of services via telephone, email, chat, or other communication mechanisms. Such services may vary depending on the type of contact center and may include, for example, customer service, help desk functionality, emergency response, telemarketing, order taking, and / or other features.

[0069] Customers wishing to receive services from contact center system 100 can initiate inbound communications to contact center system 100 (e.g., telephone calls, emails, chat, etc.) via customer equipment 102. Although Figure 1 One such client device (i.e., client device 102) is shown, but it should be understood that any number of client devices 102 may exist. Client device 102 may be, for example, a communication device such as a telephone, smartphone, computer, tablet, or laptop computer. Based on the functionality described herein, a customer may typically use client device 102 to initiate, manage, and conduct communications with contact center system 100, such as telephone calls, emails, chat, text messages, web browsing sessions, and other multimedia transactions.

[0070] Inbound and outbound communications to and from client equipment 102 can traverse network 104, the nature of which typically depends on the type of client equipment used and the form of communication. For example, network 104 may include communication networks for telephone, cellular, and / or data services. Network 104 may be a private or public switched telephone network (PSTN), a local area network (LAN), a private wide area network (WAN), and / or a public WAN (such as the Internet). Furthermore, network 104 may include a wireless carrier network, including Code Division Multiple Access (CDMA) networks, Global System for Mobile Communications (GSM) networks, or any wireless network / technology conventional in the art, including but not limited to 3G, 4G, LTE, 5G, etc.

[0071] Switch / media gateway 106 may be coupled to network 104 for receiving and sending telephone calls between a customer and contact center system 100. Switch / media gateway 106 may include a telephone or communications exchange configured to act as a central exchange for agent-level routing within the center. The exchange may be a hardware switching system or implemented via software. For example, exchange 106 may include an automatic call distributor, a private branch exchange (PBX), an IP-based software exchange, and / or any other exchange with dedicated hardware and software configured to receive interactions from the Internet and / or from the telephone network from the customer and route those interactions to, for example, one of the agent devices in agent device 118. Thus, generally speaking, switch / media gateway 106 establishes a voice connection between a customer and an agent by establishing a connection between customer device 102 and agent device 118.

[0072] As further shown, the switch / media gateway 106 may be coupled to a call controller 108, which may serve as, for example, an adapter or interface between the switch and other routing, monitoring, and communication processing components of the contact center system 100. The call controller 108 may be configured to handle PSTN calls, VoIP calls, and / or other types of calls. For example, the call controller 108 may include computer telephony integration (CTI) software for interacting with the switch / media gateway and other components. The call controller 108 may include a Session Initiation Protocol (SIP) server for handling SIP calls. The call controller 108 may also extract data about incoming interactions, such as a customer's phone number, IP address, or email address, and then communicate this data to other contact center components while processing the interaction.

[0073] Interactive Media Response (IMR) server 110 can be configured to enable self-service or virtual assistant functionality. Specifically, IMR server 110 can be similar to an Interactive Voice Response (IVR) server, except that IMR server 110 is not limited to voice and can also cover various media channels. In an example exemplifying voice, IMR server 110 can be configured with IMR scripts to inquire about a customer's needs. For example, a bank's contact center can instruct a customer via an IMR script to "press 1" if they wish to retrieve their account balance. By continuing to interact with IMR server 110, the customer can receive service without speaking to an agent. IMR server 110 can also be configured to determine the reason a customer contacts the contact center, enabling communications to be routed to the appropriate resources. IMR configuration can be performed using self-service and / or auxiliary service tools, including web-based tools for developing IVR applications and routing applications that run in a contact center environment.

[0074] Routing server 112 can be used to route incoming interactions. For example, once it is determined that inbound communication should be handled by a human agent, functionality within routing server 112 can select the most appropriate agent and route the communication to them. This agent selection can be based on which available agent is best suited to handle the communication. More specifically, the selection of the appropriate agent can be based on a routing strategy or algorithm implemented by routing server 112. In doing so, routing server 112 can query data related to the incoming interaction, such as data related to a specific customer, available agents, and interaction type, as described herein, which can be stored in a specific database. Once an agent is selected, routing server 112 can interact with call controller 108 to route (i.e., connect) the incoming interaction to the corresponding agent device 118. As part of this connection, information about the customer can be provided to the selected agent via their agent device 118. This information is intended to enhance the services the agent can provide to the customer.

[0075] It should be understood that the contact center system 100 may include one or more mass storage devices (typically represented by storage device 114) for storing data in one or more databases related to the functions of the contact center. For example, storage device 114 may store customer data maintained in a customer database. Such customer data may include, for example, customer profiles, contact information, service level agreements (SLAs), and interaction history (e.g., details of previous interactions with a particular customer, including the nature of the previous interaction, handling data, wait times, processing times, and actions taken by the contact center to resolve customer issues). As another example, storage device 114 may store agent data in an agent database. Agent data maintained by the contact center system 100 may include, for example, agent availability and agent profiles, schedules, skills, processing times, and / or other relevant data. As another example, storage device 114 may store interaction data in an interaction database. Interaction data may include, for example, data related to numerous past interactions between customers and the contact center. More generally, it should be understood that, unless otherwise specified, storage device 114 may be configured to include databases and / or store data related to any of the information types described herein, wherein these databases and / or data can be accessed by other modules or servers of contact center system 100 in a manner that facilitates the functionality described herein. For example, servers or modules of contact center system 100 may query such databases to retrieve data stored therein or send data thereto for storage. For example, storage device 114 may take the form of any conventional storage medium and may be installed locally or operated from a remote location. For example, the database may be a Cassandra database, a NoSQL database, or an SQL database, and is managed by a database management system such as Oracle, IBM DB2, Microsoft SQL Server, Microsoft Access, or PostgreSQL.

[0076] Statistics server 116 can be configured to record and aggregate data related to the performance and operational aspects of contact center system 100. This information can be compiled by statistics server 116 and made available to other servers and modules such as reporting server 134, which can then use the data to generate reports that are used to manage operational aspects of the contact center and perform automated actions according to the functionality described herein. This data may relate to the status of contact center resources, such as average wait time, abandonment rate, agent occupancy rate, and other data required by the functionality described herein.

[0077] The agent device 118 of the contact center system 100 may be a communication device configured to interact with various components and modules of the contact center system 100 in a manner that facilitates the functionality described herein. For example, agent device 118 may include a telephone suitable for regular telephone calls or VoIP calls. Agent device 118 may also include a computing device configured to communicate with the server of the contact center system 100 according to the functionality described herein, perform data processing associated with operation, and interact with customers via voice, chat, email, and other multimedia communication mechanisms. Although Figure 1 Three such agent devices 118 are shown (i.e., agent devices 118A, 118B, and 118C), but it should be understood that any number of agent devices 118 may be present in a particular embodiment.

[0078] The multimedia / social media server 120 can be configured to facilitate media interaction (excluding voice) with client device 102 and / or server 128. Such media interaction may be associated with, for example, email, voicemail, chat, video, text messaging, networking, social media, shared browsing, etc. The multimedia / social media server 120 may take the form of any IP router conventional in the art, equipped with dedicated hardware and software for receiving, processing, and forwarding multimedia events and communications.

[0079] Knowledge management server 122 may be configured to facilitate interaction between clients and knowledge system 124. Generally, knowledge system 124 may be a computer system capable of receiving questions or queries and providing answers in response. Knowledge system 124 may be included as part of contact center system 100 or remotely operated by a third party. Knowledge system 124 may include an artificial intelligence computer system capable of answering questions posed in natural language by retrieving information from sources such as encyclopedias, dictionaries, newsletter articles, literary works, or other documents submitted to knowledge system 124 as reference material. For example, knowledge system 124 may be embodied in IBM Watson or a similar system.

[0080] Chat server 126 can be configured to conduct, orchestrate, and manage electronic chat communications with clients. Generally, chat server 126 is configured to implement and maintain chat conversations and generate chat transcripts. Such chat communications can be conducted by chat server 126 in a manner where the client communicates with an automated chatbot, a human agent, or both. In an exemplary embodiment, chat server 126 can function as a chat orchestration server that schedules chat conversations between chatbots and available human agents. In such cases, the processing logic of chat server 126 can be rule-driven to leverage intelligent workload distribution among available chat resources. Chat server 126 can also implement, manage, and facilitate user interfaces (UIs) associated with chat features, including those generated at client device 102 or agent device 118. Chat server 126 can be configured to transfer chat between automated and human resources within a single chat session with a specific client, such as transferring a chat session from a chatbot to a human agent or vice versa. Chat server 126 can also be coupled to knowledge management server 122 and knowledge system 124 to receive suggestions and answers to queries made by customers during chat, such as providing links to relevant articles.

[0081] Web server 128 may be included to provide site hosting for various social interaction sites (such as Facebook, Twitter, Instagram, etc.) subscribed to by customers. Although depicted as part of contact center system 100, it should be understood that web server 128 may be provided and / or remotely maintained by a third party. Web server 128 may also provide web pages for businesses or organizations supported by contact center system 100. For example, customers may browse web pages and receive information about the products and services of a particular business. Within such business web pages, mechanisms may be provided for initiating interactions with contact center system 100, such as via web chat, voice, or email. Examples of such mechanisms are widgets that may be deployed on web pages or websites hosted on web server 128. As used herein, a widget refers to a user interface component that performs a specific function. In some implementations, a widget may include a graphical user interface control that may be overlaid on a web page displayed to a customer via the Internet. Widgets may display information, such as in a window or text box, or include buttons or other controls that allow customers to access certain functionalities, such as sharing or opening files or initiating communications. In some implementations, a widget includes a user interface component with a portable portion of code that can be installed and executed within a separate web page without compilation. Some widgets may include a corresponding or additional user interface and may be configured to access various local resources (e.g., calendar or contact information on a client device) or remote resources via a network (e.g., instant messaging, email, or social network updates).

[0082] Interactive (iXn) server 130 can be configured to manage deferred activities in the contact center and their routing to human agents for completion. As used herein, deferred activities can include background work that can be performed offline, such as replying to emails, attending training sessions, and other activities that do not require real-time communication with customers. For example, interactive (iXn) server 130 can be configured to interact with routing server 112 to select an appropriate agent to handle each deferred activity among the deferred activities. Once assigned to a specific agent, the deferred activity is pushed to that agent, making it appear on the selected agent's agent device 118. Deferred activities can appear in a workspace as tasks to be completed by the selected agent. The functionality of the workspace can be implemented using any conventional data structure, such as, for example, linked lists, arrays, and / or other suitable data structures. Each agent device in agent device 118 can include a workspace. For example, the workspace can be maintained in a buffer memory of the corresponding agent device 118.

[0083] The Universal Contact Server (UCS) 132 can be configured to retrieve information stored in a customer database and / or send information to it for storage. For example, UCS 132 can be used as part of a chat feature to facilitate maintaining a history of how chats with a particular customer were handled, which can then be used as a reference for how future chats should be handled. More generally, UCS 132 can be configured to facilitate maintaining a history of customer preferences, such as preferred media channels and optimal contact times. To this end, UCS 132 can be configured to identify data associated with each customer's interaction history, such as data related to comments from agents, customer communication history, etc. Each of these data types can then be stored in the customer database 222 or on other modules and retrieved according to the functional requirements described herein.

[0084] Reporting server 134 can be configured to generate reports based on data compiled and aggregated by statistics server 116 or other sources. Such reports may include near real-time or historical reports and relate to the status and performance characteristics of contact center resources, such as average wait time, abandonment rate, and / or agent occupancy. Reports may be generated automatically or in response to specific requests from requesters (e.g., agents, administrators, contact center applications, etc.). These reports can then be used to manage contact center operations according to the functionality described herein.

[0085] Media service server 136 may be configured to provide audio and / or video services to support contact center features. Such features, as described herein, may include prompts to IVR or IMR systems (e.g., playback of audio files), hold music, voicemail / one-way recording, multi-way recording (e.g., multi-way recording of audio and / or video calls), screen recording, speech recognition, dual-tone multi-frequency (DTMF) recognition, fax, audio and video transcoding, Secure Real-Time Transport Protocol (SRTP), audio conferencing, video conferencing, tutorials (e.g., enabling coaches to listen to interactions between customers and agents and enabling coaches to provide comments to agents when customers have not heard them), call analytics, keyword targeting, and / or other relevant features.

[0086] Analysis module 138 can be configured to provide systems and methods for performing analysis on data received from multiple different data sources, as the functionality described herein may require. According to example embodiments, analysis module 138 can also generate, update, train, and modify predictors or models based on collected data, such as, for example, customer data, agent data, and interaction data. Models may include behavioral models of customers or agents. Behavioral models can be used to predict, for example, customer or agent behavior in various situations, thereby allowing embodiments of the invention to tailor interactions or allocate resources to prepare predictive characteristics for future interactions based on such predictions, thereby improving the overall performance of the contact center and the customer experience. It should be understood that while the analysis module is described as part of a contact center, such behavioral models can also be implemented on the customer system (or, as used herein, on the "customer side" of the interaction) and used for customer benefits.

[0087] According to an exemplary embodiment, the analysis module 138 can access data stored in storage device 114 (including a customer database and an agent database). The analysis module 138 can also access an interaction database that stores data related to interactions and interaction content (e.g., transcriptions of detected interactions and events), interaction metadata (e.g., customer identifiers, agent identifiers, interaction media, interaction duration, interaction start and end times, department, tag category), and application settings (e.g., interaction paths via contact centers). Furthermore, the analysis module 138 can be configured to retrieve data stored in storage device 114 for use, for example, in developing and training algorithms and models by applying machine learning techniques.

[0088] One or more of the included models can be configured to predict customer or agent behavior and / or aspects related to contact center operation and performance. Furthermore, one or more of the models can be used for natural language processing and, for example, include intent recognition. Models can be developed based on: known first-principles equations describing the system; data that generates the empirical model; or a combination of known first-principles equations and data. When developing models for use with embodiments of the invention, since first-principles equations are often unavailable or not easily derived, it is generally preferable to build empirical models based on collected and stored data. In order to accurately capture the relationship between the manipulating / interference variables and the controlled variables of a complex system, in some embodiments, it may be preferred that the model be nonlinear. This is because nonlinear models can represent a curvilinear relationship between the manipulating / interference variables and the controlled variables rather than a linear one, which is common for complex systems such as those discussed herein. In view of the foregoing requirements, machine learning or neural network-based methods may be preferred embodiments for implementing the model. For example, advanced regression algorithms can be used to develop neural networks based on empirical data.

[0089] Analysis module 138 may also include an optimizer. It should be understood that an optimizer can be used to minimize a “cost function” subject to a set of constraints, where the cost function is a mathematical representation of the desired objective or system operation. Since the model can be nonlinear, the optimizer can be a nonlinear programming optimizer. However, it is conceivable that the techniques described herein can be implemented using a variety of different types of optimization methods, individually or in combination, including but not limited to linear programming, quadratic programming, mixed-integer nonlinear programming, stochastic programming, global nonlinear programming, genetic algorithms, and particle / swarm optimization techniques.

[0090] According to some implementation schemes, the model and optimizer can be used together within the optimization system. For example, the analysis module 138 can utilize the optimization system as part of an optimization process to optimize or at least enhance aspects of the contact center's performance and operation. This could include, for example, features related to customer experience, agent experience, interaction routing, natural language processing, intent recognition, or other functionality related to automation processes.

[0091] Figure 1 The various components, modules, and / or servers (and other figures included herein) may each include one or more processors that execute computer program instructions and interact with other system components to perform the various functionalities described herein. Such computer program instructions may be stored in memory implemented using standard storage devices such as, for example, random access memory (RAM), or in other non-transitory computer-readable media such as, for example, CD-ROMs, flash drives, etc. Although the functionality of each server is described as being provided by a specific server, those skilled in the art will recognize that the functionality of various servers may be combined or integrated into a single server, or the functionality of a particular server may be distributed across one or more other servers, without departing from the scope of the invention. Furthermore, the terms “interaction” and “communication” are used interchangeably and generally refer to any real-time and non-real-time interaction using any communication channel, including but not limited to telephone calls (PSTN or VoIP calls), email, voicemail, video, chat, screen sharing, text messages, social media messages, WebRTC calls, etc. Access to and control of components of the contact center system 100 can be influenced by a user interface (UI) that may be generated on client equipment 102 and / or agent equipment 118.

[0092] As already noted, in some implementations, the contact center system 100 may operate as a hybrid system in which some or all components are remotely hosted, such as in a cloud-based or cloud computing environment. It should be understood that each of the devices in the contact center system 100 may be embodied in, include, or form similar to those referenced below. Figure 2The computing device 200 described is part of one or more computing devices.

[0093] Now for reference Figure 2 A simplified block diagram of at least one embodiment of computing device 200 is shown. The illustrative computing device 200 depicts at least one embodiment of each of the computing devices, systems, servers, controllers, switches, gateways, engines, modules, and / or computing components described herein (e.g., for the sake of brevity, they may be interchangeably referred to as computing devices, servers, or modules). For example, various computing devices may be processes or threads running on one or more processors of one or more computing devices 200, which can execute computer program instructions and interact with other system modules to perform the various functionalities described herein. Unless otherwise expressly limited, the functionalities described with respect to multiple computing devices may be integrated into a single computing device, or the various functionalities described with respect to a single computing device may be distributed across several computing devices. Furthermore, regarding the computing systems described herein (such as… Figure 1 The contact center system 100, with its various servers and computer equipment, may be located on local computing devices 200 (e.g., on-site at the same physical location as the contact center agents), on remote computing devices 200 (e.g., off-site or in a cloud-based or cloud computing environment, such as in a remote data center connected via a network), or some combination thereof. In some implementations, functionality provided by servers on off-site computing devices may be accessed and provided via a Virtual Private Network (VPN) as if such servers were on-site, or functionality may be provided using Software as a Service (SaaS) (accessible via the Internet using various protocols), such as exchanging data via Extensible Markup Language (XML) and JSON, and / or the functionality may be accessed / utilized in other ways.

[0094] In some implementations, the computing device 200 may be embodied as a server, desktop computer, laptop computer, tablet computer, notebook computer, netbook, or ultrabook. ™ Cellular phones, mobile computing devices, smartphones, wearable computing devices, personal digital assistants, Internet of Things (IoT) devices, processing systems, wireless access points, routers, gateways and / or any other computing, processing and / or communication devices capable of performing the functions described herein.

[0095] The computing device 200 includes a processing device 202 that executes algorithms and / or processes data according to operating logic 208, an input / output device 204 that enables communication between the computing device 200 and one or more external devices 210, and a memory 206 that stores data, for example, received from the external devices 210 via the input / output device 204.

[0096] Input / output device 204 allows computing device 200 to communicate with external device 210. For example, input / output device 204 may include a transceiver, network adapter, network interface card (NIC), interface, one or more communication ports (e.g., USB port, serial port, parallel port, analog port, digital port, VGA, DVI, HDMI, FireWire, CAT5, or any other type of communication port or interface) and / or other communication circuitry. Depending on the specific computing device 200, the communication circuitry of computing device 200 may be configured to use any one or more communication technologies (e.g., wireless or wired communication) and associated protocols (e.g., Ethernet, Bluetooth). ® Wi-Fi ® This type of communication can be achieved using devices such as WiMAX, etc. Input / output device 204 may include hardware, software, and / or firmware suitable for performing the techniques described herein.

[0097] External device 210 can be any type of device that allows data to be input or output from computing device 200. For example, in various embodiments, external device 210 may be embodied as one or more and / or a part of the devices / systems described herein. Furthermore, in some embodiments, external device 210 may be embodied as another computing device, switch, diagnostic tool, controller, printer, monitor, alarm, peripheral device (e.g., keyboard, mouse, touchscreen display, etc.) and / or any other computing device, processing device, and / or communication device capable of performing the functions described herein. Additionally, in some embodiments, it should be understood that external device 210 may be integrated into computing device 200.

[0098] Processing device 202 may be embodied as any type of processor capable of performing the functions described herein. In particular, processing device 202 may be embodied as one or more single-core or multi-core processors, microcontrollers, or other processors or processing / control circuitry. For example, in some embodiments, processing device 202 may include or be embodied as an arithmetic logic unit (ALU), a central processing unit (CPU), a digital signal processor (DSP), a graphics processing unit (GPU), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and / or another suitable processor. Processing device 202 may be programmable, a dedicated hardwired state machine, or a combination thereof. In various embodiments, processing device 202 having multiple processing units may utilize distributed, pipelined, and / or parallel processing. Furthermore, processing device 202 may be dedicated solely to the execution of the operations described herein, or may be utilized in one or more additional applications. In exemplary embodiments, processing device 202 is programmable and can execute algorithms and / or process data according to operating logic 208, as defined by programming instructions (such as software or firmware) stored in memory 206. Additionally or alternatively, the operating logic 208 for the processing device 202 may be at least partially defined by hard-wired logic or other hardware. Furthermore, the processing device 202 may include one or more components of any type suitable for processing signals received from the input / output device 204 or from other components or devices and providing a desired output signal. Such components may include digital circuitry, analog circuitry, or combinations thereof.

[0099] Memory 206 may be one or more types of non-transitory computer-readable media, such as solid-state memory, electromagnetic memory, optical memory, or combinations thereof. Furthermore, memory 206 may be volatile and / or non-volatile, and in some embodiments, some or all of the memory in memory 206 may be portable types, such as disks, magnetic tapes, memory sticks, cassette tapes, and / or other suitable portable storage devices. In operation, memory 206 may store various data and software used during the operation of computing device 200, such as operating systems, applications, programs, libraries, and drivers. It should be understood that, in addition to or instead of storing programming instructions defining operating logic 208, memory 206 may store data manipulated by the operating logic 208 of processing device 202, such as, for example, data representing signals received from and / or transmitted to input / output device 204. Figure 2 As shown, depending on the specific implementation, memory 206 may be included in and / or coupled to processing device 202. For example, in some implementations, processing device 202, memory 206, and / or other components of computing device 200 may form part of a system-on-a-chip (SoC) and be incorporated onto a single integrated circuit chip.

[0100] In some implementations, various components of computing device 200 (e.g., processing device 202 and memory 206) may be communicatively coupled via an input / output subsystem, which may be embodied as circuitry and / or components to facilitate input / output operations with processing device 202, memory 206, and other components of computing device 200. For example, the input / output subsystem may be embodied as or otherwise include a memory controller hub, an input / output control hub, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and / or other components and subsystems to facilitate input / output operations.

[0101] In other embodiments, computing device 200 may include other or additional components, such as those common in typical computing devices (e.g., various input / output devices and / or other components). It should also be understood that one or more of the components of computing device 200 described herein may be distributed across multiple computing devices. In other words, the techniques described herein can be employed by computing systems that include one or more computing devices. Additionally, although in Figure 2 The illustration shows only a single processing device 202, I / O device 204, and memory 206; however, it should be understood that in other embodiments, a particular computing device 200 may include multiple processing devices 202, I / O devices 204, and / or memory 206. Furthermore, in some embodiments, more than one external device 210 may communicate with the computing device 200.

[0102] Computing device 200 can be one of a plurality of devices connected to or via a network to other systems / sources. A network can be embodied as any one or more types of communication networks capable of facilitating communication between various devices communicatively connected via a network. Therefore, a network can include one or more networks, routers, switches, access points, hubs, computers, client devices, endpoints, nodes, and / or other intermediate network devices. For example, a network can be embodied as or otherwise include one or more cellular networks, telephone networks, local area networks or wide area networks, publicly available global networks (e.g., the Internet), ad hoc networks, short-range communication links, or combinations thereof. In some embodiments, a network can include circuit-switched voice or data networks, packet-switched voice or data networks, and / or any other network capable of carrying voice and / or data. In particular, in some embodiments, a network can include Internet Protocol (IP) based and / or Asynchronous Transfer Mode (ATM) based networks. In some embodiments, a network can handle voice traffic (e.g., via Voice over IP (VoIP) networks), web traffic, and / or other network traffic depending on the specific implementation of the systems communicating with each other and / or other devices. In various implementations, the network may include analog or digital wired and wireless networks (e.g., IEEE 802.11 networks, Public Switched Telephone Network (PSTN), Integrated Services Digital Network (ISDN), and Digital Subscriber Line (xDSL)), third-generation (3G) mobile telecommunications networks, fourth-generation (4G) mobile telecommunications networks, fifth-generation (5G) mobile telecommunications networks, wired Ethernet networks, private networks (e.g., intranets), radio, television, cable, satellite, and / or any other delivery or tunneling mechanism for carrying data, or any suitable combination of such networks. It should be understood that various devices / systems may depend on the source and / or destination devices communicating with each other via different networks.

[0103] It should be understood that computing device 200 can communicate with other computing devices 200 via any type of gateway or tunneling protocol (such as Secure Sockets Layer or Transport Layer Security). The network interface may include a built-in network adapter (such as a network interface card) suitable for connecting computing devices to any type of network capable of performing the operations described herein. Furthermore, the network environment can be a virtual network environment in which various network components are virtualized. For example, various machines can be virtual machines implemented as software-based computers running on physical machines. Virtual machines may share the same operating system, or in other embodiments, different operating systems may run on each virtual machine instance. For example, a "hypervisor" type of virtualization is used, where multiple virtual machines run on the same host physical machine, each virtual machine acting as if it had its own dedicated box. In other embodiments, other types of virtualization may be employed, such as, for example, networking (e.g., via software-defined networking) or functions (e.g., via network function virtualization).

[0104] Therefore, one or more of the computing devices 200 described herein may be embodied as or form part of one or more cloud-based systems. In a cloud-based implementation, the cloud-based system may be embodied as a server-fuzzy computing solution that, for example, executes multiple instructions on demand, includes logic that executes instructions only when prompted by a specific activity / trigger, and does not consume computing resources when not in use. That is, the system may be embodied as a virtual computing environment (e.g., a distributed network of devices) residing “on” the computing system, where various virtual functions (e.g., lambda functions, Azure functions, Google Cloud functions, and / or other suitable virtual functions) may correspond to functions of the system described herein for execution. For example, when an event occurs (e.g., data is transferred to the system for processing), communication with the virtual computing environment may occur (e.g., via a request to the virtual computing environment’s API), whereby the API may route the request to the correct virtual function (e.g., a specific server-fuzzy computing resource) based on a set of rules. Thus, when a user makes a request for data transfer (e.g., via the appropriate user interface of the system), the appropriate virtual function may be executed to perform an action before an instance of the virtual function is eliminated.

[0105] Figures 3 to 8Various approaches associated with multi-objective scheduling optimization in contact centers are illustrated. As described above, contact centers address the challenging task of scheduling the right number of employees with the right skills at the right time to meet the expected interactive workload while also satisfying service quality metrics. It should be understood that scheduling activities can involve finding the number of sessions to schedule, as well as the time and participants for each session, while minimizing or limiting the impact on service quality. Scheduling activities (such as training, one-to-one sessions, and full-staff sessions) in contact centers are complex and time-consuming tasks, especially in contact centers that support multiple types of interactions and whose agents have different skill sets (e.g., agents can handle different types of interactions, handle interactions in different languages, etc.) and have different schedules.

[0106] It should be understood that activities scheduled by a computing system may include any actions that require the attention or presence (physical or virtual) of agents, rendering them unavailable to handle contact center interactions. Therefore, activity scheduling can negatively impact the quality of service in a contact center, particularly when scheduling large public meetings (e.g., all-hands meetings) with many participants. The techniques described herein minimize and / or limit the negative impact of activity scheduling on the quality of service in a contact center by analyzing various factors such as, for example, agent / facilitator availability, agent skill set, interaction workload, physical constraints (e.g., room size), and / or other relevant considerations.

[0107] Event scheduling is also a computationally “hard” problem. As the problem size increases (e.g., with more potential attendees, more potential scheduling times and / or other variables), some optimization methods may become infeasible due to increased runtime and memory requirements. In other words, solving the scheduling problem can be computationally complex enough that traditional computer-based, mathematically driven methods cannot solve the problem in a sufficiently short time to become a feasible practical solution. It should be understood that the techniques described herein can even utilize multiple approaches (e.g., MIP-based models and heuristics) to address the potential computational complexity of the scheduling problem. For example, in some implementations, the computing system may utilize MIP-based modeling unless one or more thresholds associated with scheduling complexity (e.g., the number of potential attendees, the number of potential scheduling slots, etc.) are exceeded, in which case the computing system may “fall back” to or otherwise utilize the heuristics described herein. In some implementations, cloud-based constraint programming solvers may be used to solve MIP-based methods.

[0108] In exemplary implementations, the computational system addresses the problem of scheduling the maximum number of potential participants for an activity while minimizing (or limiting) the impact on the quality of service (QoS) of the contact center. In some implementations, activities can be scheduled across different / multiple activity sessions, and therefore, a feasible solution to this problem is a set of activity sessions, such that each activity session is defined with a start time, a list of participants, and a facilitator. In other implementations, it should be understood that a particular activity session can self-guide without a facilitator.

[0109] Meeting sessions are scheduled when participants (i.e., contact center agents and facilitators) are available. It should be understood that participant availability may be provided or described in the form of one or more published schedules, by time periods, and / or in another suitable format. In exemplary implementations, activities are scheduled during working hours when availability is given in the published schedule. Depending on the specific implementation, portions of working hours may fall into one or more time categories / classifications. For example, in exemplary implementations, agent working hours may be classified as queuing time (where agents can use the time to handle interactions) or as shift activities such as breaks and meals. It should also be understood that various shift activities may be defined as interruptible or non-interruptable (e.g., time corresponding to agent leave requests), such that agents may be assigned to meeting sessions only when queuing or interruptible activities are available.

[0110] If agents are scheduled to participate in specific activities, as described above, the scheduling activity reduces the availability of agents to handle contact center interactions. Therefore, in an exemplary implementation, when calculating the impact of scheduling a meeting / session on the contact center's quality of service during the scheduled period, the calculation system uses the schedules and skill sets of all contact center agents (or a relevant subset of agents) who are capable of handling the interactions (not just those scheduled for the meeting session). In a typical multi-skilled contact center, various agents have different skill sets. Some agents may handle only a few types of interactions, while others (e.g., more experienced agents) may handle many types of interactions. Therefore, the impact on quality of service when agents are assigned to meetings / sessions depends not only on the agent's skill set and interaction workload, but also on the ability of other agents (e.g., unscheduled agents) to handle certain types of interactions. It should also be understood that, as described herein, the scheduling of activities can also be accomplished in light of various defined constraints (e.g., the number of participants per session, the number of sessions, session repetition, etc.).

[0111] It should be understood that planned / scheduled activities may include meetings (e.g., one-on-one, one-to-many, many-to-many, or all-person) and / or learning / coaching sessions for individual agents and / or agent groups. As described above, the computing system identifies planned activities and applies them to one or more schedules. Each planned activity may consist of one or more planned activity sessions, and each session may be facilitated (i.e., with a facilitator) or unfacilitated / self-guided (i.e., without a facilitator). It should be understood that facilitated sessions can only be planned if both participants and facilitators are available (e.g., during queuing times or during interruptible activities), and unfacilitated sessions can only be planned if participants are available (e.g., during queuing times or during interruptible activities).

[0112] In some implementations, seat participants may be selected from one or more predefined lists of potential participants. Furthermore, depending on the specific circumstances, facilitators may be seat facilitators (e.g., contact center agents who can also facilitate a particular session), supervisory facilitators (e.g., seat supervisors who can facilitate a particular session), and / or external facilitators (e.g., facilitators from outside the contact center). It should be understood that seat facilitators and supervisory facilitators may belong to a business unit, while external facilitators do not. Moreover, seat facilitators may contribute to coverage within the contact center (e.g., as members of relevant program groups), but supervisory facilitators and external facilitators do not affect coverage within the contact center (e.g., the contact center's ability to handle interactions).

[0113] Activity rules may include all the information needed to find planned activities. For example, in some implementations, activity rules may include the start time of schedulable sessions, session length, agents and their availability, facilitators and their availability, recurrence settings, group settings, and / or optimization objectives. Activity rule recurrence settings may include a count and data of the last occurrence of the rule (e.g., the last recurrence), the minimum time between occurrences, and when the recurrence ends. In some implementations, recurrence settings in activity rules may indicate that several planned activities (scheduled activity sessions) must be scheduled. For example, in some implementations, activity recurrence may be daily, weekly, or based on another time period. Thus, in an implementation with a weekly recurrence setting of four recurrences (e.g., up to four weeks), the computational system schedules four activities, where each activity represents one occurrence. Each of these occurrences may represent a list of sessions with a start time, facilitator, and participants. Group settings may include limitations or constraints applied to planned activities and sessions, such as the minimum number of participants that can be scheduled in a session, the maximum number of participants that can be scheduled in a session, the maximum number of sessions allowed based on the planned activities, the maximum number of concurrent sessions allowed based on the planned activities, and / or other group-related settings. Optimization objectives provide users with a way to express their preferences regarding the impact of allowed service levels when planning activities. For example, in an exemplary implementation, two distinct optimization objectives are supported: "Prioritize Service Levels" and "Prioritize All Participants." While both objectives attempt to schedule as many participants as possible (i.e., considering a specific optimization objective), the "Prioritize Service Levels" objective allows scheduling sessions only to the extent that it does not impair coverage beyond the minimum service level (e.g., by causing additional staffing shortages), while the "Prioritize All Participants" objective allows staffing shortages (e.g., up to a threshold percentage exceeding the minimum service level) to attempt to schedule all participants. It should be understood that the calculation system may use different optimization objectives and / or different numbers of optimization objectives depending on the specific implementation. Scheduling information can be used to determine agent and facilitator availability and to calculate the impact of activity planning on the contact center's service quality. Scheduling information may include management unit settings, agent capacity, agent queuing times, and agent interruptibility range.

[0114] Now for specific reference Figure 3 In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 300 for multi-objective scheduling optimization in a contact center. It should be understood that, unless otherwise stated, specific boxes of method 300 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0115] In various implementations, method 300 may take a list of rules as input and return a list of planned activities, where each planned activity has a list of sessions, and one planned activity per rule to be processed. Rules may be added to queues and processed sequentially, with key steps including, for example, queuing rules, scheduling rules, and updating rules. More specifically, the algorithm for processing rules may begin by queuing initial activity rules and selecting queued activities to be scheduled. In some implementations, the order in which queued activity rules are scheduled may be in descending order by maximum group size, then in descending order by maximum session count, and then in ascending order by candidate session count. The computation system schedules the rules to find the best (or most likely) session for that rule. The planned activities obtained through scheduling are stored, and the rules are updated. It should be understood that rules may be updated and queued when a rule's reproducibility setting requires it. As discussed above, a planned activity represents a session in which an activity occurs, and a reproducibility setting for a particular planned activity may require several occurrences. When no rules remain to be processed, the algorithm may terminate, and all planned activities may be returned by the computation system.

[0116] The exemplary method 300 begins at box 302, in which the computational system adds initial rules to a queue. For this purpose, in some embodiments, the computational system may perform the actions described below. Figure 4 Method 400. For example, the computing system can search for a feasible start window for each rule, and if a candidate time slot exists that can be used for that rule, then add the rule to the queue.

[0117] In box 304, the computing system determines whether the queue is empty or whether there are still rules to be scheduled on the queue. If the queue is empty, method 300 terminates. However, if there are still one or more rules to be scheduled on the queue, method 300 proceeds to box 306, where the computing system retrieves the next active rule from the queue. In box 308, the computing system schedules the active rule. As described herein, when scheduling active rules, the computing system can find the optimal session given a particular rule. For example, in some embodiments, after finding candidate time slots for a rule, candidate sessions can be computed, and an activity planning algorithm can be used to find the optimal assignment of agents to candidate sessions (e.g., to minimize the negative impact on contact center coverage). In exemplary embodiments, scheduling an activity can produce a list of scheduled sessions. It should be understood that the computing system can utilize any suitable scheduling algorithm and / or techniques comprised of the features described herein. For example, in some embodiments, the computing system can perform the actions described below. Figure 6 Method 600 uses a mixed-integer programming (MIP) model to schedule activity rules. In other implementations, the computing system may perform the operations described below. Figure 8Method 800 describes a method for scheduling activity rules using a heuristic approach. As described herein, in some implementations, the computing system may evaluate one or more characteristics to determine which scheduling algorithm to execute. For example, in some implementations, the computing system may choose the MIP model algorithm unless the problem is too large (e.g., the number of agents to be assigned, the number of candidate sessions, etc.), in which case the computing system may choose a heuristic approach to schedule the activity rules. In some implementations, the threshold number of agents used to select between MIP-based and heuristic-based scheduling is 6,000 agents. However, it should be understood that a different threshold number may be used in other implementations.

[0118] In box 310, the computing system saves the scheduling session to the computing system's data storage device. In box 312, the computing system updates the activity rules based on the scheduling of the activity rules. For example, in some embodiments, the activity rules may include reproducibility settings indicating that the rules should be executed periodically (e.g., daily, weekly, etc.), in which case the activity rules can be updated using the timestamp (or other marker) of the activity rule's most recent scheduling. In box 314, the updated activity rules may be added to a queue (or added back to a queue). In some embodiments, the activity rules may be added back to the queue later (e.g., after a time period expires). Method 300 returns to box 304, where the computing system determines whether the queue is empty.

[0119] Although blocks 302 to 314 are described in a relatively sequential manner, it should be understood that in some implementations, the blocks of method 300 may be executed in parallel.

[0120] Now for reference Figure 4 In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 400 for adding initial activity rules to a queue. It should be understood that, unless otherwise stated, specific boxes of method 400 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0121] The exemplary method 400 begins at box 402, where the computing system selects an active rule (e.g., from a list of input rules). In box 404, the computing system identifies feasible start windows for the active rule based on the rule's reproducibility settings. If the computing system determines in box 406 that at least one feasible start window for the active rule has been identified, method 400 proceeds to box 408, where the computing system generates candidate time slots for the active rule. For this purpose, the computing system may perform the actions described below. Figure 5Method 500. In some implementations, each candidate time slot in the candidate time slots represents a start time and a list of potential facilitators for which a session can be scheduled for a specific activity rule, and the candidate time slots are available for computation of candidate sessions. For example, suppose an activity rule with a candidate time slot starting at interval X has facilitator A and facilitator B. The candidate batch corresponds to two distinct candidate sessions; the two candidate sessions start simultaneously (at interval X) but have different facilitators (one candidate session is facilitator A, and the other candidate session is facilitator B). If the computation system determines in block 410 that a candidate time slot is available for the activity rule, method 400 proceeds to block 412, in which the computation system adds the activity rule to the queue.

[0122] Although blocks 402 to 412 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 400 may be executed in parallel.

[0123] Now for reference Figure 5 In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 500 for generating candidate time slots for activity rules. It should be understood that, unless otherwise stated, specific boxes of method 500 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0124] The exemplary method 500 begins at box 502, where the calculation system identifies one or more candidate time slot start times (e.g., from available availability). In box 504, the calculation system adds facilitators to candidate time slots based on the availability of each facilitator among the facilitators. For example, as described above, the same candidate time slot may consider multiple candidate sessions (e.g., the same candidate time slot time as a first candidate session with a first facilitator and a second candidate session with a second facilitator). In box 506, the calculation system adds potential agent participants to candidate time slots based on the availability of each agent among the agents. In some embodiments, in box 508, the calculation system may add additional candidate time slots for pre-existing sessions. In box 510, the calculation system removes candidate time slots with fewer potential participants than the minimum number of participants allowed by the activity rules (i.e., if the activity rules define a minimum number of participants).

[0125] Although blocks 502 to 510 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 500 may be executed in parallel.

[0126] Now for reference Figure 6In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 600 for scheduling activity rules using a mixed-integer programming (MIP) model. It should be understood that, unless otherwise stated, specific boxes of method 600 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0127] In the exemplary implementation, the MIP model optimally finds candidate sessions for an activity rule. Therefore, the model output is a planned activity. It should be understood that the MIP technique can use branching and pruning techniques to find the optimal solution, which enumerate the branches of the tree and prune them accordingly.

[0128] The exemplary method 600 begins at block 602, in which the computational system preprocesses various data used to solve the MIP model. It should be understood that the various data may be preprocessed and / or computed depending on the specific implementation. For example, in the exemplary implementation, the computational system performs... Figure 7 Method 700 is used to preprocess the data. Now refer to... Figure 7 In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 700 for preprocessing data for scheduling activity rules. It should be understood that, unless otherwise stated, specific boxes of method 700 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0129] The exemplary method 700 begins at block 702, where the computing system retrieves scheduling information for the contact center. As described above, the scheduling information may include management unit settings, agent capacity, agent queuing time, agent interruptibility range, and / or other relevant scheduling information. In block 704, the computing system uses the scheduling information to identify potential candidate sessions. In an exemplary implementation, each candidate session may be facilitated by only one facilitator, although some sessions (e.g., self-bootstrapping sessions) do not require a facilitator. In other implementations, the system may be designed such that multiple facilitators can be assigned to a particular candidate session (e.g., up to a maximum number of facilitators per session). Each candidate session may be tagged with or associated with a unique identifier, and indicators may be created for previously scheduled sessions, allowing a model (e.g., a MIP model) to distinguish sessions and know which sessions were previously scheduled.

[0130] In box 706, the calculation system estimates the contributions of agents and facilitators to scheduling groups. As described herein, this information helps in understanding the impact of assigning agents (and / or facilitators) to sessions to prevent staffing shortages from affecting service quality where possible. For example, the negative impact on staffing requirements may differ depending on whether a particular event / session is scheduled in the morning or the afternoon. A scheduling group defines the set of skills necessary to resolve queries belonging to that specific scheduling group; therefore, agents belonging to that specific scheduling group are capable of resolving queries categorized within that group. For example, scheduling groups may be associated with a set of skills, media type, language, and / or other characteristics (e.g., a scheduling group may be associated with inbound sales calls in Spanish). Therefore, it should be understood that a particular agent may be a member of multiple scheduling groups or assigned to multiple scheduling groups, depending on the agent's set of skills.

[0131] In block 708, the computing system computes or otherwise identifies concurrent sessions based on possible candidate sessions. In some implementations, the computing system or model (e.g., a MIP model) may limit the number of concurrent sessions to a predefined maximum. In block 710, the computing system computes or otherwise identifies incompatible sessions based on possible candidate sessions. It should be understood that incompatible sessions are those sessions that cannot all be scheduled because they are mutually exclusive. For example, a single facilitator cannot facilitate one candidate session in a specific time slot while simultaneously facilitating another candidate session in the same time slot; therefore, these candidate sessions are incompatible with each other. It should also be understood that additional and / or alternative criteria may exist for determining whether two candidate sessions are compatible or incompatible with each other. For example, in some implementations, the computing system or model (e.g., a MIP model) may require a break period after a specific facilitator (or agent) scheduled to a particular session can be assigned to a subsequent candidate session.

[0132] In box 712, the calculation system determines staffing redundancy by calculating or otherwise determining the minimum staffing requirements needed for each planning group across the scheduling window. It should be understood that this information helps in understanding how agents can be assigned to sessions without compromising service quality. As described herein, system administrators can establish minimum staffing requirements that performance should not fall below. For example, minimum staffing requirements may be associated with specific service levels, such as at least 80% of calls should be answered within 20 seconds, emails should be answered on average within 24 hours, or calls should be answered quickly enough that no more than 5% of calls are abandoned (e.g., hung up before being answered by an agent).

[0133] In box 714, the computing system extracts or otherwise determines an optimization objective associated with a particular activity rule from the activity rules. For example, as described above, in an exemplary implementation, each activity rule in the activity rules may be defined as having either a "prioritize all participants" optimization objective or a "prioritize service level" optimization objective. While both optimization objectives attempt to schedule as many participants as possible (i.e., considering a particular optimization objective), the "prioritize service level" objective may allow sessions to be scheduled only to the extent that coverage beyond the minimum service level is not compromised (e.g., by causing additional staffing shortages), while the "prioritize all participants" objective may allow staffing shortages (e.g., up to a threshold percentage exceeding the minimum service level) to attempt to schedule all participants. It should be understood that the computing system may use different optimization objectives and / or different numbers of optimization objectives depending on the specific implementation.

[0134] Although blocks 702 to 714 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 700 may be executed in parallel.

[0135] Return to reference Figure 6 In box 604, the computing system identifies or retrieves data associated with the MIP model. More specifically, in box 606, the computing system determines the relevant inputs, variables, and / or parameters for the MIP model. Furthermore, in box 608, the computing system determines the objectives to be used in the MIP model. In box 610, the computing system determines the constraints to be used in the MIP model.

[0136] In the exemplary implementation, it should be understood that the MIP model can utilize various symbols, sets, and abbreviations. Figure 9 Examples of symbols, sets, and abbreviations that can be used in conjunction with the MIP model described herein are illustrated. As described herein, a variety of decision variables, inputs, parameters, and expressions can be used. For example, in the exemplary implementation, decision variables include... (It is a binary variable used to indicate whether agent a is assigned to session s.) (It is a binary variable used to indicate whether seat a has not been assigned.) (It is a binary variable used to indicate whether session s is used.) (It is used to indicate how much service level continuous variable slack was violated by the planning group pg in session s) and (It is the size of the session). Additionally, in the exemplary implementation, the input includes... (As described above, the optimization objective should be "prioritizing service level" or "prioritizing all seats") (It is the smallest group size) (It is the largest group size) (It is the set of all candidate sessions) (It is a collection of all candidate agent sessions) (These are assignments from seat a to planning group pg, reduced in interval i) and (It is the FTE available at the minimum service level and can be obtained by converting the service level target to the minimum FTE.) In an exemplary implementation, the parameters include (It is the coefficient of relaxation cost) (It is a coefficient of unassigned costs) (It is a coefficient representing the cost of interrupted active sessions.) (It is the coefficient of the opened session) (It is the occupancy factor) and (It is the percentage of seats and sessions in the queue).

[0137] As described above, various expressions can be used. For example, expressions can include: , , , , , ,and

[0138] In the exemplary implementation, it should be understood that there are three main decisions in the MIP model: which agents are not assigned, which candidate sessions are scheduled, and which agents are assigned to each of the scheduled sessions. The MIP model generates, determines, or otherwise utilizes a set of variables for each of these decisions, which can be defined as binary decisions (e.g., assign / not assign, schedule / not schedule, etc.). Additionally, as described herein, the MIP model relies on another set of constraints to calculate staff shortages, and these continuous variables are available in the objective function.

[0139] In an exemplary implementation, the goal of the MIP model is to minimize the weighted sum of four distinct objectives: minimizing unassigned agents, minimizing staff shortages caused by scheduling sessions, minimizing interrupted active sessions, and minimizing the percentage of open sessions. More specifically, the computational system can minimize unassigned agents, for example, to encourage fairness among agents when assigning them to sessions (e.g., using the methods described above). The expression minimizes staffing shortages caused by scheduling sessions by minimizing the deviation between the minimum service level and the planned service level due to the introduced activity sessions (e.g., using the expression described above). The expression minimizes interrupted active sessions to minimize interruptions caused by overlap between agent active sessions and interruptible activities, and ensures smoother execution of active sessions (e.g., using the expression described above). (Expressions) and minimizing the percentage of open sessions to minimize the percentage of sessions successfully scheduled and assigned to agents and encouraging the maximization of available session utilization (e.g., using the expressions described above). (Expression). It should also be understood that the overall objective can be combined into a single objective function. For example, in the exemplary implementation, the objective function can be defined as:

[0140] As described above, optimization can occur given various constraints. In exemplary implementations, constraints include: an agent being assigned to or not assigned to a session; the number of agents in a scheduled session being at least the minimum group size; the number of agents in a scheduled session being at most the maximum group size; previously scheduled sessions being scheduled (i.e., not being scheduled by the algorithm); agent facilitators being scheduled when a session is scheduled; the number of scheduled sessions being at most the maximum total session count; the number of concurrent sessions being at most the maximum allowed number of concurrent sessions; the option to select only one session from any set of incompatible sessions; and calculating staff shortages due to session scheduling. The constraint of an agent being assigned to or not assigned to a session can be based on... The number of agents in a scheduling session is determined by a minimum group size constraint. The number of agents in a scheduling session is determined by the constraint of the maximum group size. This is determined by [the algorithm]. In the exemplary implementation, any previous scheduling that has violated the maximum group size is allowed, but additional participants cannot be assigned. The constraint that previously scheduled sessions cannot be scheduled (i.e., cannot be unscheduled by the algorithm) can be determined according to [the algorithm's rules]. This constraint, which requires that a facilitator be assigned to a session when the session needs one (e.g., a facilitator within the same business unit capable of handling tasks / interactions), ensures that the facilitator must be assigned to the session. This constraint can be determined based on... The scheduling session count must be determined based on the constraint that the maximum total session count limits the total number of sessions that can be scheduled. This constraint can be determined according to... This is determined by [the system's mechanism]. In some implementations, if the previously scheduled sessions (e.g., manually scheduled sessions) have already exceeded the limit, the MIP model may comply with this decision and ensure that the total number of sessions does not further exceed the specified limit. The constraint that the number of concurrent sessions is the maximum allowed number of concurrent sessions limits the number of concurrent sessions to less than or equal to the maximum allowed number of concurrent sessions. This constraint can be determined based on [the specific constraints]. This is determined by [the specific method / mechanism]. In some implementations, the MIP model may allow violations of this rule for previously scheduled sessions, as they were previously scheduled and this ensures no further violations of the specified maximum value are made. A constraint that allows only one session from any set of incompatible sessions to be selected enforces the mutual exclusion of selecting two incompatible sessions. This ensures that if two sessions are marked as incompatible with each other, only one of these sessions can be selected for scheduling. This constraint can be determined based on [the specific details / methods]. To determine this, the constraint on staffing shortages due to scheduling sessions is calculated, along with the impact of activity planning on service quality. Staffing shortages are not permitted when the optimization objective is set to "prioritize service level." However, when the optimization objective is set to "prioritize all participants," staffing shortages below the minimum staffing requirement are allowed, calculated by this set of constraints, and minimized by the objective function. This constraint can be determined based on... To determine.

[0141] In box 612, the computing system uses a MIP model to find the optimal solution for the schedule. For example, the computing system may execute the MIP algorithm based on a MIP model determined according to various inputs, variables, parameters, expressions, objectives, and constraints.

[0142] Although blocks 602 to 612 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 600 may be executed in parallel.

[0143] Now for reference Figure 8 In use, a computing system (e.g., contact center system 100, computing device 200, and / or other computing devices described herein) may execute method 800 for scheduling activity rules using a heuristic approach. It should be understood that, unless otherwise stated, specific boxes of method 800 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0144] In some implementations, a heuristic approach can be a variant of the next-fit algorithm. The heuristic algorithm can begin by assigning additional agents to pre-existing scheduled sessions. The heuristic then opens one session at a time and attempts to assign agents to that session. When it is no longer possible to assign additional agents, the heuristic opens another session. The activity plan may have constraints to consider when opening sessions and / or assigning agents to sessions. To satisfy these constraints, the remaining agents to be assigned and the remaining sessions to be opened can be periodically updated (i.e., agents and candidate sessions can be removed from the state eligible for assignment / selection for opening). The heuristic continues to open sessions and assign agents to them until no more sessions are found to open or the maximum number of sessions planned is reached.

[0145] The exemplary method 800 begins at block 802, in which the computing system adds agents to pre-existing scheduling sessions. It should be understood that pre-existing scheduling sessions can be provided as input to the heuristic, and in the exemplary implementation, pre-existing scheduling sessions cannot be eliminated or altered. However, additional agents can be assigned to those pre-existing scheduling sessions. Specifically, in the exemplary implementation, for each pre-existing scheduling session, agents (e.g., potential agent participants not yet assigned to any session) can be sorted in descending order according to their average number of sessions since the last scheduling, their queuing percentage, and the quality of service received in the case of assignment. For each agent in the sorted list, the computing system can determine whether the assignment is feasible, which may depend on the optimization objective. For example, as described above, if the optimization objective is “prioritize all participants,” then the assignment will be feasible; however, if the optimization objective is “prioritize service level,” then the assignment is considered infeasible if it would cause staff shortages.

[0146] In box 804, the calculation system identifies and selects sessions to open (e.g., from multiple candidate sessions, which may be identified in a manner similar to that described herein). In doing so, in box 806, the calculation system determines the percentage of agents available for each session, and in box 808, the calculation system determines staff surplus for the planned group. In an exemplary implementation, the heuristic keeps only one session open at a time. Open sessions are scheduled, and if no more agents are available to be assigned to a session or the session has reached its maximum group size, a new session is opened. To select sessions to open, the calculation system calculates two terms for each candidate session: the queuing percentage of agents available for the session and the sum of the remaining staff surplus for the planned group that can only be handled by the remaining agents. If the sum of the queuing percentages of agents available for the session is high, this indicates that the session does not overlap with agents' interruptible activities, and therefore it should be open. Similarly, if the remaining staff surplus for the planned group that can only be handled by the remaining agents is high, this indicates that agents can be assigned to the session without compromising contact center coverage. It should be understood that in some implementations, the computing system may additionally or alternatively evaluate one or more constraints described in the MIP model referenced above to determine whether a session can be opened. Furthermore, in some implementations, the computing system may rely on preprocessed data similar to that described in the MIP model referenced above.

[0147] It should also be understood that selecting which sessions to open can be computationally expensive, especially for exceptionally large scenarios with many candidate sessions. Therefore, in some implementations, a heuristic may include two subroutines for selecting sessions to open based on the number of candidate sessions. If the number of candidate sessions is less than a predefined threshold, the heuristic may sort all candidate sessions each time a session needs to be selected. However, when there are more candidate sessions than the predefined threshold, the heuristic may sort the candidate sessions only once and open them in that order. Furthermore, the heuristic may evaluate whether a session can be opened by checking whether the maximum concurrent sessions and the minimum transition time between transitions are observed. In block 810, the computational system opens the identified and selected sessions to be opened.

[0148] In box 812, the computing system assigns agents to newly opened sessions. For example, agents may be assigned to open sessions until an acceptable negative impact on coverage is met (or until the maximum session size is met). It should be understood that the computing system may assign agents to newly opened sessions according to the same prioritization described above for assigning pre-existing sessions (e.g., sorted in descending order by the average number of sessions since the last scheduling, queuing percentage, and quality of service obtained in the case of assignment). Furthermore, in some implementations, the number of agents assigned to a session must be greater than a predefined minimum group size. Therefore, if the number of agents is less than the minimum group size, in box 814, the computing system may reassign agents from other previously scheduled sessions to the newly opened session to meet the minimum group size. If the session cannot reach the minimum group size, the agents assigned to the session may be moved to the list of remaining agents to be assigned. The computing system updates the remaining agents and candidate sessions.

[0149] Throughout the heuristic, some agents may become unassignable, and some candidate sessions may become unopenable. For example, if no agent has a candidate session to attend, no agent may be assigned. Candidate sessions may not be opened because the maximum number of concurrent sessions overlapping with candidate sessions in the interval has been reached, or the minimum time between sessions has not been observed. Therefore, each time a session is scheduled and another session needs to be opened, the computational system removes unassignable agents and unselectable candidate sessions so that they are no longer evaluated in the heuristic.

[0150] In box 816, the computing system determines whether to open another session (e.g., after a session has ended). If yes, method 800 returns to box 804 to identify and select another session to open. If no, method 800 proceeds to box 818, where the computing system determines whether there are any unscheduled agents. If yes, method 800 proceeds to box 820, where the computing system attempts to assign the unscheduled agent to a session (e.g., without opening a new session). For example, the computing system attempts to assign additional agents to an already opened session without exceeding any limit on the maximum number of agents in the corresponding session.

[0151] Although blocks 802 to 820 are described in a relatively sequential manner, it should be understood that in some implementations, the blocks of method 800 may be executed in parallel. Figure 11 yes Figure 8 A simplified example of pseudocode for at least one implementation of a heuristic approach.

Claims

1. A method for multi-objective scheduling optimization in a contact center using a mixed-integer programming model, the method comprising: The mixed-integer programming model is determined by the computing system based on multiple constraints and multiple optimization objectives. The computing system receives activity rules from the rule queue of activity rules to be scheduled; as well as By finding the optimal solution to the mixed-integer programming problem generated based on the mixed-integer programming model and the activity rules, the computing system schedules multiple contact center agents to one or more active sessions based on the activity rules.

2. The method according to claim 1, further comprising: The computing system receives scheduling information for the contact center; The computing system uses the scheduling information to find possible candidate sessions; The computing system estimates the contribution of each of the plurality of contact center agents and facilitators to each of the plurality of planning groups in the contact center; The computing system identifies concurrent sessions based on the possible candidate sessions; The computing system identifies incompatible sessions based on the possible candidate sessions; as well as The calculation system determines overstaffing based on the minimum staffing requirements for each of the multiple planning groups in the contact center.

3. The method of claim 1, wherein the plurality of optimization objectives includes an optimization objective that minimizes unassigned contact center agents.

4. The method of claim 1, wherein the plurality of optimization objectives includes an optimization objective that minimizes staff shortages caused by scheduling the one or more activity sessions.

5. The method of claim 1, wherein the plurality of optimization objectives includes an optimization objective that minimizes interrupted active sessions.

6. The method of claim 1, wherein the plurality of optimization objectives includes a goal of minimizing the percentage of open sessions.

7. The method of claim 1, wherein the plurality of constraints includes the constraint that an agent must not be assigned or must be assigned to a session.

8. The method of claim 1, wherein the plurality of constraints includes at least one constraint that the number of contact center agents assigned to the scheduling session must be at least the minimum group size and not greater than the maximum group size.

9. The method of claim 1, wherein the plurality of constraints includes a constraint that a previously scheduled session cannot be unscheduled.

10. The method of claim 1, wherein the plurality of constraints includes a constraint that the total number of scheduled sessions is not greater than the maximum total session count.

11. The method of claim 1, wherein the plurality of constraints includes a constraint that the number of concurrent sessions must not exceed the maximum number of concurrent sessions.

12. The method of claim 1, wherein the plurality of constraints includes a constraint that only one of the two incompatible sessions can be scheduled.

13. The method of claim 1, wherein the plurality of constraints includes a constraint defining whether to permit staffing shortages below the minimum staffing requirements for the respective program group.

14. The method according to claim 1, further comprising: In response to scheduling the activity rule based on one or more reproducibility settings, the computing system updates the activity rule; as well as The computing system adds the updated activity rules to the rule queue.

15. The method of claim 1, further comprising the computing system adding an initial set of activity rules to the rule queue; and The receipt of the activity rule from the rule queue occurs after the initial set of the activity rules is added to the rule queue.

16. A computational system for performing multi-objective scheduling optimization in a contact center using a mixed-integer programming model, the system comprising: At least one processor; and At least one memory, the at least one memory including a plurality of instructions stored thereon, the plurality of instructions being responsive to execution by the at least one processor to cause the computing system to: The mixed-integer programming model is determined based on multiple constraints and multiple optimization objectives; Receive activity rules from the rule queue of the activity rules to be scheduled; as well as By finding the optimal solution to the mixed-integer programming problem generated based on the mixed-integer programming model and the activity rules, multiple contact center agents are scheduled to one or more active sessions based on the activity rules.

17. The computing system of claim 16, wherein the plurality of instructions further cause the computing system to: Receive scheduling information for the contact center; Based on the scheduling information, possible candidate sessions are identified; Estimate the contribution of each of the plurality of contact center agents and facilitators to each of the plurality of program groups in the contact center; Concurrent sessions are identified based on the possible candidate sessions; Incompatible sessions are identified based on the possible candidate sessions; as well as The minimum staffing requirements for each of the multiple planning groups in the contact center indicate a staff surplus.

18. The computing system of claim 16, wherein the plurality of optimization objectives includes: The primary optimization objective is to minimize the number of unassigned contact center agents. The second optimization objective is to minimize the staff shortage caused by scheduling the one or more activity sessions. The third optimization objective is to minimize the disruption of active sessions; and The fourth optimization objective is to minimize the percentage of open sessions.

19. The computing system of claim 16, wherein the plurality of constraints includes: Contact center agents must not be assigned or assigned to the first constraint of a session; The number of contact center agents assigned to a dispatch session must be at least the minimum group size, which is a second constraint. The number of contact center agents assigned to the scheduling session must not exceed the third constraint of the maximum group size; Previously scheduled sessions cannot be subject to unscheduled fourth constraints; The total number of scheduled sessions is not greater than the fifth constraint of the maximum total session count; The sixth constraint stipulates that the number of concurrent sessions must not exceed the maximum number of concurrent sessions. The seventh constraint that only one of two incompatible sessions can be scheduled; and Define the eighth constraint as to whether staff shortages below the minimum staffing requirements are permitted for the corresponding program group.

20. The computing system of claim 16, wherein the plurality of instructions further cause the computing system to: In response to scheduling the activity rule based on one or more reproduction settings of the activity rule, update the activity rule; and Add the updated activity rule to the rule queue.