Abstract
The simple bacteria cooperative optimization (sBCO) algorithm that we developed as one of optimization algorithms has shown relatively good performances, but their performances were limited by step-by-step movement of individuals at a time. In order to solve this problem, we proposed a new method that assigned a speed to each individual according to its rank and it was confirmed that it improved the performances of sBCO in some degree. In addition to the assigning of speed to the individuals, we employed a new mutation operation that most existing evolutionary algorithms used in order to enhance the performances of sBCO in this paper. A specific percent of bad individuals are mutated within an area that is proportion to the rank of the individual in the mutation operation. That is, Gaussian noise of large standard deviation is added as the fitness of individuals is low. From this, the probability that the individuals with lower ranks can be located far from its parent will be increased. This causes that the probability of falling into local optimum areas is decreased and the probability of fast escaping the local optimum areas is increased. From experimental results with four function optimization problems, we showed that the performances of sBCO with mutation operation and individual speed were increased. If the optimization function is quite complex, however, the performances are not always better. We should devise a new method for solving this problem as a further work.
최적화 알고리즘의 하나로 제안한 단순 박테리아협동 최적화는 비교적 좋은 성능을 보였으나 개체가 한 번에 한 스텝씩 움직이는 것으로 말미암아 성능에 한계가 발생하였다. 이러한 문제를 해결하고자 개체에 등급을 매기고 등급별로 개체의 속력을 할당하는 방법을 제안하여 어느 정도의 성능향상을 보았다. 본 논문에서는 개체에 속력을 할당하는 방법에 추가적으로 성능향상을 위하여 기존의 진화적 최적화 알고리즘들이 많이 사용한 돌연변이를 새로 추가한 알고리즘을 제안한다. 새로 추가한 돌연변이에서는 적합도가 좋지 않은 일정 퍼센트의 개체를 해당 개체의 등급에 비례하는 영역내로 돌연변이를 일으킨다. 즉, 적합도가 낮아 등급이 낮으면 더 큰 표준편차의 가우시안 잡음을 섞어서 돌연변이를 발생한다. 결국 낮은 등급을 갖는 개체들은 부모로부터 멀리 떨어질 확률이 증가하게 된다. 이렇게 함으로서 개체가 지역 최적해 영역에 빠질 가능성을 줄이고 지역 최적해 영역에 빠져도 빠르게 나올 수 있는 가능성이 높아진다. 네개의 함수 최적화 문제에 적용해본 결과 개체 속력과 돌연변이를 함께 적용했을 경우에 성능이 향상되는 것을 보았다. 다만, 아주 복잡도가 높은 함수에서는 반드시 좋아지지 만은 않았는데, 추후 이를 해결하기 위한 다른 방법을 고안해야할 것으로 판단된다.