# Lp-Norm Inversion of Gravity Data Using Adaptive Differential Evolution
## 2 Differential Evolution  
### Standard Differential Evolution Algorithm  
DE is a population-based heuristic search method suitable for solving numerical optimization problems. Its search process includes four parts: initialization, mutation, crossover, and selection. Without loss of generality, let the optimization problem in D-dimensional space be \(f(x),x\in\mathbb{R}^{D}\). For the G-th iteration, any i-th vector in the population can be expressed as \(m_{i}^{G}=\left(m_{i,1}^{G},m_{i,2}^{G},\ \cdots,m_{i,D}^{G}\right)\), in which \(i=1,\ 2,\ 3\cdots,\ NP\), \(NP\) is the population size. The evolution of these vectors is accomplished by repeatedly performing mutation, crossover, and selection operations. (1) Initialization  
In order to establish a starting point for the optimization process, the DE randomly generates the decision parameter in every vector of initial population according to the given range. Therefore, the \(j\)-th variable of the \(i\)-th vector can be defined as:  
\[m_{ij}^{0}=L_{j}+rand(0,1)\cdot\left(U_{j}-L_{j}\right),j\in[1,D] \tag{1}\]  
In which, \(rand(0,1)\) represents a uniformly distributed random number in the range of \((0,1)\), the lower and upper bounds of the \(j\)-th variable is expressed as \(L_{j}\) and \(U_{j}\) respectively. Generally, the upper and lower bounds of variables can be expressed as vectors, such as \(L=(L_{1},L_{2},\ldots,L_{D})\), \(U=(U_{1},U_{2},\ldots,U_{D})\). (2) Mutation  
After initialization, the mutation vector \(v_{i}^{G}\) is generated for each target vector \(\mathbf{m}_{i}^{G}\) in the current population with a suitable mutation strategy. In essence, the mutation strategy of differential evolution can be regarded as a linear combination of multiple vectors. The widely used strategies are as follows (see [38]):  
\"DE/rand/1\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{r1}^{G}+F(\mathbf{m}_{r2}^{G}-\mathbf{m}_{r3}^{G}) \tag{2}\]  
\"DE/rand/2\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{r1}^{G}+F(\mathbf{m}_{r2}^{G}-\mathbf{m}_{r3}^{G})+F(\mathbf{m}_{r4 }^{G}-\mathbf{m}_{r5}^{G}) \tag{3}\]  
\"DE/best/1\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{best}^{G}+F(\mathbf{m}_{r1}^{G}-\mathbf{m}_{r2}^{G}) \tag{4}\]  
\"DE/best/2\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{best}^{G}+F(\mathbf{m}_{r1}^{G}-\mathbf{m}_{r2}^{G})+F(\mathbf{m}_{ r3}^{G}-\mathbf{m}_{r4}^{G}) \tag{5}\]  
\"DE/current-to-best/1\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{i}^{G}+F(\mathbf{m}_{best}^{G}-\mathbf{m}_{i}^{G})+F(\mathbf{m}_{ r1}^{G}-\mathbf{m}_{r2}^{G}) \tag{6}\]  
\"DE/current-to-pbest/1\":  
\[\mathbf{v}_{i}^{G}=\mathbf{m}_{r1}^{G}+F(\mathbf{m}_{pbest}^{G}-\mathbf{m}_{r1}^{G})+F(\mathbf{m}_ {r2}^{G}-\mathbf{m}_{r3}^{G}) \tag{7}\]  
In which, \(r1,\ r2,\ r3,\ r4\), and \(r5\) are random integers that are different from each other in the range of \([1,\ NP]\), and all of them are not equal to \(i\). The coefficient \(F(F>0)\) is called the scaling factor, which is used to control the size of the difference direction. \(\mathbf{m}_{best}^{G}\) represents the best vector in the population and also has the optimal function value in the \(G\) generation. For more details on the differential evolutionary mutation strategy, please refer to the work of [PERSON] et al. [39]. 3. Crossover The purpose of the crossover is to replace some variables in the target vector \(\mathbf{m}_{i}^{G}\) with variables in the mutation vector \(v_{i}^{G+1}\), thereby the trial vector \(\mathbf{m}_{i}^{G+1}\) is obtained. Both binomial crossover and exponential crossover are commonly used crossover mechanisms. Here, the binomial crossover is explained, in which at least one variable in the trial vector is inherited from the mutation vector, and can be expressed as: \[u_{ij}^{G}=\left\{ \begin{array}{ll}v_{ij}^{G},&\text{if }rand(0,1)\leq\ CR\text{ or }j=jrand\\ m_{ij}^{G},&\text{otherwise}\end{array} \right.\] (8) Here, \(CR\in(0,1)\) is the crossover probability, which is used to control the number of variables inherited from the mutation vector in the trial vector.