Patent ID: 8315894
Filing Date: 2012-11-20
Classification: G06Q

Abstract:
1. Apparatus for resource management, comprising: a memory, which is configured to store a definition of a set of resource consumers, resources for allocation to the resource consumers, and constraints applying to the allocation of the resources; and a processor, which is configured to associate respective variables with the resource consumers, and to identify the resources as values applicable to the variables, thereby defining respective domains of the values for the variables, and to identify a group of the variables as preferred variables, and which is operative to find an assignment of the values to the variables that satisfies the constraints by repeatedly performing, while the group contains one or more of the variables, the steps of choosing a variable from the group, instantiating the chosen variable with a value, removing the chosen variable from the group, and pruning the domains of the other variables by propagation of the constraints responsively to the value of the chosen variable, and to assign the resources to the resource consumers responsively to the assignment of the values to the variables, wherein the variables in the group are represented by respective indices, and wherein the processor is configured to arrange the indices in respective slots of a vector, and to set a pointer to separate a first partition of the vector containing the preferred variables from a second partition of the vector, and to remove the chosen variable from the group by shifting the pointer by one slot into the first partition and moving a respective index of the chosen variable to a slot in the second partition that is adjacent to the pointer, and wherein the processor is configured, upon choosing the variable, to verify that the chosen variable is still preferred, and when the chosen variable is no longer preferred, to shift the pointer by the one slot into the first partition and to move the respective index of the chosen variable to the slot in the second partition that is adjacent to the pointer without instantiation of the chosen variable.