Patent ID: 8051184

Claim:
A computer method performed by a programmed processor for pairing elements of a first set of elements {x(i)} with elements from a second set of elements {y(j)}, where i and j are indices and where the first set of elements and the second set of elements have the same number of elements, subject to a plurality of pairing restrictions, the method comprising: a user defining the first set of elements and the second set of elements; the user defining the plurality of pairing restrictions via a user interface of the programmed processor, wherein each pairing restriction of the plurality of pairing restrictions defines a specified pairing of an element of the first set of elements and an element of the second set of elements as prohibited; for each of a plurality of iterations or until a set of pairings is found that satisfies the plurality of pairing restrictions: selecting a random set of pairings between elements of the first set of elements and elements of the second set of elements, wherein each element of the first set of elements is paired with exactly one element of the second set of elements; identifying a set of mismatched pairings, from the random set of pairings, that do not satisfy the plurality of pairing restrictions; if the number of pairings in the set of mismatched pairings is greater than or equal to one and not greater than a defined maximum number of mismatched pairings: interchanging pairings in the set of mismatched pairings; if the number of pairings in the set of mismatched pairings is greater than or equal to one and greater than the defined maximum number of mismatched pairings: swapping each mismatched pairing with another pairing if the resulting pairings satisfy the plurality of pairing restrictions, wherein the another pairing is selected from one or more of the set of mismatched pairings and the random set of pairings exclusive of the set of mismatched pairings and wherein selecting the another pairing from the random set of pairings exclusive of the set of mismatched pairings breaks the another pairing prior to being swapped with the mismatched pairing; and if there are no mismatched pairings: providing a list of randomly paired elements to the user via the user interface, wherein the list of randomly paired elements are randomly assigned pairings between the first set of elements and the second set of elements that solve an assignment problem.