In today's global economy, atypical corporation maintains thousands, if not hundreds of thousands, of employees. In order to remain competitive, a global corporation must employ a geographically distributed workforce with diverse skills and levels of experience. With the level of competition in the marketplace as high as ever, efficient and cost-effective utilization of this workforce is of the utmost importance.
In an effort to efficiently utilize the available workforce and to improve employee and customer satisfaction, many companies invest significant amounts of time and money in workforce optimization solutions. Such solutions often use a mathematical model to represent the resources of the company and the demand for those resources. By solving such a model in a manner that optimizes one or more variables, the company may determine an efficient plan for assigning employees to particular projects or endeavors.
As the average company size, workforce diversity, and need for accuracy have increased, the complexity of the workforce optimization problem has also increased. A company may include employees with different sets of technical skills, experience levels, and job titles. In addition, a company may face uncertain demand, such that the projects and corresponding tasks may also vary. Furthermore, in addition to a plan for assigning employees to projects, a company may also desire to determine a plan for hiring new employees or training current employees to fill a new role.
Consequently, as a general rule, the most effective workforce optimization models use a large number of variables and constraints and therefore require significant computing power and time to find an optimal solution. On the other hand, simpler models that use a smaller number of variables or constraints may provide a reduction in complexity, but often fail to deliver the required results.
Similar issues are present in a number of other optimization problems. As one example, an online personals website may seek to match individuals based on compatibility. As another example, a supplier may desire to determine an ideal plan for shipping products to customers from its various warehouses. Indeed, any problem requiring matching of resources and demand is suitable for mathematical modeling. As with workforce optimization problems, speed and accuracy are often mutually exclusive in solving these types of problems.
In the accompanying drawings, like numerals refer to like components or blocks. The following detailed description references the drawings, wherein:
As described above, the process for finding an optimal solution to a resource allocation problem is typically a tradeoff between effectiveness of the solution and minimization of required computing resources and processing time. In contrast, various example embodiments described in detail herein relate to reframing a resource planning model in a manner that provides highly effective results, while significantly reducing the amount of time required to find a solution for the model.
In particular, various embodiments convert a mixed integer programming (MIP) model to a corresponding binary integer programming model (BIP) model, and then convert the BIP model to a corresponding bipartite graph. In some embodiments, the resulting bipartite graph represents all information contained in the original MIP model. A minimum cost matching for the bipartite graph may then be determined using available methods with an execution time that is orders of magnitude faster than finding a solution for the corresponding MIP model. Additional embodiments and applications will be apparent to those of skill in the art upon reading and understanding the following description.
Referring now to the drawings.
Processor 110 may be a central processing unit (CPU), a semiconductor-based microprocessor, or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120. Machine-readable storage medium 120 may be an electronic, magnetic, optical, or other physical device that contains or stores executable instructions 122, 124, 126. Thus, processor 110 may fetch, decode, and execute accessing instructions 122, mixed integer programming (MIP) to binary integer programming (BIP) converting instructions 124, and BIP to bipartite graph mapping instructions 126, each described in further detail below.
Accessing instructions 122 may access input data for a mixed integer programming model. A MIP model may be a mathematical model used for maximizing or minimizing a linear objective function, subject to linear equality or inequality constraints. More specifically, in mathematical terms, the MIP model may be expressed in the following form:
The input data used in the MIP model may include resource data describing a number of resources. A resource may be any person, service, object, commodity, or other entity to be matched to a corresponding demand. For example, when the resource matching model relates to a workforce allocation problem, the resource data may identify a number of employees and their qualifications for specific jobs. Other examples include drivers available for delivery of items, classes open for registration, and individuals seeking a romantic partner. Other suitable sets of resource data will be apparent to those of skill in the art depending on the particular problem to be solved.
The input data may also include demand data describing a number of demand instances corresponding to demand for the resources. A demand may be any need that may be fulfilled by a corresponding resource. Referring again to an example of a workforce allocation problem, the demand data may identify specific jobs or tasks for which employees are required and a number of employees required for each job or task. Other demand examples corresponding to the resources described above include customers seeking delivery of an item, students registering for classes, and other individuals who are also seeking a romantic partner. Again, corresponding demand data will be apparent to those of skill in the art depending on the particular problem to be solved.
MIP to BIP converting instructions 124 may convert the MIP model into a corresponding binary integer programming model by redefining the input data to corresponding unary data. In particular, in the unary data, each resource may be able to satisfy a single demand instance, while each demand instance may be satisfied by a single resource. Thus, a BIP model may be similar to a MIP model, but each variable may be one of two possible values (i.e., “0” or “1”). In order to convert the MIP model into a corresponding BIP model, each resource or demand instance may be redefined such that each variable used in one or more of the constraints may be expressed as one of two possible values.
Thus, for any input data, converting instructions 124 may convert the input data to a set of unary data, such that all decision variables of the integer problem may be expressed as binary values. A decision variable may be an unknown quantity for which the model is designed to solve. As one example, suppose the demand instances each specify a number of resources required as a positive integer (i.e., 1, 2, 3, etc.). In such a case, converting instructions 124 may create a plurality of unary demand instances equal to the number of resources specified in the demand instance. Thus, in this example, the decision variables in the MIP model may require more than two values, while the corresponding decision variable in the BIP model could be expressed in terms of only two values (i.e., “1” or “0”). Similarly, if a particular resource is available to satisfy a plurality of demand instances, converting instructions 124 may create a corresponding plurality of single resources.
To give a more specific example, suppose a MIP demand instance is a job requirement, which specifies that three total employees are required for the job. In solving the corresponding MIP model, at least one decision variable would be used to keep track of the number of employees assigned to the task. To avoid this, converting instructions 124 may create three single job requirements, such that each job is either filled or not. Similarly, if a particular employee could be assigned to two tasks simultaneously, converting instructions 124 may create two single resources, each corresponding to one of the two tasks to which the employee can be assigned.
Finally, BIP to bipartite graph mapping instructions 126 may map the unary data into a corresponding bipartite graph. A bipartite graph may be a graph comprising two sets of disjoint nodes, such that each node in the first set is coupled to a corresponding node in a second set. In other words, a bipartite graph is a graph that contains only even-length cycles.
Using the unary data determined by converting instructions 124, mapping instructions 126 may create a graph containing two sets of nodes, one set corresponding to the resources and one set corresponding to the demand instances. Mapping instructions 126 may then create a plurality of edges, with each edge extending between a node in the set of resources and a node in the set of demand instances. Each of the created edges may correspond to a decision variable in the BIP model and may represent a potential allocation of a resource to a corresponding demand instance that may be satisfied by that resource. In other words, based on the converting instructions 124, each demand instance may be expressed as either satisfied or not and mapping instructions 126 may create an edge for each such instance. As described in detail below, when a matching is determined for the bipartite graph, if an edge is included in the matching, the value of the corresponding decision variable is “1,” while the value is “0” if the edge is not included in the matching.
In addition, in some embodiments, mapping instructions 126 may assign a cost to each edge in the bipartite graph. Such a cost may be based on a plurality of predetermined constants, with one or more constants used for each edge. For example, when the graph relates to assignment of a particular employee to a given job, the costs for an edge may be proportionate to a cost of assigning an employee, a cost of training the employee, if necessary, and the like. Additional examples of the assignment of costs are described in further detail below.
After mapping instructions 126 have created a bipartite graph and assigned any associated costs, any of a number of methods may be used to find a minimum-cost (or maximum-cost) matching for the graph, which may comprise a plurality of edges without common vertices. As will be apparent to those of skill in the art, the optimal matching problem for a graph may also be referred to as an assignment problem. Examples of suitable methods for solving such problems include the Kuhn-Munkres Algorithm (or Hungarian method), the simplex method or interior point method to solve LP problems, genetic algorithms, or any other method for solving such problems. In this manner, each edge in the matching may correspond to assignment of a particular resource to a corresponding demand instance.
As with processor 110, processor 210 of
Accessing instructions 222 may access input data 230 for a mixed integer programming (MIP) model, as described in detail above in connection with accessing instructions 122 of
As illustrated in
Demand data 234 may include an identification of the resource 236, a number of resources 238 required to satisfy the particular demand during each time period, and a transition time 240 required to convert a particular resource to satisfy the demand. The identification of the resource 236 may be any unique identifier associated with one of the resources, such as an integer, a name, etc. As one example, when the demand is a patient desiring to schedule a visit with a doctor, identification 236 may be a service provider ID for the requested doctor. It should be noted, however, that the identification of resources required 236 need not identify the resource itself. For example, when the demand instance is fulfillment of a job, resource required 236 may identify a particular skill, which, in turn, may be possessed by one or more of the employees (i.e., the resources).
Number of resources 238 may, for example, identify a total number of resources required to fulfill the demand during each time period 232 and may therefore include n non-negative integers, where n is equal to the number of time periods. Transition time 240 (also referred to as lead time) may identify a number of time periods required to convert a resource that cannot currently satisfy a particular demand to a resource that is able to satisfy the demand. For example, if the demand is a particular job skill that an employee does not currently possess, transition time 240 may identify the amount of time required to train the employee for that job skill. Similarly, if a demand is a customer order for a custom product that a vendor does not carry, transition time 240 may identify the amount of time required to modify an in-stock product to the specifications of the custom product. Other suitable transition times will be apparent to those of skill in the art depending on the context of the particular problem.
Resource data 242 may describe each resource with resource identification 244, start of availability 246, and transition data 248. Resource ID 244 may be any value that uniquely identifies an available resource, such as an integer, a string, etc. For example, when resource data 242 relates to a group of employees, resource ID 244 may identify each employee using, for example, an employee ID or a social security number. Start of availability 246 may identify a time period 232 at which the resource first becomes available for assignment to a particular demand. Finally, transition data 248 may identify, for each resource, whether the resource may be converted to satisfy a different type of demand.
MIP to BIP converting instructions 224 may convert the MIP model into a BIP model by redefining input data 230 to corresponding unary data. To convert the MIP model into a corresponding BIP model, each demand instance in demand data 234 may be redefined such that each variable corresponding to a demand instance may be expressed as one of two possible values. Similarly, each resource in resource data 242 may be redefined such that each variable corresponding to a resource may be expressed as one of two possible values.
As an example, for each demand instance for which a number of resources required 238 is greater than one, MIP to BIP converting instructions 224 may create a number of demand instances, each requiring one resource 236. Similarly, MIP to BIP converting instructions 224 may create multiple resource instances for each resource that may satisfy more than one demand simultaneously.
In addition, MIP to BIP converting instructions 224 may also determine the availability of each resource during all time periods. As noted above, in some embodiments, resource data 242 identifies the start of availability 246 for each resource, but does not identify the availability of each resource during each time period. Accordingly, in such embodiments, MIP to BIP converting instructions 224 may assume that, once a resource becomes available, it will remain available for all time periods. Accordingly, the availability (AV) of each resource (r) during each time period (t) may be expressed in terms of start of availability (S) 246 as:
BIP to bipartite graph mapping instructions 226 may then map the unary data into a corresponding bipartite graph. More specifically, using the unary data determined by converting instructions 224, mapping instructions 226 may create a graph containing two sets of nodes, one set corresponding to the resources and one set corresponding to the demand instances.
In order to determine whether a particular resource may be allocated to satisfy a particular demand, BIP to graph mapping instructions 226 may first determine a start time of each single demand instance in the unary data. As described above, in some embodiments, number of resources 238 may identify a total number of resources required during each time period. Accordingly, in such embodiments, instructions 126 may set the start time for each instance in the unary data based on an assumption that, once a demand is required, it remains required for all time periods. Thus, as an example, if a particular demand instance required two total resources at t=1, three at t=2, and six at t=3, the start time would be t=1 for two unary resources, t=2 for one unary resource, and t=3 for three unary resources. It should be noted, however, that in some embodiments, the start time of each demand instance may be obtained as part of demand data 234 without the need for such a determination.
Mapping instructions 226 may then create a plurality of edges, with each edge extending between a node in the set of single resources and a node in the set of single demand instances. Each of the created edges may correspond to a decision variable in the BIP model and may represent a potential allocation of a resource to a corresponding demand instance that may be satisfied by that resource. Accordingly, when a matching is determined for the created graph, a selected edge may correspond to a value of “1” for the binary decision variable, while a unselected edge may correspond to a value of “0.”
As an example, assume that the decision variables for a particular BIP model represent the following: (1) whether a particular resource is assigned to a particular demand at a given time; (2) whether a particular resource is converted to satisfy a particular demand at a given time; (3) whether a particular resource may be acquired in the future to satisfy the particular demand; and (4) whether the particular demand cannot be fulfilled. Mapping instructions 226 may then determine, for each pair (r, d), where r is a node in the set of resources and d is a node in the set of demand instances, whether to create an edge between r and d.
Mapping instructions 226 may, for example, create edges for each pair (r,d) in the following order of preference: (1) r is available for allocation to satisfy d at the start time; (2) r is available for allocation to satisfy d after the start time; (3) r is able to be converted to be available for allocation to satisfy d at the start time; and (4) r is able to be converted to be available for allocation to satisfy d after the start time. In addition, mapping instructions 226 may create, for each demand instance, an edge from a node in a third set that represents a resource not currently available that is obtainable in the future to satisfy d (e.g., by hiring, ordering, etc.). Finally, mapping instructions 226 may create, for each demand instance, an edge from a node in a fourth set that indicates that no resource is available to meet the demand.
In addition, in some embodiments, mapping instructions 226 may assign a cost to each edge in the bipartite graph. Such a cost may be based on a plurality of predetermined constants, with one or more constants used for each edge. For example, edges in set (1) may be assigned an allocation cost, while edges in set (2) may be assigned the allocation cost in addition to any penalties for late fulfillment. Similarly, edges in set (3) may be assigned a cost for conversion, while edges in set (4) may be assigned the cost for conversion in addition to any penalties for late fulfillment. Edges from nodes in the third set may be assigned an acquisition cost, plus any penalties for late fulfillment, if applicable. Finally, edges from nodes in the fourth set may be assigned penalties for the entire period, as no resource is available to meet the demand.
After mapping instructions 226 have created a bipartite graph and assigned any associated costs, any of a number of methods may be used to find a minimum-cost (or maximum-cost) matching for the graph, which may comprise a plurality of edges without common vertices. Examples of suitable methods include the Kuhn-Munkres Algorithm (or Hungarian method), the simplex method or interior point method to solve Linear Programming problems genetic algorithms, or any other method for solving such problems. In this manner, each selected edge in the matching may correspond to a value of “1” for the corresponding binary decision variable.
Method 300 may start in block 305 and proceed to block 310, where resource matching system 100 may access or otherwise receive input data for a mixed integer programming (MIP) model. The input data used in the MIP model may include resource data describing a number of resources and demand data describing demand instances for the resources. Resource matching system 100 may obtain the input data by accessing a connected database, reading from one or more local or remote machine-readable storage media, receiving user input, or through any other means that will be apparent to those of skill in the art.
After access of the input data, method 300 may then proceed to block 320, where resource matching system 100 may convert the MIP model into a corresponding binary integer programming (BIP) model. In order to convert the MIP model into a BIP model, resource matching system 100 may redefine the input data to corresponding unary data. For example, resource matching system 100 may redefine resources and demand instances, such that each decision variable used in the MIP model may be expressed as a decision variable in the BIP model as one of two possible values. An example embodiment of additional processing that may be performed in block 320 is described in further detail below in connection with
After conversion of the MIP model to a corresponding BIP model, method 300 may proceed to block 330, where resource matching system 100 may create a bipartite graph using the unary input data and decision variables of the BIP model. In particular, resource matching system 100 may create a graph coupling nodes representing resources with corresponding nodes representing demand instances. The edges in the created graph may each correspond to a decision variable in the BIP model and may represent a potential allocation of a resource to a demand instance that may be fulfilled by that resource. Resource matching system 100 may also associate a value with each edge representing a cost for allocating the resource to the connected demand instance.
After creation of the bipartite graph, method 300 may then proceed to block 340, where resource matching system 100 may determine an optimal bipartite matching of the created graph. In particular, resource matching system 100 may launch execution of a suitable method for determining a minimum or maximum cost matching. As described in detail above, such methods will be apparent to those of skill in the art. In the resulting matching, each selected edge may correspond to assignment of a particular resource to a corresponding demand instance. Method 300 may then proceed to block 345, where method 300 may stop.
Method 400 may start in block 405 and proceed to block 410, where resource matching system 200 may redefine any demand instances that require multiple resources to multiple single demand instances. As one example, in a job assignment problem, each job may include multiple tasks and therefore require multiple employees. In such an example, in block 410, resource matching system 200 may redefine each job requiring n tasks to n jobs, each requiring one task. A similar process may be executed, for example, when each single individual that uses a dating website may be matched with a number of potential partners, when a person desires to adopt multiple pets, or in any analogous situation.
Method 400 may then proceed to block 420, where resource matching system 200 may redefine each resource that may satisfy multiple demand instances to multiple unary resources. Continuing with the job assignment example, suppose that each employee may simultaneously work on n tasks. In this example, in block 420, resource matching system 200 may redefine each employee capable of handling n tasks to n instances of that employee, each capable of handling a single task. A similar process may be executed, for example, in a class selection lottery in which each class has a predefined student capacity, in a workforce distribution problem in which each building may hold multiple employees, or in any analogous situation.
After conversion of demand instances and resources, method 400 may proceed to block 430, where resource matching system 200 may determine the availability of each resource during each time period. In some embodiments, the resource data identifies the start of availability for each resource, but does not identify the availability of each resource during each time period. Accordingly, as described above in connection with MIP to BIP converting instructions 224, the availability (AV) of each resource (r) during each time period (t) may be expressed in terms of the start of availability (S) as:
Alternatively, in some embodiments, the availability of each resource during each time period may be provided as input, thereby avoiding the conversion described above. After execution of block 430, the MIP model may be fully converted to a corresponding BIP model. Method 400 may then proceed to block 435, where method 400 may stop.
Method 500 may start in block 505 and proceed to block 510, where resource matching system 200 may determine the start time of each demand instance using the unary data. In some embodiments, number of resources 238 may identify a total number of resources required to satisfy a particular demand during each time period, rather than identifying a required start time for each resource. In such embodiments, as described above in connection with BIP to graph mapping instructions 226, resource matching system 200 may set the start time for each instance in the unary data based on an assumption that, once a demand is required, it remains required for all time periods. It should be noted, however, that in some embodiments, the start time of each demand instance may be obtained as part of demand data 234 without the need for such a determination.
Method 500 may then proceed to block 515, where resource matching system 200 may determine the start of availability for each resource. The start of availability may be determined, for example, by identifying the first time period for which the availability of the resource is “1.” Alternatively, a separate data structure may contain the start of availability for each resource.
Method 500 may then proceed to block 520, where the construction of graph edges may begin with a next demand instance. For example, in the first iteration of block 520, resource matching system 200 may simply select the first demand instance from the unary data. In subsequent iterations, resource matching system 200 may select a next demand instance from the unary data for processing. Similarly, in block 525, resource matching system 200 may select a resource from the unary data for processing and, in subsequent iterations, select a next resource from the unary data. After selection of a particular demand instance and a particular resource, method 500 may proceed to block 530 of
Referring now to
When it is determined in block 530 that the resource satisfies the demand, method 500 may proceed to block 535, where resource matching system 200 may determine whether the resource may satisfy the demand on time. In making this determination, resource matching system may compare the start time of the demand determined in block 510 with the start of availability of the resource determined in block 515. When the start of availability of the resource is at or before the start time of the demand, resource matching system 200 may determine that the resource may satisfy the demand on time.
When it is determined in block 535 that the resource may satisfy the demand on time, method 500 may proceed to block 540, where resource matching system 200 may create an on time edge in the bipartite graph between the resource and the demand, indicating that the resource may potentially be allocated to satisfy the demand. Resource matching system 200 may also associate any costs with the edge, such as a cost of allocating the resource to the demand. These costs may later be used in determining an optimal bipartite matching of the graph. Method 500 may then proceed to block 570.
Alternatively, when it is determined in block 535 that the resource potentially satisfies the demand, but is unable to satisfy the demand on time, method 500 may proceed to block 545. In block 545, resource matching system 200 may create a late edge in the bipartite graph between the resource and the demand, indicating that the resource may potentially be allocated to satisfy the demand, but may only do so after the start time. Resource matching system 200 may also associate any costs with the edge, such as a cost of allocating the resource in addition to a late penalty equal to the number of periods for which the demand would go unsatisfied, times a per-period penalty. Method 500 may then proceed to block 570.
When it is determined in block 530 that the resource cannot satisfy the demand, method 500 may proceed to block 550, where resource matching system 200 may determine whether the resource may be converted or otherwise transitioned to satisfy the demand. In making this determination, resource matching system 200 may, for example, access a data structure indicating the ability of a particular resource to be transitioned to the resource required by the demand instance.
When it is determined that the resource may be transitioned to satisfy the demand, method 500 may proceed to block 555, where resource matching system 200 may determine whether a transition could occur such that the transitioned resource is available on time. In making this determination, resource matching system may compare the start time of the demand determined in block 510 with the start of availability of the resource determined in block 515 plus a number of periods required for the transition. The number of periods required for the transition may be determined, for example, by accessing a data structure indicating the time required to transition a particular resource type to another resource type. When the start of availability of the transitioned resource is at or before the start time of the demand, resource matching system 200 may determine that the resource may be transitioned to satisfy the demand on time.
When it is determined in block 555 that the resource may be transitioned to satisfy the demand on time, method 500 may proceed to block 560, where resource matching system 200 may create an on time transition edge in the bipartite graph between the resource and the demand, indicating that the resource may potentially be transitioned to satisfy the demand. Resource matching system 200 may also associate any costs with the edge, such as a cost of transitioning the resource. Method 500 may then proceed to block 570.
Alternatively, when it is determined in block 535 that the resource may be transitioned to satisfy the demand, but would be unable to be transitioned on time, method 500 may proceed to block 565. In block 565, resource matching system 200 may create a late transition edge in the bipartite graph between the resource and the demand, indicating that the resource may potentially be transitioned to satisfy the demand, but that the transition would be completed after the start time. Resource matching system 200 may also associate any costs with the edge, such as a cost of transitioning the resource in addition to a late penalty equal to the number of periods for which the demand would go unsatisfied, times a per-period penalty. Method 500 may then proceed to block 570.
In block 570, resource matching system 200 may determine whether there are additional resources to be processed for the currently-selected demand. If so, method 500 returns to block 525 of
In block 575, resource matching system 200 may create an edge to the demand instance from a node representing a resource that is obtainable in the future to satisfy the corresponding demand (e.g., a new hire, a special order, etc.). Resource matching system 200 may also associate a cost with the new edge, such as a cost of obtaining the resource. Method 500 may then proceed to block 580.
In block 580, resource matching system 200 may create an edge to the demand instance from a node representing a resource that is not available. In other words, this edge may represent a situation in which there is no available resource that may satisfy the demand, be transitioned to satisfy the demand, or be obtained in some other manner. Resource matching system 200 may also associate a cost with the new edge, such as a total number of periods for which the demand is required times a per-period penalty.
Method 500 may then proceed to block 585, where resource matching system 200 may determine whether there are additional demand instances for which processing is required. When there are additional demand instances, method 500 may return to block 520 of
Having described various example embodiments, an example application of such embodiments will now be presented with reference to
Job requirement table 610 may contain demand data that identifies the headcount requirements (REQ) for a particular job, j, of opportunity, i, during time period, t. Thus, as an example, REQIT, Acme, 2=3, which indicates that three information technology (IT) employees are required to service the Acme opportunity during the second time period.
Employee qualification table 615 may contain resource data that identifies the qualifications (Q) of each employee, w, for a particular job, j. As illustrated, an entry of “1” may indicate that the employee is qualified for a particular job, while an entry of “0” may indicate that the employee is not qualified for the job. Thus, as an example, QJeff, Sales=0, which indicates that Jeff is not qualified for a sales position.
Employee transition table 620 may contain resource data indicating whether each employee, w, is qualified for transitioning (QT) to a job, j, for which he or she is not currently qualified. As illustrated, an entry of “1” may indicate that the employee is qualified for a transition to a particular job, while an entry of “0” may indicate that the employee is not qualified for the transition. Thus, as an example, QTGabriela, Sales=1, which indicates that Gabriela, who is currently qualified to work only in IT, may be transitioned to a sales position. In an associated data structure, the input data may also include a transition lead time period indicating a number of time periods required to transition a particular employee to a particular job by, for example, training the employee, transferring the employee to a new location, or otherwise changing the current state of the employee.
Employee release table 625 may contain additional resource data that identifies the release time period (R) for each employee. In particular, the entry of “1” in a particular row indicates the time at which each employee is released from a previous job and therefore becomes available. Thus, as an example, RGabriela, 2=1, indicating that Gabriela becomes available for assignment to a job at time period 2.
It should be noted that additional input data may be included, depending on the context of the particular job assignment problem. For example, the input data may include data indicating an amount of time required to hire a new employee for each job type, predefined allocations of particular employees to particular jobs, data regarding individuals in the hiring process, and hiring limits. In addition, for use in the objective function, the input data may also include priorities of each opportunity, a probability of winning the particular opportunity, and costs associated with loss of an opportunity, training, hiring, allocation, etc.
In addition to the illustrated input data, the MIP model may include a number of decision variables representing, for example, whether an employee has been allocated or transitioned to a particular job, a number of additional employees required for a particular job, a number of new hires in an inventory and assigned to each job, and whether a job cannot be filled (i.e., there is a gap). Furthermore, the MIP model may include a number of constraint equalities or inequalities representing requirements of any job assignment solution in terms of the variables. For example, constraints might indicate that each employee may only be assigned to one job, that an employee must be qualified or able to be transitioned to be assigned to a job, etc. Other suitable variables and constraints will be apparent to those of skill in the art based on the particular problem.
Finally, the MIP model may include an objective function specifying a function to be minimized in terms of the costs and variables. A solution to the MIP model is a set of values for the variables that satisfies all constraints, while minimizing the total cost as determined using the objective function. As will be apparent to those of skill in the art, solving the MIP model detailed above is time intensive and requires a large amount of processing resources. Accordingly, using the embodiments described in detail herein, one may convert the MIP model into a corresponding BIP model, and then convert the BIP model into a bipartite graph containing a number of edges.
Employee availability table 630 may contain resource data that identifies the availability (AV) for each employee, j, during each time period, t. As detailed above in connection with MIP to BIP converting instructions 224, each entry in availability table 630 may be a running total of a corresponding row in employee release table 625. Thus, as an example, in release table 625, the row for Susan indicates that she will be released from a previous job at t=2. Thus, in availability table 630, the values for times t=2 and t=3 are both “1,” indicating that Susan is available for assignment during both time periods.
Start time table 635 may contain data identifying a particular job and a corresponding start time. As illustrated in the first column, for each job in the MIP model with a headcount of n, the BIP model contains n entries. Thus, because the maximum headcount for the Acme IT job is 3 in the MIP model, three distinct entries exist in the BIP model. The second column of start time table 635 may indicate the time period at which the particular job is first required. As also described in further detail above in connection with MIP to BIP converting instructions 224, the values included in the second column of start time table 635 may be determined using job requirement table 610 based on the assumption that, once a job is required, it remains required for all time periods.
Job fulfillment table 640 may identify all employees who are qualified and available (QE) to satisfy a particular job, j, at a particular time, t. In particular, a given entry QEj,t may include all employees, w, for which AVw, t=1 (see table 630) and QEw,j=1 (see table 615). A job transition table may be generated in a similar manner using transition table 620, availability table 630, and the transition time received as input. In this case, assuming a transition time of one period, the only entry in such a table would be Gabriela for Sales at t=3.
Bipartite graph 650 includes a first set of edges connecting each employee to each job for which the employee is available at a start time of the job and is qualified for the job. As an example, referring to
Bipartite graph 650 also includes a second set of edges connecting each employee to each job for which the employee is available after the start time of the job and is qualified for the job. As an example, referring again to
Bipartite graph 650 may also include a third set of edges connecting each employee to each job for which the employee is available for transitioning by the start time of the job. As detailed above in connection with
In addition, bipartite graph 650 may include a fourth set of edges connecting each employee to each job for which the employee is available for transitioning after the start time of the job. In this example, because Gabriela may be transitioned to (Sales, Acme, 1) at t=3, graph 650 may include a late transition edge between these two nodes.
Bipartite graph 650 may also include a fifth set of edges, each between a particular job and a node representing an employee to be hired for that job. Thus, as illustrated in graph 650, because there are six total jobs to be filled, there are also six total new hire nodes, each connected to one of the jobs. Finally, bipartite graph 650 may include a sixth set of edges, each between a particular job and a node indicating that the particular job cannot be filled (i.e., there is a “gap”). As with the new hire edges, graph 650 includes six gap edges, each coupled to a corresponding node representing the inability to fill the position.
In addition to creation of the edges, the procedure for mapping of the BIP model to a corresponding bipartite graph may include assignment of costs to each edge. For example, for an on time edge, the associated cost may be the cost of allocating the employee to the job (e.g., based on the employee's salary or qualifications), while the costs associated with a late edge may be the cost of allocation, plus any penalties due to the unfulfilled time periods. In addition, for on time transition edges, the cost may be a transitioning cost (e.g., cost for training the employee for a new role), while late transition edges would also include late penalties. Finally, for new hire edges, the cost may include the cost of hiring (e.g., recruiting, interviewing, etc.), plus late penalties, if any. Finally, for gap edges, the cost may include any revenue loss due to failure to fill the position.
According to the foregoing, various example embodiments enable optimization of a resource matching model. In particular, example embodiments allow for conversion of a mixed integer programming (MIP) model to a corresponding binary integer programming (BIP) model. The BIP model may then be mapped to a number of edges in a bipartite graph along with any associated costs. An optimal matching may then be determined using a number of highly-efficient methods, thereby providing a resource matching solution without the processing time and complexity typically encountered when solving MIP models.