1. A method of searching for an optimal resource allocation configuration comprising: generating, using a processor, a first configuration for allocating resources having a first degree of optimization; generating, using the processor, a second configuration for allocating resources, wherein the second configuration is generated based on a variation of the first configuration, the second resource allocation configuration having a second degree of optimization; determining, using the processor, if the second configuration meets minimum configuration restraints; in response to a determination that the second configuration meets the minimum configuration restraints or that the second configuration does not meet the minimum configuration restraints but is to be kept, then; rejecting, using the processor, the second configuration if the first degree of optimization represents a more optimal configuration than the second degree of optimization based on a first probability that the first configuration comprises a global optimum configuration for allocating resources; or accepting, using the processor, the second configuration if the first degree of optimization represents a more optimal configuration than the second degree of optimization based on a second probability that the first configuration does not comprise the global optimum configuration for allocating resources.