BFO-based approaches: Passino [84] proposed the bacterial foraging optimization (BFO) algorithm in 2002 which imitates the foraging strategies of E. coli bacteria for finding food. An E. coli bacterium can search for food in its surrounding by two types of movements: run or tumble. These movements are possible with the help of flagella (singular, flagellum) that enable the bacterium to swim. If the flagella move counterclockwise, their effects accumulate in the form of a bundle which pushes the bacterium to move forward in one direction (run). When the flagella rotate clockwise, each flagellum separates themselves from the others and the bacterium tumbles (it does not have any set direction for movement and there is almost no displacement). The bacterium alternates between these two modes of operation throughout its entire lifetime. After the initial development by Passino the algorithm gradually has become popular due to its capability to provide good solution in dynamic [85] and multi-modal [86] environments.