## 2 Basic Theories of GM (1,1) and MFO
### 2.2. Math-Flame Optimization Algorithm (MFO)  
Inspired by the navigation method of moths in nature called transverse orientation, [PERSON] proposed a new intelligent optimization method named Moth-flame optimization algorithm (MFO) in 2015. In this method, a moth flies by maintaining a fixed angle with respect to the moon, which is a highly effective mechanism for travelling long distance in a straight path. A conceptual model of transverse orientation is shown in Figure 1. As the moon keeps a long distance from the moth, this mechanism guarantees flying in straight line. Despite the effectiveness of transverse orientation, what we usually observe is that moths fly spirally around artificial lights, which is due to the inefficiency of the transverse orientation, in which it can only help for moving in straight line when the light source is very far. When moths see an artificial light, they also try to keep a similar angle with the light to fly in straight line. Since such a light is extremely close compared to the moon, maintaining a similar angle to the light source will cause the moth to eventually converge towards the light, which can be illustrated in Figure 2 [54]. According to the behavior of converging towards an artificial light, the steps of the MFO are listed below. Step 1: Parameters setting. The primary parameters of MFO include: the number of moths and flames, _Agents_no_; the number of variables, _dim_; the maximum iteration number, _Max_iteration_; and the lower bound, \(lb=[lb_{1},lb_{2},lb_{3},....,lb_{n-1},lb_{n}]\), and upper bound, \(ub=[ub_{1},ub_{2},ub_{3},\ldots,ub_{n-1},ub_{n}]\) of variables. Step 2: Position initialization. The position of moths and flames are indicated as Equations (14) and (15), respectively:  
\[M=\left[ \begin{array}{ccccc}m_{1,1}&m_{1,2}&...&...&m_{1,d}\\ m_{2,1}&m_{2,2}&...&...&m_{2,d}\\ \vdots&\vdots&\vdots&\vdots&\vdots\\ m_{n,1}&m_{n,2}&\ldots&\ldots&m_{n,d}\end{array} \right] \tag{14}\]  
Figure 1: Transverse orientation. Figure 2: Spiral flying path around close light sources. \[F=\left[ \begin{array}{ccccc}F_{1,1}&F_{1,2}&...&...&F_{1,d}\\ F_{2,1}&F_{2,2}&...&...&F_{2,d}\\ \vdots&\vdots&\vdots&\vdots&\vdots\\ F_{n,1}&F_{n,2}&\ldots&\ldots&F_{n,d}\end{array} \right] \tag{15}\]  
where \(M\) is the position matrix of moths; \(F\) is the position matrix of flames; \(n\) is the number of moths; and \(d\) is the number of variables (dimensions). The initialization of \(M\) and \(F\) can be calculated by  
\[m_{*,j}\) or \(F_{*,j}=(ub_{j}-lb_{j})\times rand(\,)+lb_{j} \tag{16}\]  
where \(m_{*,j}\) and \(F_{*,j}\) implies the values of the \(j\)-th column of the matrix \(M\) and \(F\), respectively; \(rand\) is the random number generated with uniform distribution in the interval [0, 1]; and \(ub_{j}\) and \(lb_{j}\) indicate the upper bound and lower bound of \(j\)-th variable, respectively. Step 3: Fitness value selection. To evaluate each flame, a fitness function that can generate fitness values by inputting the position of flames would be given during optimization, and the matrix \(OF\) is employed to store the corresponding fitness values of flames. \[OF=\left[ \begin{array}{c}OF_{1}\\ OF_{2}\\ \vdots\\ OF_{n}\end{array} \right] \tag{17}\]  
where \(OF\) is the matrix for saving the fitness value of flames, and \(n\) indicates the number of moths. Selecting and saving the fitness value will make a moth never lose the best solutions in each iteration. With the purpose of increasing the probability of finding better solutions, the best solutions obtained so far are considered as the flames. Therefore, the matrix \(OF\) always includes \(n\) recent best solutions obtained thus far. Step 4: Iteration start.