Particle Swarm Optimization is a method (a population-based algorithm) that solves a problem by optimizing it iteratively while trying to improve a potential solution regarding its optimal quality. Every individual particle in the PSO algorithm learns from itself and another particle with a good fitness value. Each particle, which represents a solution, flies through the search space with a velocity that is dynamically adjusted according to its own and its companion's historical behaviors. The particles tend to fly toward better search areas over the course of the search process.