Error in official paper about bat algorithm? I need help from a person that knows the so-called bat algorithm well. I have a problem with the third equation listed in the publication of Xin-She Yang from 2010. There it says that the velocity is updated adding:

(current_position - best_position) * random _number.

Why is it (current_position - best_position) and not (best_position - current_position)? I can't think of any case where the proposed variant is consistently better than the intuitively more appealing second variant. (best_position - current_position) can be interpreted as making a step with random step size into the direction of the currently best solution. The variant from the paper is the exact opposite, i.e. making steps into the direction that lead into the exact opposite direction than the one to the best.
In another paper that I found, they did switch both variables, i.e. they are using the second more intuitive variant. Did they understand it wrong, or did the author make an mistake?
Can anyone explain this to me, please? Thanks soo much in Advance!
 A: Note
First of all, I am not an expert on this area, but, as an engineering student, I've faced the same problem as you have, and also have spent hours thinking about it.

Answer
I agree with you and think that Yang made a mistake in his original article. In my opinion, the correct form would be:
$$
\mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}_∗ - \mathbf{x}^{t-1}_i)f_i \tag{1}\label{modif}
$$
instead of the original:
$$
\mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}^t_i - \mathbf{x}_∗)f_i \tag{2}\label{orig}
$$
because the behavior of bats would be to move away from the best solution using $\eqref{orig}$ and to approach using $\eqref{modif}$

Why
Using $\mathbf{x}^t_i$ is wrong, for sure. Because it would lead to an impossible situation of interdependence (since you calculate $\mathbf{x}^t_i$ from $\mathbf{v}^t_i$). Yang even corrects this error on page 8 of his book:
Yang, Xin-She (ed.), Nature-inspired algorithms and applied optimization, Studies in Computational Intelligence 744. Cham: Springer (ISBN 978-3-319-67668-5/hbk; 978-3-319-67669-2/ebook). xi, 330 p. (2018). ZBL1375.68026.
Now, about the inversion of positions, let's say: $\quad \mathbf{x}_∗ = \mathbf{x}_{best} \quad $ and $ \quad \mathbf{x}^{t-1}_i = \mathbf{x}_{current}$
As you have already said Yang uses: $\quad \mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}_{current} - \mathbf{x}_{best})f_i$
and in his article it is said: $\quad  f_i = f_{min} + (f_{max} - f_{min})\beta$
However, if you pay attention on page 146 of other Yang's book (in which he implements the code):
Yang, Xin-She, Nature-inspired optimization algorithms, Amsterdam: Elsevier (ISBN 978-0-12-416743-8/hbk; 978-0-12-416745-2/ebook). xii, 263 p. (2014). ZBL1291.90005.
It is said:

$\texttt{Q(i)=Qmin+(Qmin-Qmax)*rand;}$
$\texttt{v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i);}$

and he also uses $\texttt{Qmin=0}$.
See? $\texttt{Qmin}$ and $\texttt{Qmax}$ are inverted with respect to the definition!! So he is making $(f_{min} - f_{max})$ instead of making $(f_{max} - f_{min})$ as written in the article.
As $f_{min}=0$, that inversion will invert the sign of $f_i$, and then
$$\mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}_{current} - \mathbf{x}_{best})f_i$$
will become
$$\mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}_{current} - \mathbf{x}_{best})(-f_i)$$
or, rearranging:
$$\mathbf{v}^t_i = \mathbf{v}^{t-1}_i + (\mathbf{x}_{best} - \mathbf{x}_{current})f_i$$
I think he fixed a mistake with another one, but... Who am I to say that?
Note: You can find the mentioned code (a very similar one) posted by Yang (I suppose) at MathWorks File Exchange

Conclusion
I must confess that I have no idea if this mistake actually helps the BA's search, once it makes the bats to spread out from the best solution, but I agree with you that to converge is much more intuitive.

P.S. 1
I am almost sure that there are other mistakes in this paper like doing $rand > r_i$ instead of $rand < r_i$ at the local search part, but I don’t feel too confident to give you a certainty yet.

P.S. 2
I have used Bat Algorithm once with the "corrected" equation $\eqref{modif}$ once and it went well. I haven't tested the original version $\eqref{orig}$ though.
