Heuristic-based approach for multi-objective scheduling optimization in contact center

By optimizing contact center agent scheduling through a mixed integer programming model and heuristic methods, the problem of traditional scheduling technology being unable to balance service quality and cost is solved, and efficient resource allocation and improved service quality are achieved.

CN120604248APending Publication Date: 2025-09-05GENESIS CLOUD SERVICES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480009949.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-12-22
Filing Date
2024-12-16
Publication Date
2025-09-05

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, leading to improper staffing and wasted resources.

Method used

Using mixed integer programming models and heuristic methods, we optimize agent scheduling through a computational system, combining multiple constraints and optimization objectives to determine the optimal solution to schedule contact center agents, reduce unassigned, understaffed, and interrupted active sessions, and optimize agent resource allocation.

Benefits of technology

It achieves a balance between service quality and cost, reduces unassigned seats and resource waste, and improves the efficiency and service quality of the contact center.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120604248A_ABST
    Figure CN120604248A_ABST
Patent Text Reader

Abstract

A method for multi-objective scheduling optimization in a contact center using a heuristic-based approach according to an embodiment includes: adding, by a computing system, an assignable contact center agent to a pre-existing scheduling session; selecting, by the computing system, 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; opening, by the computing system, the selected session; and assigning, by the computing system, an unassigned contact center agent to the opened session, wherein at most one session of the plurality of candidate sessions is opened at a given time for assignment.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. patent application No. 18 / 395,468, filed with the U.S. Patent and Trademark Office on December 22, 2023, entitled "HEURISTIC-BASED APPROACH TO MULTI-OBJECTIVE SCHEDULE OPTIMIZATION IN CONTACT CENTERS." Background Art

[0003] Contact centers rely on agents to communicate with and respond to client inquiries. Contact center performance is often measured against two conflicting objectives: service quality and cost. Quality can be measured in terms of service level, average handle time, and abandonment rate. While contact center costs can arise from various sources, the most significant cost in a contact center is typically associated with staffing. Therefore, contact centers strive to schedule the right number of employees with the right skills at the right time to handle the interaction workload and meet relevant quality standards. Traditional scheduling technologies are insufficient to handle the complexity and scale of modern contact centers. Summary of the Invention

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

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

[0006] In some embodiments, the method may further include: receiving, by the computing system, scheduling information for the contact center; finding, by the computing system, possible candidate sessions based on the scheduling information; estimating, by the computing system, a contribution of each of the plurality of contact center agents and facilitators to each of a plurality of schedule groups of the contact center; identifying, by the computing system, concurrent sessions based on the possible candidate sessions; identifying, by the computing system, incompatible sessions based on the possible candidate sessions; and determining, by the computing system, an overstaffing condition with respect to a minimum staffing requirement for each of the plurality of schedule groups of the contact center.

[0007] In some embodiments, the plurality of optimization goals may include an optimization goal of minimizing unassigned contact center agents.

[0008] In some embodiments, the plurality of optimization objectives may include an optimization objective of minimizing understaffing caused by scheduling one or more activity sessions.

[0009] In some embodiments, the plurality of optimization goals may include an optimization goal of minimizing interrupted active sessions.

[0010] In some embodiments, the multiple optimization goals may include a goal to minimize the percentage of open sessions.

[0011] In some embodiments, the plurality of constraints may include a constraint that the agent must be unassigned or assigned to a session.

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

[0013] In some embodiments, the plurality of constraints may include a constraint that a previously scheduled session cannot be unscheduled.

[0014] In some embodiments, the plurality of constraints may include a constraint that the number of total sessions scheduled is no greater than a maximum total session count.

[0015] In some embodiments, the plurality of constraints may include a constraint that the number of concurrent sessions must be no greater than a maximum number of concurrent sessions.

[0016] In some embodiments, the plurality of constraints may include a constraint that only one of two incompatible sessions may be scheduled.

[0017] In some embodiments, the plurality of constraints may include a constraint defining whether understaffing below a minimum staffing requirement is permitted for the corresponding planning group.

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

[0019] In some embodiments, the method may further include adding, by the computing system, the initial set of active rules to the rule queue, and wherein receiving the active rules from the rule queue may occur after adding the initial set of active rules to the rule queue.

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

[0021] In some embodiments, the plurality of instructions may further cause the computing system to receive scheduling information for a contact center, find possible candidate sessions based on the scheduling information, estimate a contribution of each of a plurality of contact center agents and facilitators to each of a plurality of schedule groups for the contact center, identify concurrent sessions based on the possible candidate sessions, identify incompatible sessions based on the possible candidate sessions, and determine an overstaffing condition with respect to a minimum staffing requirement for each of the plurality of schedule groups for the contact center.

[0022] In some embodiments, the plurality of optimization goals may include a first optimization goal of minimizing unassigned contact center agents, a second optimization goal of minimizing understaffing caused by scheduling one or more active sessions, a third optimization goal of minimizing interrupted active sessions, and a fourth optimization goal of minimizing the percentage of open sessions.

[0023] In some embodiments, the plurality of constraints may include: a first constraint that a contact center agent must be either unassigned or assigned to a session; a second constraint that the number of contact center agents assigned to a scheduled session must be at least a minimum group size; a third constraint that the number of contact center agents assigned to a scheduled session must be no greater than a maximum group size; a fourth constraint that a previously scheduled session cannot be unscheduled; a fifth constraint that the number of total sessions scheduled is no greater than a maximum total session count; a sixth constraint that the number of concurrent sessions must be no greater than a 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 understaffing below the minimum staffing requirement for the corresponding plan group is permitted.

[0024] In some embodiments, the plurality of instructions may further cause the computing system to: schedule the activity rule in response to one or more recurrence settings based on the activity rule, update the activity rule; and add the updated activity rule to a rule queue.

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

[0026] In some embodiments, adding the assignable contact center agents to the pre-existing scheduled session may include sorting the assignable contact center agents in descending order according to at least one of a respective average number of sessions since the respective assignable contact center agents were last scheduled, a queue percentage of the respective assignable contact center agents, and a resulting quality of service of the contact center if the respective assignable contact center agents were assigned.

[0027] In some embodiments, adding the assignable contact center agent to the pre-existing scheduling session may further include assigning the assignable contact center agent according to the sorted descending order.

[0028] In some embodiments, selecting a session to open from the plurality of candidate sessions may include determining a respective percentage of contact center agents who are available to attend each of the plurality of candidate sessions.

[0029] In some embodiments, selecting a session to open from the plurality of candidate sessions may include determining an overstaffing condition with respect to a minimum staffing requirement for each of a plurality of schedule groups of contact centers that unassigned contact center agents can handle.

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

[0031] In some embodiments, assigning the unassigned contact center agents to the open sessions may include sorting the unassigned contact center agents in descending order by a respective average number of sessions since the respective unassigned contact center agents were last scheduled.

[0032] In some embodiments, assigning the unassigned contact center agents to the open session may include sorting the unassigned contact center agents in descending order according to queue percentages of the corresponding unassigned contact center agents.

[0033] In some embodiments, assigning the unassigned contact center agents to the opened sessions may include sorting the unassigned contact center agents in descending order according to the resulting quality of service of the contact center if the corresponding unassigned contact center agents were assigned.

[0034] In some embodiments, assigning unassigned contact center agents to the opened sessions may include assigning unassigned contact center agents to the opened sessions until an allowable negative impact on the contact center's coverage is satisfied.

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

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

[0037] In some embodiments, adding the assignable contact center agents to the pre-existing scheduled session may include sorting the assignable contact center agents in descending order according to at least one of a respective average number of sessions since the respective assignable contact center agents were last scheduled, a queue percentage of the respective assignable contact center agents, and a resulting quality of service of the contact center if the respective assignable contact center agents were assigned.

[0038] In some embodiments, adding the assignable contact center agent to the pre-existing scheduling session may further include assigning the assignable contact center agent according to the sorted descending order.

[0039] In some embodiments, selecting a session to open from the plurality of candidate sessions may include determining a respective percentage of contact center agents who are available to attend each of the plurality of candidate sessions.

[0040] In some embodiments, selecting a session to open from the plurality of candidate sessions may include determining an overstaffing condition with respect to a minimum staffing requirement for each of a plurality of schedule groups of contact centers that unassigned contact center agents can handle.

[0041] In some embodiments, the plurality of instructions may further 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 open session is not at least a minimum group size for the open session.

[0042] In some embodiments, assigning the unassigned contact center agents to the open sessions may include sorting the unassigned contact center agents in descending order by a respective average number of sessions since the respective unassigned contact center agents were last scheduled.

[0043] In some embodiments, assigning the unassigned contact center agents to the open session may include sorting the unassigned contact center agents in descending order according to queue percentages of the corresponding unassigned contact center agents.

[0044] In some embodiments, assigning the unassigned contact center agents to the opened sessions may include sorting the unassigned contact center agents in descending order according to the resulting quality of service of the contact center if the corresponding unassigned contact center agents were assigned.

[0045] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in limiting the scope of the claimed subject matter. Other embodiments, forms, features, and aspects of the present application will become apparent from the description and drawings provided herein. BRIEF DESCRIPTION OF THE DRAWINGS

[0046] The concepts described herein are illustrated in the accompanying drawings by way of example and not by way of limitation. For simplicity and clarity of illustration, the elements shown 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.

[0047] Figure 1 depicts a simplified block diagram of at least one embodiment of a contact center system;

[0048] Figure 2 is a simplified block diagram of at least one embodiment of a computing device;

[0049] Figure 3 is a simplified flow chart of at least one embodiment of a method for multi-objective scheduling optimization in a contact center;

[0050] Figure 4 is a simplified flow chart of at least one embodiment of a method for adding an initial active rule to a queue;

[0051] Figure 5 is a simplified flow chart of at least one embodiment of a method for generating candidate time slots for an active rule;

[0052] Figure 6 is a simplified flow chart of at least one embodiment of a method for scheduling activity rules using a mixed integer programming (MIP) model;

[0053] Figure 7 is a simplified flow chart of at least one embodiment of a method for pre-processing data for scheduling campaign rules;

[0054] Figure 8 is a simplified flow chart of at least one embodiment of a method for scheduling activity rules using a heuristic-based approach;

[0055] Figure 9 Illustrated waiting and Figure 6 Example abbreviations, symbols and / or assemblies used in conjunction with the MIP model;

[0056] Figure 10 Illustrated waiting and Figure 8 example abbreviations, symbols, and / or collections used in conjunction with the heuristic-based approach; and

[0057] Figure 11 yes Figure 8 A simplified example of pseudocode for at least one implementation of a heuristic-based approach. DETAILED DESCRIPTION

[0058] While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, it should be understood that there is no intention to limit the concepts of the present disclosure to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with this disclosure and the appended claims.

[0059] References in the specification to "one embodiment," "an embodiment," "an exemplary embodiment," etc., indicate that the embodiment being described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include the particular feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. It should also be understood that although reference to a "preferred" component or feature may indicate the desirability of a particular component or feature with respect to an embodiment, the present disclosure is not thereby limited with respect to other embodiments in which such component or feature may be omitted. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an embodiment, it is deemed to be within the knowledge of those skilled in the art to implement such feature, structure, or characteristic in conjunction with other embodiments, whether or not explicitly described. Furthermore, in various embodiments, the particular features, structures, or characteristics may be combined in any suitable combinations and / or subcombinations.

[0060] Additionally, it should be understood that items included in a list in the format “at least one of A, B, and C” can mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Similarly, items listed in the format “at least one of A, B, or C” can 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 to the contrary, and the use of phrases such as “at least a portion” and / or “a portion” should be construed to encompass both embodiments including only a portion of such elements and embodiments including the entire such elements, unless specifically stated to the contrary.

[0061] 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. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a machine-readable form (e.g., a volatile or non-volatile memory, a media disk, or other media device).

[0062] In the accompanying drawings, some structural or method features may be shown in a particular arrangement and / or ordering. However, it should be understood that such a particular arrangement and / or ordering may not be required. Instead, in some embodiments, unless otherwise indicated, such features may be arranged in a manner and / or order different from that shown in the illustrative figures. In addition, the inclusion of a structural or method feature in a particular figure does not imply that such feature is required in all embodiments, and in some embodiments, such feature may not be included or may be combined with other features.

[0063] Now refer to Figure 1 , shows 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 of the 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 a client device 102, a network 104, a switch / media gateway 106, a call controller 108, an interactive media response (IMR) server 110, a routing server 112, a storage device 114, a statistics server 116, an agent device 118A, an agent device 118B, an agent device 118C, a media server 120, a knowledge management server 122, a knowledge system 124, a chat server 126, a web server 128, an interaction (iXn) server 130, a general contact server 132, a reporting server 134, a media service server 136, and an analytics module 138. Although in Figure 1In the exemplary embodiment of FIG, 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 universal contact server 132, one reporting server 134, one media service server 136, and one media service server 137 are shown. The contact center system 100 may include one analysis module 138, but in other embodiments, the contact center system 100 may include multiple client devices 102, networks 104, switches / media gateways 106, call controllers 108, IMR servers 110, routing servers 112, storage devices 114, statistics servers 116, media servers 120, knowledge management servers 122, knowledge systems 124, chat servers 126, iXn servers 130, universal contact servers 132, reporting servers 134, media service servers 136, and / or analysis modules 138. Furthermore, in some embodiments, one or more of the components described herein may be excluded from the system 100, one or more of the components described as independent may form part of another component, and / or one or more of the components described as forming part of another component may be independent.

[0064] It should be understood that the term "contact center system" is used herein to refer to Figure 1 The systems and / or components thereof depicted herein are generally used to refer to contact center systems, the customer service providers that operate those systems, and / or the organizations or businesses associated therewith. Thus, unless expressly limited otherwise, the term "contact center" generally refers to contact center systems (such as contact center system 100), associated customer service providers (such as specific customer service providers / agents that provide customer service through contact center system 100), and the organizations or businesses on whose behalf those customer service are provided.

[0065] On the backend, customer service providers can provide a variety of services through contact centers. Such contact centers may be staffed with employees or customer service agents (or simply "agents"), where the agents act as intermediaries between companies, businesses, government agencies, or organizations (hereinafter interchangeably referred to as "organizations" or "businesses") and individuals such as users, individuals, or customers (hereinafter interchangeably referred to as "individuals," "customers," or "contact center clients"). For example, agents at a contact center may assist customers in making purchasing decisions, receiving orders, or resolving issues with products or services received. Within a contact center, such interactions between contact center agents and external entities or customers may occur over various communication channels, such as, for example, via voice (e.g., phone calls or Voice over IP (VoIP) calls), video (e.g., video conferencing), text (e.g., email and text chat), screen sharing, co-browsing, and / or other communication channels.

[0066] Contact centers generally strive to provide high-quality service to customers while minimizing costs. For example, one approach to contact center operations is to handle each customer interaction with a live agent. While this approach may rate well in terms of service quality, it can also be very expensive due to the high cost of agent labor. Consequently, most contact centers utilize some degree of automation in place of live agents, such as interactive voice response (IVR) systems, interactive media response (IMR) systems, internet robots or "bots," automated chat modules or "chatbots," and / or other automated processes. In many cases, this has proven to be a successful strategy, as automated processes can handle certain types of interactions very efficiently and effectively reduce the need for live agents. This type of automation allows contact centers to use human agents for more difficult customer interactions, while automated processes handle more repetitive or routine tasks. Furthermore, automated processes can be structured in a way that optimizes efficiency and promotes repeatability. While a human or live agent may forget to ask certain questions or follow up on specific details, such errors can often be avoided through the use of automated processes. While customer service providers are increasingly relying on automated processes to interact with customers, customer adoption of such technology remains significantly lower. Thus, while IVR systems, IMR systems, and / or bots are used to automate portions of the interaction on the contact center side of the interaction, actions on the customer side are still performed manually by the customer.

[0067] It should be understood that customer service providers can use the contact center system 100 to provide various types of services to customers. For example, the contact center system 100 can be used to participate in and manage the interactions of automated processes (or robots) or human agents with customer communications. It should be understood that the contact center system 100 can be an internal facility of a company or enterprise, used to perform sales and customer service functions with respect to products and services available through the enterprise. In another embodiment, the contact center system 100 can be operated by a third-party service provider contracted to provide services to another organization. Furthermore, the contact center system 100 can be deployed on equipment dedicated to the enterprise or third-party service provider, and / or 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). The contact center system 100 can include software applications or programs that can be executed on-site, remotely, or some combination thereof. It should also be understood that the various components of the contact center system 100 can be distributed across various geographic locations and are not necessarily contained in a single location or computing environment.

[0068] It should also be understood that, unless expressly limited otherwise, any of the computing elements of the present 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) that can be quickly configured via virtualization and published with minimal management effort or service provider interaction, and then scaled accordingly. Cloud computing can consist of various features (e.g., on-demand self-service, broad network access, resource pools, 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.). The cloud execution model is often referred to as a "serverless architecture," which typically includes a service provider that dynamically manages the allocation and configuration of remote servers to achieve the desired functionality.

[0069] It should be understood that relative to Figure 1 Any of the described computer-implemented components, modules, or servers may be accessed via one or more types of computing devices such as, for example, Figure 2As will be seen, the contact center system 100 generally 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 functions, emergency response, remote marketing, order taking, and / or other features.

[0070] A customer desiring to receive service from the contact center system 100 may initiate an inbound communication (eg, phone call, email, chat, etc.) to the contact center system 100 via the customer device 102. Figure 1 One such client device (i.e., client device 102) is shown, but it should be understood that there may be any number of client devices 102. Client device 102 may be, for example, a communication device such as a phone, smartphone, computer, tablet, or laptop. In accordance with the functionality described herein, a client may generally use client device 102 to initiate, manage, and conduct communications with contact center system 100, such as phone calls, emails, chats, text messages, web browsing sessions, and other multimedia transactions.

[0071] Inbound and outbound communications from and to client device 102 may traverse network 104, the nature of which generally depends on the type of client device used and the form of communication. For example, network 104 may include a communication network 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. In addition, network 104 may include a wireless carrier network including a code division multiple access (CDMA) network, a global system for mobile communications (GSM) network, or any wireless network / technology conventional in the art, including but not limited to 3G, 4G, LTE, 5G, etc.

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

[0073] As further shown, the switch / media gateway 106 can be coupled to a call controller 108, which serves as an adapter or interface between the switch and other routing, monitoring, and communication processing components of the contact center system 100, for example. The call controller 108 can be configured to handle PSTN calls, VoIP calls, and / or other types of calls. For example, the call controller 108 can include computer telephony integration (CTI) software for interfacing with the switch / media gateway and other components. The call controller 108 can include a Session Initiation Protocol (SIP) server for handling SIP calls. The call controller 108 can 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 when processing the interaction.

[0074] 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 the example of illustrative voice, IMR server 110 can be configured with an IMR script to inquire about the 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 the IMR server 110, the customer can receive service without having to speak to an agent. IMR server 110 can also be configured to determine the reason why the customer contacted the contact center so that the communication can be routed to the appropriate resource. IMR configuration can be performed using self-service and / or assisted service tools, including web-based tools for developing IVR applications and routing applications that run in a contact center environment.

[0075] Routing server 112 may be used to route incoming interactions. For example, once it is determined that an inbound communication should be handled by a live agent, functionality within routing server 112 may select the most appropriate agent and route the communication to that agent. This agent selection may be based on which available agent is best suited to handle the communication. More specifically, the selection of the appropriate agent may be based on a routing policy or algorithm implemented by routing server 112. In doing so, routing server 112 may query data related to the incoming interaction, such as data related to the specific customer, available agents, and the type of interaction, which data may be stored in a specific database, as described herein. Once an agent is selected, routing server 112 may 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 may be provided to the selected agent via their agent device 118. This information is intended to enhance the service the agent can provide to the customer.

[0076] It should be understood that the contact center system 100 may include one or more mass storage devices (generally represented by storage device 114) for storing data in one or more databases related to the functionality 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, disposition data, wait times, handle times, and actions taken by the contact center to resolve the customer's issue). 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 profiles, schedules, skills, handle 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 a customer and the contact center. More generally, it should be understood that, unless otherwise specified, storage device 114 can be configured to include a database and / or store data related to any of the information types described herein, wherein such database 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, a server or module of contact center system 100 can query such a database to retrieve data stored therein or send data thereto for storage. For example, storage device 114 can take the form of any conventional storage medium and can be installed locally or operated from a remote location. For example, the database can be a Cassandra database, a NoSQL database, or an SQL database, and managed by a database management system (such as Oracle, IBM DB2, Microsoft SQL Server, Microsoft Access, or PostgreSQL).

[0077] Statistics server 116 can be configured to record and aggregate data related to the performance and operational aspects of contact center system 100. Such 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 used to manage operational aspects of the contact center and perform automated actions in accordance with the functionality described herein. Such data can relate to the status of contact center resources, such as average wait time, abandonment rate, agent occupancy, and other data required for the functionality described herein.

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

[0079] The multimedia / social media server 120 may be configured to facilitate media interactions (other than voice) with the client device 102 and / or the server 128. Such media interactions may relate to, for example, email, voicemail, chat, video, text messaging, networking, social media, co-browsing, etc. The multimedia / social media server 120 may take the form of any IP router conventional in the art having specialized hardware and software for receiving, processing, and forwarding multimedia events and communications.

[0080] Knowledge management server 122 may be configured to facilitate interactions between clients and knowledge system 124. Generally speaking, 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 operated remotely 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 information sources such as encyclopedias, dictionaries, newswire articles, literary works, or other documents submitted to knowledge system 124 as reference material. For example, knowledge system 124 may be embodied as IBM Watson or a similar system.

[0081] The chat server 126 can be configured to conduct, orchestrate, and manage electronic chat communications with customers. Generally speaking, the chat server 126 is configured to implement and maintain chat sessions and generate chat transcripts. Such chat communications can be conducted by the chat server 126 in the manner of a customer communicating with an automated chatbot, a human agent, or both. In an exemplary embodiment, the chat server 126 can function as a chat orchestration server that schedules chat sessions between a chatbot and available human agents. In such cases, the processing logic of the chat server 126 can be rule-driven to utilize intelligent workload distribution among available chat resources. The chat server 126 can also implement, manage, and facilitate user interfaces (UIs) associated with chat features, including those generated at the client device 102 or the agent device 118. The chat server 126 can be configured to transfer chats between automated and human resources within a single chat session with a particular customer, such that, for example, a chat session is transferred from a chatbot to a human agent or vice versa. The chat server 126 may also be coupled to the knowledge management server 122 and the knowledge system 124 for receiving suggestions and answers to queries posed by customers during the chat, such that, for example, links to relevant articles may be provided.

[0082] A web server 128 may be included to host various social interaction sites (such as Facebook, Twitter, Instagram, etc.) to which customers subscribe. Although depicted as part of the contact center system 100, it should be understood that the web server 128 may be provided by a third party and / or maintained remotely. The web server 128 may also host a webpage for the business or organization being supported by the contact center system 100. For example, customers may browse a webpage and receive information about a particular business's products and services. Within such a business's webpage, mechanisms may be provided for initiating interactions with the contact center system 100, such as via web chat, voice, or email. An example of such a mechanism is a widget that can be deployed on a webpage or website hosted on the 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 can be overlaid on a webpage displayed to a customer via the internet. A widget may display information, such as in a window or text box, or include buttons or other controls that allow customers to access certain functions, such as sharing or opening files or initiating communications. In some implementations, a desktop widget includes a user interface component having a portable portion of code that can be installed and executed within a separate web page without requiring compilation. Some desktop widgets may include corresponding or additional user interfaces 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).

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

[0084] Universal Contact Server (UCS) 132 can be configured to retrieve information stored in a customer database and / or send information thereto for storage therein. For example, UCS 132 can be used as part of a chat feature to facilitate maintaining a history of how chats with particular customers 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 related to each customer's interaction history, such as, for example, data related to comments from agents, customer communication history, and the like. Each of these data types can then be stored in customer database 222 or on other modules and retrieved as needed for the functionality described herein.

[0085] The reporting server 134 can be configured to generate reports based on data compiled and summarized by the statistics server 116 or other sources. Such reports can include near-real-time reports or historical reports and relate to the status and performance characteristics of contact center resources, such as, for example, average wait time, abandonment rate, and / or agent occupancy rate. Reports can 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 in accordance with the functionality described herein.

[0086] The media services server 136 may be configured to provide audio and / or video services to support contact center features. Depending on the functionality described herein, such features may include prompts for IVR or IMR systems (e.g., playback of audio files), music on hold, voicemail / single-party recording, multi-party recording (e.g., multi-party 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 a coach to listen to interactions between a customer and an agent and enabling the coach to provide comments to the agent if the customer does not hear the comments), call analytics, keyword spotting, and / or other related features.

[0087] The analysis module 138 may be configured to provide systems and methods for performing analysis on data received from a plurality of different data sources, as may be required for the functionality described herein. According to an example embodiment, the analysis module 138 may also generate, update, train, and modify predictors or models based on the collected data (such as, for example, customer data, agent data, and interaction data). The model may include a behavioral model of a customer or agent. The behavioral model may be used to predict, for example, the behavior of a customer or agent in various situations, thereby allowing embodiments of the present invention to customize interactions or allocate resources to prepare for the predicted characteristics of 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 being part of the contact center, such behavioral models may also be implemented on customer systems (or, as also used herein, on the "customer side" of the interaction) and used for the benefit of the customer.

[0088] According to an exemplary embodiment, the analysis module 138 can access data stored in the storage device 114 (including the customer database and the agent database). The analysis module 138 can also access the interaction database, which stores data related to interactions and interaction content (e.g., transcriptions of detected interactions and events therein), interaction metadata (e.g., customer identifier, agent identifier, interaction medium, interaction duration, interaction start and end times, department, tagged categories), and application settings (e.g., the interaction path through the contact center). In addition, the analysis module 138 can be configured to retrieve data stored in the storage device 114 for use in developing and training algorithms and models, for example, by applying machine learning techniques.

[0089] One or more of the included models may be configured to predict customer or agent behavior and / or aspects related to contact center operations and performance. In addition, one or more of the models may be used for natural language processing and, for example, include intent recognition, etc. The model may be developed based on: known first principles equations describing the system; data that produces an empirical model; or a combination of known first principles equations and data. When developing models for use with embodiments of the present invention, since first principles formulas are often not available or easily derived, it may often be preferred to build an empirical model based on collected and stored data. In order to correctly capture the relationship between the manipulated / disturbance 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 may represent a curvilinear relationship between the manipulated / disturbance variables and the controlled variables rather than a straight line relationship, which is common for complex systems such as those discussed herein. In view of the foregoing requirements, methods based on machine learning or neural networks are preferred embodiments for implementing the model. For example, advanced regression algorithms may be used to develop a neural network based on empirical data.

[0090] The analysis module 138 may also include an optimizer. It will be appreciated that an optimizer may be used to minimize a "cost function" subject to a set of constraints, where the cost function is a mathematical representation of a desired objective or system operation. Since the model may be nonlinear, the optimizer may be a nonlinear programming optimizer. However, it is contemplated that the techniques described herein may be implemented using a variety of different types of optimization methods, alone or in combination, including but not limited to linear programming, quadratic programming, mixed integer nonlinear programming, randomized programming, global nonlinear programming, genetic algorithms, particle / swarm techniques, and the like.

[0091] According to some embodiments, the model and optimizer can be used together within an optimization system. For example, the analysis module 138 can utilize the optimization system as part of an optimization process by which aspects of contact center performance and operations are optimized or at least enhanced. For example, this can include features related to customer experience, agent experience, interaction routing, natural language processing, intent recognition, or other functions related to automated processes.

[0092] Figure 1 The various components, modules, and / or servers of the contact center system 100 (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 functions 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 particular server, those skilled in the art will recognize that the functionality of the various servers may be combined or integrated into a single server, or that the functionality of a particular server may be distributed across one or more other servers without departing from the scope of the present 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 phone calls (PSTN or VoIP calls), email, voicemail, video, chat, screen sharing, text messaging, social media messaging, WebRTC calls, etc. Access to and control of the components of the contact center system 100 may be effected through a user interface (UI) that may be generated on the client device 102 and / or agent device 118.

[0093] As already noted, in some embodiments, 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 of the contact center system 100 may be embodied as, include, or form a similar system to those described below with reference to Figure 2 The computing device 200 is described as being a portion of one or more computing devices.

[0094] Now refer to Figure 2 , a simplified block diagram of at least one embodiment of a computing device 200 is shown. The exemplary 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 simplicity of description, they may be collectively referred to interchangeably as computing devices, servers, or modules). For example, the various computing devices may be processes or threads running on one or more processors of one or more computing devices 200 that may execute computer program instructions and interact with other system modules to perform the various functions described herein. Unless expressly limited otherwise, the functions described with respect to multiple computing devices may be integrated into a single computing device, or the various functions described with respect to a single computing device may be distributed across several computing devices. In addition, with respect to the computing systems described herein (such as Figure 1 In some embodiments, the functionality provided by servers located on off-site computing devices may be accessed and provided via a virtual private network (VPN) as if such servers were on-site, or the functionality may be provided using Software as a Service (SaaS) (accessed over the Internet using various protocols), such as by exchanging data via Extensible Markup Language (XML) and JSON, and / or the functionality may be accessed / utilized in other ways.

[0095] In some embodiments, the computing device 200 may be embodied as a server, a desktop computer, a laptop computer, a tablet computer, a notebook computer, a netbook computer, an Ultrabook computer, or a laptop computer. TM , cellular telephones, 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 devices, processing devices and / or communication devices capable of performing the functions described herein.

[0096] 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 received from the external devices 210, for example, via the input / output device 204.

[0097] The input / output devices 204 allow the computing device 200 to communicate with external devices 210. For example, the input / output devices 204 may include a transceiver, a network adapter, a network card, an interface, one or more communication ports (e.g., a USB port, a serial port, a parallel port, an analog port, a digital port, VGA, DVI, HDMI, FireWire, CAT 5, or any other type of communication port or interface), and / or other communication circuitry. Depending on the particular computing device 200, the communication circuitry of the 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, Input / output devices 204 may include hardware, software, and / or firmware suitable for performing the techniques described herein.

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

[0099] The processing device 202 can be embodied as any type of processor capable of performing the functions described herein. In particular, the processing device 202 can be embodied as one or more single-core or multi-core processors, microcontrollers, or other processors or processing / control circuits. For example, in some embodiments, the 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. The processing device 202 can be a programmable type, a dedicated hard-wired state machine, or a combination thereof. In various embodiments, a processing device 202 with multiple processing units can utilize distributed, pipelined, and / or parallel processing. In addition, the processing device 202 can be dedicated to the execution of only the operations described herein, or can be utilized in one or more additional applications. In an exemplary embodiment, the processing device 202 is programmable and executes algorithms and / or processes data according to the operating logic 208, as defined by programming instructions (such as software or firmware) stored in the memory 206. Additionally or alternatively, the operating logic 208 for the processing device 202 may be at least partially defined by hardwired 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 desired output signals. Such components may include digital circuits, analog circuits, or a combination thereof.

[0100] The memory 206 may be one or more types of non-transitory computer-readable media, such as solid-state memory, electromagnetic memory, optical memory, or a combination thereof. Furthermore, the memory 206 may be volatile and / or non-volatile, and in some embodiments, some or all of the memory 206 may be of a portable type, such as a disk, tape, memory stick, cassette, and / or other suitable portable memory. In operation, the memory 206 may store various data and software used during operation of the computing device 200, such as an operating system, applications, programs, libraries, and drivers. It should be understood that in addition to or in lieu of storing programming instructions defining the operating logic 208, the memory 206 may store data manipulated by the operating logic 208 of the processing device 202, such as, for example, data representing signals received from and / or sent to the input / output device 204. As Figure 2 As shown, depending on the particular embodiment, memory 206 can be included with and / or coupled to processing device 202. For example, in some embodiments, processing device 202, memory 206, and / or other components of computing device 200 can form part of a system on a chip (SoC) and be incorporated onto a single integrated circuit chip.

[0101] In some embodiments, 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, a firmware device, communication links (i.e., point-to-point links, bus links, wires, cables, optical guides, printed circuit board traces, etc.), and / or other components and subsystems to facilitate input / output operations.

[0102] In other embodiments, the computing device 200 may include other or additional components, such as those commonly found 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 the computing device 200 described herein may be distributed across multiple computing devices. In other words, the techniques described herein may be employed by a computing system that includes one or more computing devices. Additionally, although Figure 2 2 , only a single processing device 202, I / O device 204, and memory 206 are illustratively shown, but 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 memories 206. Furthermore, in some embodiments, more than one external device 210 may be in communication with the computing device 200.

[0103] The computing device 200 can be one of a plurality of devices connected to other systems / sources via a network connection or via a network. The network can be embodied as any one or more types of communication networks that can facilitate communication between various devices connected via network communication. Therefore, the network can include one or more networks, routers, switches, access points, hubs, computers, client devices, terminals, nodes and / or other intermediate network devices. For example, the 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), self-organizing networks, short-range communication links or combinations thereof. In some embodiments, the network can include a circuit-switched voice or data network, a packet-switched voice or data network and / or any other network capable of carrying voice and / or data. In particular, in some embodiments, the network can include a network based on Internet Protocol (IP) and / or based on asynchronous transfer mode (ATM). In some embodiments, the network can handle voice traffic (e.g., via a Voice over IP (VOIP) network), web traffic and / or other network traffic depending on the specific implementation of the system and / or devices that communicate with each other. In various embodiments, the network may include analog or digital wired and wireless networks (e.g., IEEE 802.11 networks, public switched telephone networks (PSTN), integrated services digital networks (ISDN), and digital subscriber lines (xDSL)), third generation (3G) mobile telecommunication networks, fourth generation (4G) mobile telecommunication networks, fifth generation (5G) mobile telecommunication networks, wired Ethernet networks, private networks (e.g., such as 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 the various devices / systems may communicate with each other via different networks depending on the source and / or destination device.

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

[0105] Thus, 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 embodiment, the cloud-based system may be embodied as a server-obfuscated computing solution that, for example, executes multiple instructions on demand, contains logic to execute instructions only when prompted by specific activities / triggering events, and consumes no computing resources when not in use. That is, the system may be embodied as a virtual computing environment residing "on" a computing system (e.g., a distributed network of devices), wherein various virtual functions (e.g., Lambda Functions, Azure Functions, Google Cloud Functions, and / or other suitable virtual functions) may be executed corresponding to the functions of the system described herein. For example, when an event occurs (e.g., data is transferred to the system for processing), the virtual computing environment may be communicated with (e.g., via a request to an API of the virtual computing environment), whereby the API may route the request to the correct virtual function (e.g., a specific server-obfuscated computing resource) based on a set of rules. Thus, when a user makes a request for a data transfer (e.g., via an appropriate user interface to the system), the appropriate virtual function may be executed to perform an action before the instance of the virtual function is eliminated.

[0106] Figures 3 to 8Various methods associated with multi-objective scheduling optimization in a contact center are illustrated. As described above, a contact center addresses the challenging task of scheduling the right number of employees with the right skills at the right time to meet the expected interaction workload while also meeting quality of service metrics. It will be appreciated 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-on-one sessions, and all-staff sessions) in a contact center is a complex and time-consuming task, particularly in a contact center that supports 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.

[0107] It should be understood that activities scheduled by a computing system may include any action that would require the attention or presence (physical or virtual) of an agent, such that the agent would be unavailable to handle contact center interactions. Therefore, the scheduling of activities may negatively impact the quality of service of a contact center, particularly when scheduling large, public meetings (e.g., town hall meetings) with many attendees. Techniques described herein minimize and / or limit the negative impact of the scheduling of activities on the quality of service of 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.

[0108] Scheduling activities is also a computationally "hard" problem. As the problem size increases (e.g., with more potential agent attendees, more potential times to schedule meetings, and / or other variables), some optimization methods may become infeasible due to increased runtime and memory requirements. In other words, solving the scheduling problem may be so computationally complex that traditional computer-based, mathematically driven methods cannot solve the problem in a sufficiently short time to be a viable practical solution. It should be understood that the techniques described herein may even utilize multiple approaches (e.g., MIP-based models and heuristic approaches) to address the potential computational complexity of the scheduling problem. For example, in some embodiments, the computing system may utilize a MIP-based model approach unless one or more thresholds associated with scheduling complexity (e.g., the number of potential agent attendees, the number of potential scheduling slots, etc.) are exceeded, in which case the computing system may "fall back" to or otherwise utilize the heuristic approaches described herein. In some embodiments, a cloud-based constraint programming solver may be used to solve the MIP-based approach.

[0109] In an exemplary embodiment, a computing system solves the problem of scheduling an activity for a maximum number of potential attendees while minimizing (or limiting) the impact on the contact center's quality of service. In some embodiments, activities can be scheduled in different / multiple activity sessions, and therefore, a viable solution to this problem is a collection of activity sessions, each defined by a start time, a list of attendees, and a facilitator. In other embodiments, it should be understood that a particular activity session can be self-directed without a facilitator.

[0110] When attendees (i.e., contact center agents and facilitators) are available, conference sessions are scheduled. It will be appreciated that attendee availability may be provided or described in the form of one or more published schedules, in time periods, and / or in another suitable format. In an exemplary embodiment, activities are scheduled during business hours when availability is given in a published schedule. Depending on the particular embodiment, various portions of business hours may fall into one or more time categories / classifications. For example, in an exemplary embodiment, an agent's business hours may be categorized as on-queue time (where the agent is available to handle interactions) or as mid-shift activities such as breaks and meals. It will also be appreciated that various mid-shift activities may be defined as interruptible or non-interruptible (e.g., time corresponding to an agent's vacation request) such that an agent may be assigned to a conference session only when in-queue or interruptible activities are available.

[0111] If an agent is scheduled to participate in a specific activity, as described above, scheduling the activity reduces the agent's availability to handle contact center interactions. Therefore, in an exemplary embodiment, when calculating the impact that scheduling a meeting / session will have on the contact center's service quality during the scheduled period, the computing system uses the schedules and skill sets of all contact center agents (or a relevant subset of agents) who will contribute to handling interactions (not just those scheduled in the meeting session). In a typical multi-skilled contact center, various agents have different skill sets. Some agents may only handle a few types of interactions, while other agents (e.g., more experienced agents) may handle many types of interactions. Therefore, the impact on service quality when assigning an agent to a meeting / session 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, 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 recurrence, etc.).

[0112] It should be understood that planned / scheduled activities may include meetings (e.g., one-to-one, one-to-many, many-to-many, or all-staff) and / or learning / tutoring sessions for individual agents and / or groups of agents. As described above, the computing system finds 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 scheduled if both attendees and facilitators are available (e.g., during queue time or during an interruptible activity), and unfacilitated sessions can only be scheduled if attendees are available (e.g., during queue time or during an interruptible activity).

[0113] In some embodiments, an agent attendee can be selected from one or more predefined lists of potential attendees. Furthermore, depending on the particular situation, a facilitator can be an agent facilitator (e.g., a contact center agent who can also facilitate a particular session), an overseeing facilitator (e.g., an agent supervisor who can facilitate a particular session), and / or an external facilitator (e.g., a facilitator from outside the contact center). It should be understood that agent facilitators and overseeing facilitators can belong to a business unit, while external facilitators do not. Furthermore, agent facilitators can contribute to coverage in the contact center (e.g., as members of a related planning group), but overseeing facilitators and external facilitators do not affect coverage in the contact center (e.g., the contact center's ability to handle interactions).

[0114] Activity rules may include all the information needed to find a scheduled activity. For example, in some embodiments, activity rules may include the start time of a schedulable session, session length, agents and their availability, facilitators and their availability, recurrence settings, group settings, and / or optimization goals. 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 a recurrence ends. In some embodiments, recurrence settings in an activity rule may indicate that a number of scheduled activities (with scheduled activity sessions) must be scheduled. For example, in some embodiments, activity recurrences may be daily, weekly, or based on another time period. Thus, in an embodiment with a weekly recurrence setting that recurs four times (e.g., for four weeks), the computing system schedules four activities, each of which represents an occurrence. Each of these occurrences may represent a list of sessions with a start time, a facilitator, and participants. Group settings may include restrictions or constraints that apply to scheduled 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 per scheduled activity, the maximum number of concurrent sessions allowed per scheduled activity, and / or other group-related settings. Optimization goals can provide a way for users to provide preferences regarding the impact on service levels allowed when planning activities. For example, in an exemplary embodiment, two different optimization goals are supported: "Prioritize Service Level" and "Prioritize All Participants." While both optimization goals attempt to schedule as many participants as possible (i.e., given the specific optimization goal), the "Prioritize Service Level" goal can allow sessions to be scheduled only to the extent that coverage above a minimum service level is not compromised (e.g., by incurring additional understaffing), while the "Prioritize All Participants" goal can allow understaffing (e.g., up to a threshold percentage above the minimum service level) in an effort to schedule all participants. It should be understood that the computing system can use different optimization goals and / or a different number of optimization goals depending on the specific embodiment. Scheduling information can be used to understand the availability of agents and facilitators and to calculate the impact of activity plans on the contact center's service quality. Scheduling information can include administrative unit settings, agent capacity, agent queue time, and agent interruptibility range.

[0115] Now 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 noted, specific blocks of method 300 are illustrated by way of example, and such blocks may be combined or divided, added or removed, and / or reordered in whole or in part depending on the particular implementation.

[0116] In various embodiments, 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 there is one planned activity for each processed rule. Rules can be added to a queue and processed sequentially, with the primary steps being, for example, queuing the rules, scheduling the rules, and updating the rules. More specifically, the algorithm for processing the rules may begin by queuing initial activity rules and selecting a queued activity to schedule. In some embodiments, the order in which the 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 computing system schedules the rules to find the best (or most likely) session for the rule. The planned activities obtained through scheduling are stored and the rules are updated. It should be understood that rules can be updated and queued when the recurrence setting of the rule requires it. As discussed above, a planned activity represents a session in which an activity occurs, and the recurrence setting of a particular planned activity may require several occurrences. When there are no remaining rules to process, the algorithm may terminate, and all planned activities may be returned by the computing system.

[0117] The exemplary method 300 begins at block 302 where the computing system adds an initial rule to a queue. To this end, in some embodiments, the computing system may execute the following Figure 4 Method 400. For example, the computing system may find a feasible starting window for each rule and add the rule to a queue if there is a candidate time slot available for the rule.

[0118] 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, the method 300 terminates. However, if there are still one or more rules to be scheduled on the queue, the method 300 proceeds to box 306, in which 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 an active rule, the computing system may look for the best session given a particular rule. For example, in some embodiments, after finding candidate time slots for a rule, candidate sessions may be calculated, and an activity planning algorithm may be used to find the optimal assignment of agents to candidate sessions (e.g., to minimize the negative impact on contact center coverage). In an exemplary embodiment, the scheduling of an activity may produce a list of scheduled sessions. It should be understood that the computing system may utilize any suitable scheduling algorithm and / or technology consisting of the features described herein. For example, in some embodiments, the computing system may perform the following described Figure 6 Method 600 of using a mixed integer programming (MIP) model to schedule activity rules. In other embodiments, the computing system may execute the following Figure 8Method 800 of the embodiment of the present invention is used to schedule activity rules using a heuristic-based approach. As described herein, in some embodiments, the computing system may evaluate one or more characteristics to determine which scheduling algorithm to execute. For example, in some embodiments, the computing system may select a MIP model algorithm unless the problem size 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 select a heuristic approach to schedule activity rules. In some embodiments, the threshold number of agents for selecting a MIP-based or heuristic-based approach for scheduling is 6,000 agent participants. However, it should be understood that another threshold number may be used in other embodiments.

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

[0120] Although blocks 302 through 314 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 300 may be performed in parallel.

[0121] Now refer to 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 an initial activity rule to a queue. It should be understood that, unless otherwise noted, specific blocks of method 400 are shown by way of example, and such blocks may be combined or divided, added or removed, and / or reordered, in whole or in part, depending on the particular implementation.

[0122] The exemplary method 400 begins at block 402, where the computing system selects an active rule (e.g., from a list of input rules). At block 404, the computing system identifies feasible start windows for the active rule based on the recurrence settings of the rule. If the computing system determines at block 406 that at least one feasible start window for the active rule has been identified, the method 400 proceeds to block 408, where the computing system generates candidate time slots for the active rule. To this end, the computing system may perform the following steps: Figure 5Method 500 of FIG. 410 . In some embodiments, each of the candidate time slots represents a start time and a list of potential facilitators that can schedule a session for a particular activity rule, and the candidate time slots can be used to compute candidate sessions. For example, assume an activity rule with a candidate time slot that starts at interval X has facilitators A and facilitator B. The candidate batch corresponds to two different candidate sessions; both candidate sessions start at the same time (interval X) but have different facilitators (one candidate session is facilitator A and the other candidate session is facilitator B). If the computing system determines in block 410 that a candidate time slot is available for the activity rule, the method 400 proceeds to block 412 , where the computing system adds the activity rule to a queue.

[0123] Although blocks 402 through 412 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 400 may be performed in parallel.

[0124] Now refer to 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 an activity rule. It should be understood that, unless otherwise noted, specific blocks of method 500 are illustrated by way of example, and such blocks may be combined or divided, added or removed, and / or reordered in whole or in part depending on the particular implementation.

[0125] The illustrative method 500 begins at block 502, where the computing system identifies one or more candidate time slot start times (e.g., from provided availability). In block 504, the computing system adds facilitators to the candidate time slots based on the availability of each of 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 block 506, the computing system adds potential agent attendees to the candidate time slot based on the availability of each of the agents. In some embodiments, in block 508, the computing system may add additional candidate time slots for pre-existing sessions. In block 510, the computing system removes candidate time slots that have fewer potential attendees than the minimum number of attendees allowed by the activity rules (i.e., if the activity rules define a minimum number of attendees).

[0126] Although blocks 502 through 510 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 500 may be performed in parallel.

[0127] Now refer to 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 noted, specific blocks of method 600 are illustrated by way of example, and such blocks may be combined or divided, added or removed, and / or reordered in whole or in part according to a particular embodiment.

[0128] In the exemplary embodiment, the MIP model optimally finds a candidate session for an activity rule. Thus, the model output is a planned activity. It should be understood that the MIP technique can use a branch and cut technique to find the optimal solution, which enumerates the branches of the tree and prunes them accordingly.

[0129] The exemplary method 600 begins at block 602 where the computing system preprocesses various data used to solve the MIP model. It should be understood that the various data may be preprocessed and / or computed according to a particular embodiment. For example, in the exemplary embodiment, the computing system executes Figure 7 The method 700 is used to pre-process the data. 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 campaign rules. It should be understood that, unless otherwise noted, the specific blocks of method 700 are illustrated by way of example, and such blocks may be combined or divided, added or removed, and / or reordered in whole or in part depending on the particular embodiment.

[0130] The exemplary method 700 begins at block 702, where the computing system retrieves scheduling information for a contact center. As described above, the scheduling information may include administrative unit settings, agent capabilities, agent queue times, agent interruptibility ranges, and / or other relevant scheduling information. In block 704, the computing system searches for possible candidate sessions based on the scheduling information. In an exemplary embodiment, each candidate session may be facilitated by only up to one facilitator, although some sessions (e.g., self-guided sessions) do not require a facilitator. In other embodiments, the system may be designed so that multiple facilitators can be assigned to a particular candidate session (e.g., up to a maximum number of facilitators per session). Each of the candidate sessions may be tagged with or associated with a unique identifier, and an indicator may be provided for previously scheduled sessions so that a model (e.g., a MIP model) can distinguish between sessions and know to schedule previously scheduled sessions.

[0131] In box 706, the computing system estimates the contributions of the agents and facilitators to the plan group. As described herein, such information helps to understand the impact of assigning agents (and / or facilitators) to sessions to prevent understaffing on service quality when possible. For example, if a particular activity / session is scheduled in the morning, the negative impact on staffing requirements may be different from scheduling the same activity / session in the afternoon. A plan group defines the skill set necessary to resolve queries belonging to that particular plan group, so agents belonging to a particular plan group are able to resolve queries classified in that plan group. For example, a plan group can be associated with a skill set, media type, language, and / or other characteristics (e.g., a plan group can be associated with inbound sales calls in Spanish). Therefore, it should be understood that a particular agent can be a member of or assigned to multiple plan groups, depending on the agent's skill set.

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

[0133] In block 712, the computing system calculates or otherwise determines overstaffing with respect to the minimum staffing requirements required for each plan group across the scheduling window. It will be appreciated that such information is helpful in understanding how agents can be assigned to sessions without compromising quality of service. As described herein, a system administrator can establish minimum staffing requirements below which performance should not be lowered. For example, minimum staffing requirements can be associated with specific service levels, such as that at least 80% of calls should be answered within 20 seconds, that emails should be answered within an average of 24 hours, or that calls should be answered quickly enough so that no more than 5% of calls are abandoned (e.g., hung up before being answered by an agent).

[0134] In block 714, the computing system extracts or otherwise determines an optimization goal associated with the particular campaign rule from the campaign rules. For example, as described above, in the exemplary embodiment, each of the campaign rules may define the campaign rule as having a "prioritize all participants" optimization goal or a "prioritize service level" optimization goal. While both optimization goals attempt to schedule as many participants as possible (i.e., given the particular optimization goal), the "prioritize service level" goal may allow sessions to be scheduled only to the extent that coverage beyond a minimum service level is not compromised (e.g., by incurring additional understaffing), whereas the "prioritize all participants" goal may allow understaffing (e.g., up to a threshold percentage above the minimum service level) in an effort to schedule all participants. It should be understood that the computing system may use different optimization goals and / or a different number of optimization goals depending on the particular embodiment.

[0135] Although blocks 702 through 714 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 700 may be performed in parallel.

[0136] Return Reference Figure 6 In block 604, the computing system determines or retrieves data associated with the MIP model. More specifically, in block 606, the computing system determines relevant inputs, variables, and / or parameters for the MIP model. Furthermore, in block 608, the computing system determines a goal to be used for the MIP model. In block 610, the computing system determines constraints to be used for the MIP model.

[0137] In the exemplary embodiment, it should be understood that the MIP model may 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, various decision variables, inputs, parameters, and expressions can be used. For example, in an exemplary embodiment, the decision variables include X a,s ∈B (which is a binary variable indicating whether agent a is assigned to session s), U a ∈B (a binary variable indicating whether agent a is unassigned), Y s ∈B (which is a binary variable indicating whether session s is used), (which is a continuous variable slack representing how much service level the plan group pg violates in session s) and groupSize s(which is the size of session s). Additionally, in the exemplary embodiment, the inputs include ObjectiveMode∈[FavorSL,FavorAllAgents] (which, as described above, indicates whether the optimization goal should be "favor service level" or "favor all agents"), GroupMin∈Z + (which is the minimum group size), GroupMax∈Z + (which is the maximum group size), S (which is the set of all candidate sessions), S a (which is the set of all agent candidate sessions), μ [a,pg,i] (these are reduced assignments from agent a to planning group pg with interval i) and (It is the FTE available at the minimum service level and can be obtained by converting the service level objective into the minimum FTE.) In an exemplary embodiment, the parameters include slackCostCoefficient (which is a coefficient for slack cost), unassignedCostCoefficient (which is a coefficient for unassigned cost), interruptedCostCoefficient (which is a coefficient for interrupted active session cost), sessionsOpenedCostCoefficient (which is a coefficient for opened sessions), (which is the occupancy factor) and onQ a,s (which is the queue percentage for agent s and session s).

[0138] As described above, various expressions can be used. For example, an expression may include:

[0139]

[0140] and

[0141]

[0142] In the exemplary embodiment, it should be understood that there are three main decisions in the MIP model: which agents are unassigned, 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., assigned / unassigned, scheduled / unscheduled, etc.). Additionally, as described herein, the MIP model relies on another set of constraints to calculate understaffing, and these continuous variables can be used in the objective function.

[0143] In an exemplary embodiment, the goal of the MIP model is to minimize the weighted sum of four different objectives (minimizing unassigned agents, minimizing understaffing caused by scheduling sessions, minimizing interrupted active sessions, and minimizing the percentage of open sessions). More specifically, the computing system may minimize unassigned agents, for example, to encourage fairness among agents when scheduling assignments of agents to sessions (e.g., using the UnassignedCost expression described above), minimize understaffing caused by scheduling sessions by minimizing the deviation between the planned service level and the minimum service level due to introduced active sessions (e.g., using the slackCost expression described above), minimize interrupted active sessions to minimize interruptions caused by overlapping of an agent's active sessions with interruptible activities and ensure smoother execution of active sessions (e.g., using the InterruptedActCost expression described above), and minimize the percentage of open sessions to minimize the percentage of sessions successfully scheduled and assigned to agents and encourage maximizing utilization of available sessions (e.g., using the sessionsOpenedCost expression described above). It should also be understood that the overall objectives may be combined into a single objective function. For example, in an exemplary embodiment, the objective function may be defined as:

[0144]

[0145] As described above, optimization may occur in light of various constraints. In an exemplary embodiment, the constraints include agents being assigned 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 able to be scheduled by the algorithm), an agent facilitator must be scheduled if a session is scheduled, the scheduled session count must be at most the maximum total session count, the number of concurrent sessions is at most the maximum allowable number of concurrent sessions, only one session from any set of incompatible session sets may be selected, and understaffing due to scheduling sessions is calculated. The constraints on agents being assigned or not assigned to a session may be based on The number of agents in a scheduled session is at least the minimum group size constraint can be determined based on The number of agents in a scheduled session is at most the maximum group size constraint which can be determined based on In an exemplary embodiment, any previously scheduled session that has violated the maximum group size may be allowed, but no additional participants may be assigned. The constraint that previously scheduled sessions are scheduled (i.e., cannot be unscheduled by the algorithm) may be based on The constraint that an agent facilitator must be scheduled if a session is scheduled ensures that if a session requires an agent facilitator (e.g., a facilitator in the same business unit and capable of handling the work / interaction), the facilitator must be assigned to the session. This constraint can be based on The constraint that the scheduled session count must be at most the maximum total session count limits the total number of sessions that can be scheduled. This constraint can be based on In some embodiments, if previously scheduled sessions (e.g., manually scheduled sessions) have exceeded the limit, the MIP model may adhere to 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 at most the maximum allowable number of concurrent sessions limits the number of concurrent sessions to be less than or equal to the maximum allowable concurrent sessions. This constraint may be based on

[0146] In some embodiments, the MIP model may allow violations of this for previously scheduled sessions because they were previously scheduled and ensure that the specified maximum is not violated further. The constraint that only one session from any set of incompatible sessions may be selected enforces mutual exclusivity in selecting two incompatible sessions. It ensures that if two sessions are marked as incompatible with each other, only one of these sessions may be selected for scheduling. This constraint may be based on The constraint for calculating understaffing due to scheduling sessions calculates the impact on service quality caused by the activity plan. When the optimization is set to "prioritize service level", understaffing is not allowed. However, when the optimization objective is set to "prioritize all participants", understaffing below the minimum staffing requirement is allowed, calculated by this set of constraints and minimized by the objective function. The constraint can be calculated according to to confirm.

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

[0148] Although blocks 602 through 612 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 600 may be performed in parallel.

[0149] Now refer to Figure 8In 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 campaign rules using a heuristic-based approach. It should be understood that, unless otherwise noted, the specific blocks of method 800 are illustrated by way of example, and such blocks may be combined or divided, added or removed, and / or reordered in whole or in part depending on the particular embodiment.

[0150] In some embodiments, a heuristic-based approach can be a variation of the next-fit algorithm. The heuristic algorithm can begin by assigning additional agents to pre-existing scheduled sessions. The heuristic method 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 method opens another session. The active plan may have constraints to be considered when opening sessions and / or assigning agents to sessions. To meet 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 of being eligible for assignment / selected to be opened). The heuristic continues to open sessions and assign agents to them until no sessions are found to be open or the maximum number of scheduled sessions is reached.

[0151] The exemplary method 800 begins at block 802, where the computing system adds agents to pre-existing scheduled sessions. It should be understood that pre-existing scheduled sessions can be provided as input to the heuristics, and in the exemplary embodiment, pre-existing scheduled sessions cannot be eliminated or altered. However, additional agents can be assigned to those pre-existing scheduled sessions. Specifically, in the exemplary embodiment, for each pre-existing scheduled session, assignable agents (e.g., potential attendees who have not yet been assigned to any session) are sorted in descending order based on their average number of sessions since their last scheduling, queue percentage, and quality of service received if assigned. For each agent in the sorted list, the computing system determines whether the assignment is feasible, which may depend on the optimization goal. For example, as described above, if the optimization goal is "prioritize all attendees," then the assignment will be feasible; however, if the optimization goal is "prioritize service level," then the assignment will be considered infeasible if the assignment would result in understaffing.

[0152] In block 804, the computing system identifies and selects a session to open (e.g., from a plurality of candidate sessions, which may be identified in a manner similar to that described herein). In doing so, in block 806, the computing system may determine the percentage of agents available to attend each session, and in block 808, the computing system may determine the overstaffing for the scheduled group. In the exemplary embodiment, a heuristic keeps only one session open at a time. The schedule opens the session, and if there are no more agents to assign to the session or the session has reached the maximum group size, a new session is opened. To select a session to open, the computing system calculates two terms for each candidate session: the sum of the queued percentage of agents available to attend the session and the remaining overstaffing for the scheduled group that can be handled by only the remaining agents. If the sum of the queued percentages of agents available to attend the session is high, this indicates that the session does not overlap with an agent's interruptible activity and therefore should be opened. Similarly, if the remaining overstaffing for the scheduled group that can be handled by only the remaining agents is high, this indicates that an agent can be assigned to the session without compromising contact center coverage. It should be understood that in some embodiments, the computing system may additionally or alternatively evaluate one or more constraints described above with reference to the MIP model to determine whether a session can be opened. Furthermore, in some embodiments, the computing system may rely on pre-processed data similar to that described above with reference to the MIP model.

[0153] It should also be understood that selecting a session to open can be computationally expensive, especially for unusually large cases where there are many candidate sessions. Therefore, in some embodiments, the heuristic may include two subroutines for selecting a session to open based on the number of candidate sessions. If the number of candidate sessions is less than some predefined threshold, the heuristic may sort all candidate sessions each time a session to open 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 may open the sessions in that order. In addition, the heuristic may evaluate whether a session can be opened by checking whether a maximum concurrent sessions and a minimum transition time between transitions are adhered to. In block 810, the computing system opens the session identified and selected to open.

[0154] In block 812, the computing system assigns agents to the newly opened session. For example, agents may be assigned to open sessions until the permissible 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 the newly opened session according to the same prioritization described above with respect to assignments to pre-existing sessions (e.g., sorted in descending order by the average number of sessions since last scheduling, queue percentage, and quality of service achieved in the event of an assignment). Furthermore, in some embodiments, 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 block 814, the computing system may reassign agents from other previously scheduled sessions to the newly opened session so that the minimum group size is met. If the session cannot reach the minimum group size, the agents assigned to the session may be moved to a list of remaining agents to be assigned. The computing system updates the remaining agents and candidate sessions.

[0155] Throughout the heuristic, some agents may not be assigned, and some candidate sessions may no longer be opened. For example, if there are no candidate sessions for the agent to join, then the agent may not be assigned. A candidate session may not be opened because the maximum number of concurrent sessions in the interval that overlaps with the candidate session 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 computing system removes agents that cannot be assigned and candidate sessions that cannot be selected so that they are no longer evaluated in the heuristic.

[0156] In block 816, the computing system determines whether to open another session (e.g., after the session is complete). If so, method 800 returns to block 804 to identify and select another session to open. If not, method 800 proceeds to block 818, where the computing system determines whether there are unscheduled agents. If so, method 800 proceeds to block 820, where the computing system attempts to assign the unscheduled agents to the session (e.g., without opening a new session). For example, the computing system may attempt to assign additional agents to an already open session without exceeding any limit on the maximum number of agents in the corresponding session.

[0157] Although blocks 802 through 820 are described in a relatively serial manner, it should be understood that in some embodiments, the various blocks of method 800 may be performed in parallel. Figure 11 yes Figure 8 A simplified example of pseudocode for at least one implementation of a heuristic-based approach.

Claims

1. A method for multi-objective scheduling optimization in a contact center using a heuristic-based approach, the method comprising: adding, by a computing system, an assignable contact center agent to a pre-existing scheduling session; selecting, by the computing system, a session to be opened from a plurality of candidate sessions in response to adding the assignable contact center agent to the pre-existing scheduled session; opening, by the computing system, the selected session; as well as An unassigned contact center agent is assigned, by the computing system, to an open session, wherein at most one session of the plurality of candidate sessions is open for assignment at a given time.

2. The method of claim 1 , wherein adding the assignable contact center agents to the pre-existing scheduled session comprises sorting the assignable contact center agents in descending order according to at least one of a respective average number of sessions since the respective assignable contact center agents were last scheduled, a queue percentage of the respective assignable contact center agents, and a resulting quality of service of the contact center if the respective assignable contact center agents were assigned. 3 . The method of claim 2 , wherein adding the assignable contact center agent to the pre-existing scheduling session further comprises assigning the assignable contact center agent according to the sorted descending order. 4 . The method of claim 1 , wherein selecting the session to open from the plurality of candidate sessions comprises determining a respective percentage of contact center agents available to attend each of the plurality of candidate sessions.

5. The method of claim 1 , wherein selecting the session to open from the plurality of candidate sessions comprises determining an overstaffing condition with respect to a minimum staffing requirement for each of a plurality of schedule groups of the contact center that the unassigned contact center agents are able to handle.

6. The method of claim 1 , further comprising reassigning, by the computing system, at least one contact center agent assigned to another session in response to determining that the number of contact center agents assigned to the open session is not at least a minimum group size for the open session.

7. The method of claim 1 , wherein assigning the unassigned contact center agents to the open sessions comprises sorting the unassigned contact center agents in descending order according to a respective average number of sessions since the respective unassigned contact center agents were last scheduled.

8. The method of claim 1, wherein assigning the unassigned contact center agents to the open session comprises sorting the unassigned contact center agents in descending order according to their queue percentages.

9. The method of claim 1 , wherein assigning the unassigned contact center agents to the open sessions comprises sorting the unassigned contact center agents in descending order according to a resulting quality of service of the contact center if the corresponding unassigned contact center agents were assigned.

10. The method of claim 1, wherein assigning the unassigned contact center agent to the open session comprises assigning the unassigned contact center agent to the open session until an allowable negative impact on coverage of the contact center is satisfied.

11. The method of claim 1 , wherein assigning the unassigned contact center agent to the open session comprises assigning the unassigned contact center agent to the open session until a maximum session size is met.

12. A computing system for multi-objective scheduling optimization in a contact center using a heuristic-based approach, the system comprising: at least one processor; and at least one memory including a plurality of instructions stored thereon that, in response to being executed by the at least one processor, cause the computing system to: Add assignable contact center agents to pre-existing scheduling sessions; selecting a session to open from a plurality of candidate sessions in response to adding the assignable contact center agent to the pre-existing scheduled session; Open the selected session; as well as An unassigned contact center agent is assigned to an open session, wherein at most one session of the plurality of candidate sessions is open for assignment at a given time.

13. The computing system of claim 12 , wherein adding the assignable contact center agents to the pre-existing scheduled session comprises sorting the assignable contact center agents in descending order according to at least one of a respective average number of sessions since the respective assignable contact center agents were last scheduled, a queue percentage of the respective assignable contact center agents, and a resulting quality of service of the contact center if the respective assignable contact center agents were assigned.

14. The computing system of claim 13, wherein adding the assignable contact center agent to the pre-existing scheduling session further comprises assigning the assignable contact center agent according to the sorted descending order.

15. The computing system of claim 12, wherein selecting the session to open from the plurality of candidate sessions comprises determining a respective percentage of contact center agents available to attend each of the plurality of candidate sessions.

16. The computing system of claim 12, wherein selecting the session to open from the plurality of candidate sessions comprises determining an overstaffing condition with respect to a minimum staffing requirement for each of a plurality of schedule groups of the contact center that the unassigned contact center agents are able to handle.

17. The computing system of claim 12, wherein the plurality of instructions further 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 open session is not at least a minimum group size for the open session.

18. The computing system of claim 12, wherein assigning the unassigned contact center agents to the open sessions comprises sorting the unassigned contact center agents in descending order by a respective average number of sessions since the respective unassigned contact center agents were last scheduled.

19. The computing system of claim 12, wherein assigning the unassigned contact center agents to the open session comprises sorting the unassigned contact center agents in descending order according to their queue percentages.

20. The computing system of claim 12, wherein assigning the unassigned contact center agents to the open sessions comprises sorting the unassigned contact center agents in descending order according to a resulting quality of service of the contact center if the corresponding unassigned contact center agents were assigned.