An optimization technique used in data mining that attempts to find some optimal solution from a large space of possible solutions. It gets its name from the fact that a number of possible solutions are created and they are made to swarm towards an optimal solution by a computer program.