US 11,755,376 B2
Automatic assignment of hardware/software resources to different entities using machine learning based on determined scores for assignment solutions
Nick Pendar, San Ramon, CA (US); and Eric Christopher Hagen, Danville, CA (US)
Assigned to CALLIDUS SOFTWARE, INC., Dublin, CA (US)
Filed by Callidus Software, Inc., Dublin, CA (US)
Filed on Aug. 23, 2019, as Appl. No. 16/549,886.
Prior Publication US 2021/0055973 A1, Feb. 25, 2021
Int. Cl. G06F 9/50 (2006.01); G06N 20/00 (2019.01); G06N 3/126 (2023.01)
CPC G06F 9/5055 (2013.01) [G06F 9/5044 (2013.01); G06N 3/126 (2013.01); G06N 20/00 (2019.01)] 16 Claims
OG exemplary drawing
 
1. A computing device comprising:
one or more processors;
a non-transitory computer-readable medium storing machine learning algorithm instructions and an application including a random assignment generator, a score determiner, a subset solution selector, a mutation/mating generator, and an assignment finalizer that, when executed by the one or more processors of the computing device, cause the computing device to perform operations comprising:
randomly assigning, by the random assignment generator, a set including a plurality of hardware/software resources from a plurality of hardware/software resources to each of a plurality of requesters of hardware/software resources to form a hardware/software resources assignment solution, where a portion of the set including the plurality of hardware/software resources from the plurality of hardware/software resources randomly assigned to each of the plurality of requesters of hardware/software resources overlap;
determining, by the score determiner, a score associated with the hardware/software resources assignment solution, wherein the score is indicative of fitness of the hardware/software resources assignment solution;
repeating, by the random assignment generator, the random assigning of a set of hardware/software resources from the plurality of hardware/software resources to the plurality of requesters of hardware/software resources to form a hardware/software resources assignment solution and the determining of the score associated with the hardware/software resources assignment solution a number of times to form a set of solutions, each solution in the set of solutions having a respective score associated therewith;
selecting, by the subset solution selector, a subset of the set of solutions to form a subset of solutions based on an unsupervised machine learning of the scores of the plurality of hardware/software resources assignment solutions over the number of times;
creating, by the mutation/mating generator, additional solutions by changing hardware/software resource assignments within the subset of solutions, the changing of hardware/software resource assignments within the subset of solutions includes randomly swapping the sets of hardware/software resources from the hardware/software resource assignments within the subset of solutions between the plurality of requesters of hardware/software resources within the subset solutions, including (i) randomly swapping sets of hardware/software resources between different requestors within a same solution and (ii) randomly swapping sets of hardware/software resources between different requestors from a different solution;
determining, by the score determiner, scores associated with the additional solutions;
repeating, by the respective subset solution selector, mutation/mating generator, and score determiner, the selecting, the creating, and the determining of scores for further additional solutions, based on the unsupervised machine learning of the scores of the plurality of hardware/software resource assignments, until a certain criteria is met, the criteria being one or more of an expiration of a threshold period, a determined number of iterations, and an improvement from one iteration to a next iteration based on the determined score is less than a determined threshold;
finalizing, by the assignment finalizer, assigning of the plurality of hardware/software resources to the plurality of requesters by selecting a solution from a latest set of solutions of the further additional solutions when the certain criteria is met, wherein the selecting of the solution is based on a determined respective score associated with the further additional solutions when the certain criteria is met, where a portion of the selected solution including the plurality of hardware/software resources assigned to the plurality of requesters of hardware/software resources overlap and the selected solution is optimally finalized using machine learning;
utilizing the finalized assignment of the plurality of hardware/software resources to the plurality of requesters; and
executing an assignment of the plurality of hardware/software resources to the plurality of requesters as specified in the finalized assignment.