## Bacterial feed optimization algorithm

The bacterial feeding optimization algorithm is inspired by the foraging behavior of groups of bacteria such as E. coli and M. xanthus. Specifically, the bacterial diet optimization algorithm is inspired by the chemotactic behavior of bacteria which will perceive chemical gradients in the environment (such as nutrients) and move towards or away from specific signals.

Bacteria perceive the direction of food based on the gradients of chemicals in their environment. Bacteria secrete attractive and repellent chemicals into the environment and can perceive similarly. Using locomotive mechanisms (such as flagella) bacteria can move around their environment, sometimes moving chaotically (tumbling and spinning), and other times moving in a directed fashion, which can be called swimming.

Bacterial cells are treated as agents in an environment, using their perception of food and other cells as motivation to move, and stochastic tumbling and swimming as movement to re-establish themselves. Depending on cell-cell interactions, cells may invade a food source and / or may aggressively repel or ignore each other.

The information processing strategy of the bacterial diet optimization algorithm is to allow cells to proliferate stochastically and collectively towards the optima. This is achieved through a series of three processes on a population of simulated cells: 1) Chemotaxis: the cost of cells is reduced by proximity to other cells and cells move one by one along the cost surface, 2) Reproduction: only cells that have performed well in their lifetime can contribute to the next generation, and 3) Elimination-scatter: cells are discarded and new random samples are inserted with low probability.

The following pseudocode describes the algorithm for minimizing a cost function.

The next algorithm provides the pseudocode for chemotaxis and bacterial behavior for the bacterial diet optimization algorithm.

The cost of a bacteria is reduced by its interaction with other cells. This interaction function (g ()) is calculated as follows:

where cell_k is a given cell, d_attr and w_attr are attraction coefficients, h_repel and w_repel are repulsion coefficients, S is the number of cells in the population, P is the number of dimensions on a given cell position vector .

The remaining parameters of the algorithm are as follows Cell_s_num is the number of cells maintained in the population, N_ed is the number of elimination-dispersal steps, N_re is the number of reproduction steps, N_c is the number of chemotaxis steps, N_s is the number of swimming steps for a given cell, Stepsize is a vector of random direction with the same number of dimensions as the problem space with each value in [-1; 1], and P_ed is the probability that a cell will be subjected to elimination and scattering.

Given the loops of the algorithm, it can be configured in many ways to achieve different search behaviors. It is common to have a large number of chemotaxis iterations and a small number of the other iterations. The default coefficients for swarming behavior (cell-cell interactions) are as follows: d_attract = 0.1, w_attract = 0.2, h_repellant = d_attract, and w_repellant = 10. Step size is usually a small fraction of l 'search space, such as 0.1.

During reproduction, half of the population with a low health metric is usually removed, and two copies of each member of the first half (high health) of the population are kept. The probability of elimination and dispersal (p_ed) is generally defined as being quite high, such as 0.25.