Service providers deliver various services such as print service providers that offer print services, cable service providers that offer viewing services, and Internet service providers that offer network connection services, for example. As but one example, a print service provider is a technology business that offers printing services such as printing of promotional materials, business literature, business cards, books, magazines, and so forth. Substantially any type of service can be requested from the service provider who often competes with other providers to fulfill a given customer's needs. In some cases, an intermediate layer may assign an order from the customer to a respective service provider. Sometimes, the lowest cost provider is selected by the intermediate layer. In such cases, one provider may see substantially more business than another even though pricing is substantially similar. In another case, the least utilized provider may be selected to facilitate timely delivery to the customer.
The broker 120 includes an assignment function 150, which can include a load balance function, a fairness function, and a cost function, among other aspects for example and will be described below with respect to
In contrast to conventional systems that sought to optimize one variable such as cost or utilization at a time, the broker 110 can query the entire network of providers 140 and perform many assignments of jobs 130 to enhance the performance of the network, mitigate overall costs, improve fairness, and/or balance production load. This can be achieved by interest balancing features of the assignment function 150 that seek to maintain competitive equities across the network of providers 140 (e.g., facilitate that loads and work distribution are reasonably maintained) while concurrently improving cost efficiencies across the overall network.
In one example, the broker 110 can provide for automating the assignment between a set of jobs 130 and the set of service providers 140 considering various aspects (e.g., cost, fairness, order starvation, load balance, and so forth). In some cases, a company can operate the broker 110, process jobs 130, and assign the jobs to the service providers 140. The assignment should be performed automatically due to the sheer size of the problem and management of complex assignment variables as will be described below, wherein as service providers 140 are added to the network, the number of assignment solutions can exponentially increase.
At least three assignment problems can be considered where each assignment solution for such problems should at least account for: (1) “Cost”: job cost should be minimized; (2) “Fairness”: the distribution of jobs to service providers 140 should be fair, where very small price differences (e.g., defined by threshold) should not cause imbalanced shifts in production; and (3) “load balance”: the job distribution between service providers should be balanced. It can be shown that these problems are NP-hard meaning that no efficient running time algorithm exists to optimally solve these problems. To account for such complexity, the broker 110 formulates and processes a model generated from several problem definitions (described below with respect to
The problem definitions for assignment provide workable guidelines for obtaining assignment solutions. For example, given an instance that consists of a set of jobs 130 and a set of service providers 140, a feasible assignment can be considered an assignment where all jobs are assigned to service providers and all capacity limitations are met. The lowest cost assignment can be considered a feasible assignment that has the minimum total cost among all feasible assignments. Finally, given a budget constraint B (e.g., a budget that is 5% higher than the lowest assignment cost and individual production costs are less than 10% above the highest employed cost in the lowest assignment solution), A is considered a fair assignment (alternatively, balanced assignment) if A is feasible with total cost of at most B and no other feasible assignment A′ that satisfies the budget constraint B exists with Fairness(A′)>Fairness(A) (alternatively, Load (A′)<Load (A)), where:
The considered fairness and load balancing criteria can be extended as follows. For the fairness criterion, the provider with the lowest utilization can receive the maximum utilization. Under this constraint, the provider with the next lowest utilization should receive the maximal possible utilization, and so forth. In a similar manner, it is also possible to extend the load balancing criterion.
A challenge with the above problem definitions and associated modeling to establish a scalable solution that can efficiently assign a vast amount of jobs 130 (e.g., order of millions) to a large number of service providers 140 (e.g., dozens to thousands). It is straight-forward to show that the respective problems are NP complete (e.g., a reduction to the unsplittable flow problem). Moreover, with such order of magnitudes, the number of possible solutions can be exceedingly large (phenomena known as a combinatorial explosion). Therefore, it is generally not possible to employ exhaustive search approaches in one case, yet in another case, attempt simple approaches (e.g., greedy, round robin, and so forth) that produce results for such large instances that are fundamentally less attractive compared to the optimum.
For purposes of simplification of explanation, in the present example, various components of the system 100, such as the broker 110 and assignment function 150 are illustrated and described as performing different functions. However, one of ordinary skill in the art will understand and appreciate that the functions of the described components can be performed by different components, and the functionality of several components can be combined and executed on a single component. The components can be implemented, for example, as computer executable instructions (e.g., software, firmware), hardware (e.g., a CPU, an application specific integrated circuit), or as a combination of both. In other examples, the components could be distributed among remote devices across a network, for example. The executable instructions of the system 100 and other functions disclosed herein can be provided as a non-transitory computer readable medium having the computer executable instructions stored thereon.
As shown, the assignment function 280 can include a load balance function 282, a fairness function 284, and a cost function 286 that all operate under function constraints 290 which are described below with respect to
The assignment function 280 and associated functions 282-286 can be constructed according to a job assignment model that can include various features that support the functionality described above with respect to the broker and assignment function for automatically assigning print jobs to service providers. Another model feature can include facilitating that print job deadlines are met. In some cases, this may include selecting a more expensive provider, for example, in view of the respective deadline. In yet another example feature, the model attempts to facilitate that distribution between providers is fair and regular.
In order to execute the job assignment model features, various problem definitions are given that seek to guide how the model is executed. For example, jobs can be assigned to providers such that overall costs are minimized. This might include increased costs for one transaction while mitigating costs for a group of transactions. In another example of model execution, jobs can be assigned to providers such that cost is maintained below a given threshold while fairness is maximized. Thus, even though one provider may offer services for slightly lower costs, as long as another is within a reasonable threshold of the maximal employed cost, then such provider would not be precluded from receiving orders from the automated broker 240.
In yet another problem definition for model execution, jobs can be assigned such that cost is maintained below a given threshold while congestion among providers is minimized. Thus, print jobs should be spread among a network of providers to balance print load assignments. As will be shown below with respect to
Before proceeding, example output graphs are shown in
The example function outlined in Table 1 can be based on an Integer Programming Formulation (IPF). Given an assignment A, let α=Load(A). In addition, let xe be an indicator that is set to one if the link e=(jobi, Providerp) is in the assignment and zero otherwise. Assume that each potential link e=(jobi, Providerp) has a cost ce, where each job has a size γi (e.g., 100 business cards) and each provider has a capacity capp (e.g., 1000 business cards). The variable B denotes the total budget that can be used for an assignment. For each job j in Jobs, denoted by O(j) is the set of links that emanate from j, and for each Provider p in Providers denoted by I(p) is the set of links that enter p. The problem can then be formulated as an integer program over the variables {{xe}, α} as specified in Table 1.
The budget constraint load balance function 710 shown at equation (1) of Table 1 minimizes the assignment congestion factor Load (A). At 720, various constraints for the budget constraint load balance function 710 are illustrated. One constraint shown at equation (2) of Table 1 facilitates that one assignment will be selected for each job. Another constraint shown at equation (3) of Table 1 is the provider capacity utilization constraint. It states, for each provider, that the sum of all job sizes should not exceed a fraction of the provider capacity; in particular, the maximum provider utilization should not be larger than the value of α. A constraint shown at equation (4) of Table 1 facilitates that the budget constraint is satisfied. Another constraint shown at equation (5) of Table 1 facilitates that each job can be assigned unsplittably to a single provider (e.g., it rules out non-feasible assignments).
The budget constraint load balance function 710 illustrated in Table 1 can be solved using commercially available integer programming solvers. The solution of the program {xe} constitutes the optimal assignment, where xe=1 indicates an assignment of job j to Provider p. In general, integer programming is an NP-hard problem. Therefore, the running time for a solution may be exponential in the worst case. Nonetheless, many efficient techniques can be employed such as branch and bound techniques and cutting plane approaches as well as efficient approximation algorithms that employ rounding techniques for linear programming relaxations. In particular, execution of a solution generally converges fast and efficiently to the global optimum.
The assignment techniques described above differ from conventional assignment problems in several respects. In one aspect, job demands were processed differently than described herein by assuming that the nodes over each side of the bipartite graphs such as shown in
In view of the foregoing structural and functional features described above, an example method will be better appreciated with reference to
What have been described above are examples. It is, of course, not possible to describe every conceivable combination of components or methodologies, but one of ordinary skill in the art will recognize that many further combinations and permutations are possible. Accordingly, the disclosure is intended to embrace all such alterations, modifications, and variations that fall within the scope of this application, including the appended claims. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on. Additionally, where the disclosure or claims recite “a,” “an,” “a first,” or “another” element, or the equivalent thereof, it should be interpreted to include one or more than one such element, neither requiring nor excluding two or more such elements.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/027730 | 3/5/2012 | WO | 00 | 6/12/2014 |