# A Modified Cloud Particles Differential Evolution Algorithm for Real-Parameter Optimization
## 3 Modified Cloud Particles Differential Evolution Algorithm
### The Proposed MCPDE  
The relation between exploration and exploitation is an important issue in the framework of EAs. The performance of the algorithm can be effectively improved by a balance between exploration and exploitation in algorithm. Research results show that the algorithm should start with exploration and then gradually change into exploitation. Based on this analysis, inertia factor and adaptive control parameters strategies in different stage are designed to keep the balance between exploration-exploitation. The opposition mechanism and the orthogonal crossover are employed to increase the search ability during the evolutionary process. Finally, the size of population is gradually decreased during the evolution process to result in faster convergence. Like other optimization algorithms, the proposed algorithm starts with an initial population which is composed of the cloud particles. Each cloud particle represents a feasible solution of the problem. An MCPDE population is represented as a set of real parameter vectors which is defined as follows:  
\[\mathbf{x}_{i}=\left(x_{1},x_{2},\cdots,x_{D}\right),\;i=1,...,N \tag{4}\]  
where \(D\) is the dimensionality of the optimization problem, and \(N\) is the population size. At each generation, in order to find better solutions, superior particles exploit the searching area with a smaller step and guide the searching direction, and inferior particles explore promising areas with a relatively large radius and maintain population diversity. The evolutionary strategy, based on DE/current-to-_p_best with optional archive, is generated as follows:  
\[\omega_{1}=0.85+10\frac{rES}{MaxFES}{}^{-1.9} \tag{5}\]  
\[\omega_{2}=2-\omega_{1} \tag{6}\]  
\[\mathbf{v}_{i}=\mathbf{x}_{1}+\omega_{1}\times F_{i}\times\left(\mathbf{x}_{ best}-\mathbf{x}_{1}\right)+\omega_{2}\times F_{i}\times\left(\mathbf{x}_{ 2}-\widetilde{\mathbf{x}}_{r3}\right) \tag{7}\]  
where \(\omega_{1}\) and \(\omega_{2}\) are inertia factors, \(i\in\{1,\ldots,N\}\), \(r_{1}\), \(r_{2}\) and \(r_{3}\) are mutually different random integer indices selected in the range [1,N]. _FES_ and _MaxFES_ are the number of function evaluations and the maximum number of function evaluations, respectively. In Equation (5), 0.85 and 1.9 are achieved by experiments. The value of \(FES/MaxFES\) gradually increases as the iteration progresses. Therefore, the superior particles attract the new particle to exploit better solutions with increasing \(\omega_{1}\). \(F_{i}\) is the mutation factor that controls the speed of the algorithm process. It is used by each cloud particle \(\mathbf{x}_{i}\) and is generated at each generation. \(\mathbf{x}_{best}\) is randomly chosen as one of the top \(p\) cloud particles in the current population. \(p\) is 15% of the population size. \(\widetilde{\mathbf{x}}_{r3}\) is selected from the union of the population and the archive. If the archive size exceeds 150% of the population size, some solutions arerandomly removed from the archive so that some new cloud particles can be inserted into the archive. The archive is the set of archived inferior solutions in JADE [29]. However, a mathematical proof has been proposed to indicate that opposite numbers may likely to be closer to the optimal solution [52]. Motivated by this, some inferior solutions of the archive are randomly selected and replaced by their opposite solutions. The opposite mechanism [39] on these inferior solutions is defined as follows:  
\[\widetilde{x}_{i}=a+b-x_{i} \tag{8}\]  
where \(x_{i}\in[a,b]\), \(i=1\),..., \(D\). \(\widetilde{\mathbf{x}}=(\widetilde{x}_{1},\widetilde{x}_{2},\cdots, \widetilde{x}_{D})\) is the opposite of \(\mathbf{x}=(x_{1},x_{2},\cdots,x_{D})\). The interchange number is \(\frac{N}{D}\). Figure 1 shows the curves of \(\omega_{1}\) and \(\omega_{2}\). It can be seen that \(\omega_{1}\) tends to increase continually and \(\omega_{2}\) tends to decrease as the iteration progresses.