# A Novel Adaptive FCM with Cooperative Multi-Population Differential Evolution Optimization
## 4 Proposed Co-Evolutionary Framework
### Differential Evolution Algorithms  
Differential Evolution (DE) is a very popular population-based metaheuristic optimization technique used for multidimensional real-valued functions [49]. A distinct advantage of population-based methods is that they do not require gradient information for optimization as in the function being optimized (minimized or maximized) does not have to be differentiable. The technique uses a simple differential operator to create new candidate solutions by employing a one-to-one greedy competition between individuals in the population to move the population to optimal regions of the solution space. However, there is no guarantee that a global optimum will be attained. The differential operator is a combination of mutation and crossover operators used commonly in evolutionary algorithms to evolve populations. It uses the differences between randomly selected individuals in the population as the source of random variations for a third individual referred to as the target vector. The mutation operator is first used to generate a mutant vector by adding weighted difference vectors to the target vector. By computing the differences between two individuals from the population, the algorithm estimates the gradient in that zone rather than in a single point in the search space. There are many variations in the way the mutant vector is created and those used in this paper are described below. For a more detailed review of recent advances in differential evolution, the reader is referred to [50; 51]. 1. DE/rand/1: The mutant vector for the new generation is generated by adding the weighted difference of two candidates (or vectors) in the present generation \(g\) to the third vector known as the target vector in the present population. \[\mathbf{m}_{i}(g+1)=\mathbf{p}_{i}(g)+F_{s}[\mathbf{p}_{1}(g)-\mathbf{p}_{2}( g)]\] (6) where \(\mathbf{p}_{1}\) and \(\mathbf{p}_{2}\) are randomly chosen vectors from the population, \(F_{s}\) is the scale factor which controls the amplification level of the differential variation or more simply the step size in the solution search process. The target vector is \(\mathbf{p}_{i}\) and the mutant vector to be used for the evolution of the next generation is \(\mathbf{m}_{i}\)\(1\leq i\leq p\). This is the standard version of the differential evolution algorithm [49] and is still widely used. Since a single difference of two randomly chosen candidates from the present generation is used to create the mutant candidate, the version is called DE/rand/1. 2. DE/best/1: Instead of using the candidate vector, mutant vectors are generated using the same difference vector but now the scaled difference is added to the best candidate in the present generation, instead of the randomly chosen target vector. \[\mathbf{m}_{i}(g+1)=\mathbf{best}(g)+F_{s}[\mathbf{p}_{1}(g)-\mathbf{p}_{2}( g)]\] (7) where \(\mathbf{best}\) is the best candidate based on fitness. 3. DE/rand/2: The mutation operator is first used to generate a mutant vector by adding the scaled difference of two vectors to the third vector as, \[\mathbf{m}_{i}(g+1)=\mathbf{p}_{i}(g)+F_{s}[\mathbf{p}_{1}(g)-\mathbf{p}_{2}( g)]+F_{s}[\mathbf{p}_{3}(g)-\mathbf{p}_{4}(g)]\] (8) where \(\mathbf{p}_{3}\) and \(\mathbf{p}_{4}\) are two more randomly chosen candidates in the present generation. 4. DE/best/2: The best candidate in the current generation is added to the scaled differences of two vectors as, \[\mathbf{m}_{i}(g+1)=\mathbf{best}(g)+F_{s}[\mathbf{p}_{1}(g)-\mathbf{p}_{2}( g)]+F_{s}[\mathbf{p}_{3}(g)-\mathbf{p}_{4}(g)]\] (9)
5. DE/current-to-rand/1: In this variation, the target vector is added to two scaled differences--one of them being the difference between a randomly chosen candidate in the present generation and the target vector while the other is the difference between two randomly chosen candidates from the present generation. \[\mathbf{m}_{i}(g+1)=\mathbf{p}_{i}(g)+F_{s}[\mathbf{p}_{1}(g)-\mathbf{p}_{i}(g) ]+F_{s}[\mathbf{p}_{2}(g)-\mathbf{p}_{3}(g)] \tag{10}\]
6.