Calculates (updates) velocities of the particles.
pso.velocity(
population,
method = "hypersphere",
par = list(w = 1/(2 * log(2)), c1 = 0.5 + log(2), c2 = 0.5 + log(2)),
velocity,
best.pn,
best.nh,
best.pn.fitness,
best.nh.fitness,
iter = 1
)This function returns a matrix which i-th row represents updated velocity of the i-th particle.
numeric matrix which rows are particles i.e. vectors of parameters values.
string representing method to be used for velocities calculation. See 'Details' for additional information.
additional parameters to be passed depending on the method.
matrix which i-th row is a velocity of the i-th particle.
numeric matrix which i-th row is a best personal position known by the i-th particle.
numeric matrix which i-th row is a best personal position in a neighbourhood of the i-th particle.
numeric vector which i-th row is the value of
a fitness function at point best.pn[i, ].
numeric vector which i-th row is the value of
a fitness function at point best.nh[i, ].
iteration number of the genetic algorithm.
If method = "classic" then classical velocity formula
is used:
$$v_{i,j,(t+1)}=w\times v_{i,j,t} +
c_{1}\times u_{1,i,j} \times b^{pn}_{i,j,t} +
c_{2}\times u_{2,i,j} \times b^{nh}_{i,j,t}$$
where \(v_{i, j, t}\) is a velocity of the \(i\)-th particle
respect to the \(j\)-th component at time \(t\). Random variables
\(u_{1,i,j}\) and \(u_{2,i,j}\) are i.i.d. respect to all indexes and
follow standard uniform distribution \(U(0, 1)\).
Variable \(b^{pn}_{i,j,t}\) is \(j\)-th component of the best known
particle's (personal) position up to time period \(t\).
Similarly \(b^{nh}_{i,j,t}\) is \(j\)-th component of the best of best
known particle's position in a neighbourhood of the \(i\)-th particle.
Hyperparameters \(w\), \(c_{1}\) and \(c_{2}\) may be provided
via par argument as a list with elements par$w, par$c1
and par$c2 correspondingly.
If method = "hypersphere" then rotation invariant formula from
sections 3.4.2 and 3.4.3 of M. Clerc (2012) is used with arguments
identical to the classical method. To simulate a random variate from
the hypersphere function rhypersphere is used
setting type = "non-uniform".
In accordance with M. Clerc (2012)
default values are par$w = 1/(2 * log(2)),
par$c1 = 0.5 + log(2) and par$c2 = 0.5 + log(2).
Maurice Clerc (2012). Standard Particle Swarm Optimisation. HAL archieve.