The particle swarm optimization method suggested by Kennedy and Eberhart [

Kennedy95] is inspired by a flock of
birds or a school of fish searching for food. Each particle has a position Xi and a velocity Vi in the parameter
space. Additionally, it remembers its best achieved objective value O and position Mi. Dependent on its own
information and the position of its best neighbor (a random subset of particles of the swarm) a new velocity is
calculated. With this information the position is updated. The pseudo code for the algorithm for each particle
is:

N = best neighbor's position
for i = 0 to number of parameters do
R1 = uniform random number in [0, 1]
R2 = uniform random number in [0, 1]
V[i]= w * V[i]
+ C * R1 * (M[i]- X[i])
+ C * R2 * (N[i]- X[i])
X[i] = X[i] + V[i]
enddo
current_O = evaluate objective function
if current_O < O then do
O = current_O
M = X
enddo

### Options for Particle Swarm

**Iteration Limit**
- This parameter is a positive integer to determine the maximum number of iterations the method is to perform.
The default value is '2000'.

**Swarm Size**
- This parameter is a positive integer specifying the number of particles in the swarm. The default value is
'50'.

**Std. Deviation**
- This parameter is a positive number and provides an alternative termination criteria. If the standard
deviation of the values of the objective function of each particle and the standard deviation of the best
positions is smaller than the provided value the algorithm stops. The default value is $10^{-6}$.

**Random Number Generator**
- The parameter is an enumeration value to determine which random number generator this method shall use.
COPASI provides two random number generators R250 [Maier91] (selected through the value
0) and the Mersenne Twister [Matsumoto98] (selected through the
value 1 (default)).

**Seed**
- The parameter is a positive integer value to determine the seed for the random number generator. A value of
zero instructs COPASI to select a "random" value.