Patent ID: 8706423

Claim:
An apparatus comprising: one or more processors configured to: obtain an objective function that is subject to constraints and a number of possible solutions to the objective function; assign molecular structures and chemical reaction parameters to a plurality of reactant molecules, wherein the molecular structures comprise a kinetic energy value, a potential energy value, an atomic position, and an orientation; model a plurality of reactions involving one or more of the molecular structures, wherein the plurality of reactions comprise at least one of an on-wall ineffective collision, a decomposition, an inter-molecular ineffective collision, and a synthesis, wherein to select each reaction in the plurality of reactions one or more processors configured to: determine a random number; determine if the random number is less than an inter-molecular reaction parameter; model an on-wall ineffective collision of a molecular structure; determine if a sum of the potential energy value and kinetic energy value of the molecular structure is greater than a new potential energy value of the molecular structure after the on-wall ineffective collision based upon a determination that the random number is less than the inter-molecular reaction parameter; allow the on-wall ineffective collision based upon a determination that the sum is greater than the new potential energy; determine the molecular structure has stayed in a stable state for at least a predetermined period of time based upon the determination that the sum is less than the new potential energy value: decompose the molecular structure into two or more molecular structures based upon the determination that the molecular structure has stayed in the stable state for at least the predetermined period of time; and model an inter-molecular collision based upon a determination that the random number is greater than the inter-molecular reaction parameter, wherein the inter-molecular collision is a synthesis or an inter-molecular ineffective collision; determine, after each of the plurality of reactions, an energy value of the molecular structures based upon the potential energy values and kinetic energy values of the molecular structures; store the molecular structures when the energy value is less than a previously stored energy value; determine a stopping criteria is met; and determine the solution for the objective function as the stored molecular structures that has the lowest energy value that corresponds to the global minimum.