# A Novel Binary QUasi-Affine TRansformation Evolutionary (QUATRE) Algorithm
## 2 Related Works  
### Quatre  
The algorithm is named QUATRE because its evolution equation is in an affine-transformation like form. Affine transformation is the transformation of a vector space into another vector space by a linear transformation coupled with a translation in geometry. It can be written as \(X=MX+B\). Set \(X=[x_{1},x_{2},...x_{ps}]^{T}\) denotes position matrix of the particle population, where \(ps\) is the population size. A particle can be written as \(x_{i}=[x_{i1},x_{i2},...x_{iD}]\), where \(i=1,2,...ps\), and \(D\) is the dimension of problem. The exact evolution equation used in QUATRE is shown in Equation (1). Where \(\bigotimes\) means component-wise multiplication, same as the \"\(\cdot\)\" operation in Matlab. \(X_{G}\), \(X_{G+1}\) are the position matrixes at \(Gth\) and \((G+1)th\) generations. \[X_{G+1}=M\bigotimes X_{G}+\overline{M}\bigotimes B \tag{1}\]  
Matrix \(B\) denotes the mutation matrix of particles, which can be generated in six schemes shown in Table 1. Among them, \(F\in(0,\infty)\) is a scaling factor but, usually, we constrain \(F\in[0,2]\). F means variation rate and the value of F determines the ability of exploration and exploitation. \(X_{r1,G},X_{r2,G},X_{r3,G},X_{r4,G}\) and \(X_{r5,G}\) are random matrixes generated by permutating row vectors of position matrix \(X_{G}\). \(X_{gbest,G}\) is defined as Equation (2), where \(x_{gbest,G}\) is a vector denotes the global best particle in \(Gth\) generation. As shown in Table 1, the first mutation strategy is \(B=X_{gbest,G}+F*(X_{r1,G}-X_{r2,G})\) which can be denoted as QUATRE/best/1, meaning that the vector to be perturbed is the global best solution \(X_{gbest,G}\), and that only one difference vector \((X_{r1,G}-X_{r2,G})\) is included. \[X_{gbest,G}=\left[ \begin{array}{c}x_{gbest,G}\\ x_{gbest,G}\\...\\ x_{gbest,G}\end{array} \right] \tag{2}\]  
\(M\) can be considered as the selection matrix, made up of 0 and 1. \(\overline{M}\) means a binary inverse operation on the matrix elements of \(M\). As shown in Equation (3), binary inversion \begin{table}
\begin{tabular}{c c c} \hline \hline
**Number** & **QUATRE/B** & **Equation** \\ \hline
1 & QUATRE/best/1 & \(B=X_{gbest,G}+F*(X_{r1,G}-X_{r2,G})\) \\
2 & QUATRE/rand/1 & \(B=X_{r1,G}+F*(X_{r2,G}-X_{r3,G})\) \\
3 & QUATRE/target/1 & \(B=X_{G}+F*(X_{r1,G}-X_{r2,G})\) \\
4 & QUATRE/target/2 & \(B=X_{G}+F(X_{r1,G}-X_{r2,G})+F*(X_{r3,G}-X_{r4,G})\) \\
5 & QUATRE/rand/2 & \(B=X_{r1,G}+F(X_{r2,G}-X_{r3,G})+F*(X_{r4,G}-X_{r5,G})\) \\
6 & QUATRE/best/2 & \(B=X_{gbest,G}+F(X_{r1,G}-X_{r2,G})+F*(X_{r3,G}-X_{r4,G})\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: The six schemes of Matrix B calculation in QUATRE algorithm. means that the element 0 inverts the contravariant to 1, element 1 inverts the contravariant to 0. \[M=\left[ \begin{array}{cccc}1&1&0&0\\ 1&0&0&0\\ 1&1&1&1\\ 1&0&1&1\end{array} \right],\overline{M}=\left[ \begin{array}{cccc}0&0&1&1\\ 0&1&1&1\\ 0&0&0&0\\ 0&1&0&0\end{array} \right] \tag{3}\]  
The initial value of the \(M\) is set to the lower triangular matrix, shown as \(M_{tmp}\) in Equation (4). Then, randomly swap each row and each column of \(M_{tmp}\), we can get \(M\). In this way, QUATRE can achieve equilibrium search in the search space. \[M_{tmp}=\left[ \begin{array}{cccc}1&0&0&0\\ 1&1&0&0\\ 1&1&1&0\\ 1&1&1&1\end{array} \right]\sim\left[ \begin{array}{cccc}1&0&1&1\\ 0&1&1&1\\ 1&0&1&0\\ 0&1&0&1\end{array} \right]=M \tag{4}\]  
The number of rows in \(M\) is the population size \(ps\), while the number of columns in \(M\) is the dimension \(D\) of problem. If \(ps>D\), we can extend \(M_{tmp}\) according to \(ps\). As shown in Equation (5), if \(ps=k\times D+i\), then the first \(k\times D\) rows of \(M_{tmp}\) are made up of \(k\) lower triangular matrices of \(D\times D\). The last \(i\) rows of \(M_{tmp}\) are the first \(i\) rows of \(D\times D\) matrix. Then, we can get \(M\) by randomly swap each row and each column. If \(ps<D\), we can do similar operations to extend the matrix \(M_{tmp}\) according to \(D\). \[M_{tmp}=\left[