# A Novel Multi-Objective Five-Elements Cycle Optimization Algorithm
## 4 The Proposed Multi-Objective Five-Elements Cycle Optimization Algorithm
### Update of Individuals  
According to FECM, proposed in Reference [19] and from the expression of solutions in the previous section, we know that the update of individual \(X_{ij}(k)\) depends on the corresponding forces \(F_{ij,r}(k)\). From the perspective of system balance and Equation (6), the smaller \(M_{r,ij}(k)\) is, the larger \(F_{ij,r}(k)\) is, and since larger force will make the element stronger, so that each element will further converge. Therefore, we can infer that if \(F_{ij,r}(k)\) has a positive value, \(X_{ij}(k)\) is a good solution. In this situation, \(X_{ij}(k)\) should be reserved. Nonetheless, in MOO problems, the individual \(X_{ij}(k)\) corresponds to multiple objective function values, that is, corresponds to multiple forces \(F_{ij,r}(k)\). If we reserved \(X_{ij}(k)\) when all \(F_{ij,r}(k)\) have positive value, there are almost no remained individuals. In evolutionary algorithms, however, we usually want to retain 10% to 20% of the current population as the reserved solutions. So, in MOFECO, we update \(X_{ij}(k)\) as follows:  
\[X_{ij}(k+1)=X_{ij}(k)\qquad if\quad F_{ij,u1}(k)>0\ and\ F_{ij,u2}(k)>0 \tag{10}\]  
where \(u1\) and \(u2\) are randomly chosen from set \(\{1,2,\ \ldots\ m\}\). The above formula shows that two values are randomly selected in the forces of the element to determine whether they are greater than 0; if so, reserve the element. If the element \(X_{ij}(k)\) is subjected to a negative force \(F_{ij,r}(k)\), it indicates that the system expects the element to become weaker and its mass \(M_{r,ij}(k)\) must become thinner, which means \(X_{ij}(k)\) is probably not a good solution, in that case, the current \(X_{ij}(k)\) needs to be updated. According to Equation (10), if at least one of the two randomly selected forces of the element is smaller than 0, the element performs update operation. Then, we can get the update formula as Equation (11):\[ \begin{cases}X_{ij}(k+1)=X_{ij}(k)&if\quad F_{ij\_u1}(k)>0\text{ and }F_{ij\_u2}(k)>0\\ X_{ij}(k+1)=XM_{ij}(k+1)&\text{others}\end{cases}  \tag{11}\]  
where \(XM_{ij}(k+1)\) represents the individual after update and mutation. The specific update operation is designed as follows. Suppose that the individual \(X_{ij}(k)\) is a \(D\)-dimensional vector, denoted by \(X_{ij,1}(k),X_{ij,2}(k),\ \ldots\,\\ X_{ij,d}(k),\ \ldots\,X_{ij,D}(k)\), and as we hope to generate new solutions in the neighborhood of the better solutions, the improved Particle Swarm Optimization (PSO) [35] algorithm is introduced here. Define the individuals velocity vector \(V_{ij}(k)\), whose dimension is also \(D\) and expressed as \(V_{ij,1}(k),V_{ij,2}(k),\ldots,V_{ij,d}(k),\ \ldots,V_{ij,D}(k)\), and \(X_{ij}(k)\) represents the individual's position vector. Therefore, when individual \(X_{ij}(k)\) satisfies the update condition, it will be updated as follows:  
\[ \begin{cases}V_{ij,d}(k+1)=\omega\times V_{ij,d}(k)+r_{1}\times r_{s}\times(X \_local_{j,d}(k)-X_{ij,d}(k))&if\ r_{m}<P_{s}\\ V_{ij,d}(k+1)=\omega\times V_{ij,d}(k)+r_{2}\times r_{s}\times(X\_best_{d}(k)- X_{ij,d}(k))&if\ r_{m}\geq P_{s}\end{cases}  \tag{12}\]  
\[XC_{ij,d}(k+1)=X_{ij,d}(k)+V_{ij,d}(k+1) \tag{13}\]  
where \(i\in\{1,2,\ \ldots\,L\},\ j\in\{1,2,\ \ldots\,q\},\ d\in\{1,2,\ \ldots\,D\}\), representing the number of individuals in one cycle, the number of cycles and the number of dimensions, respectively. And \(r_{1}\) and \(r_{2}\) are constants; \(\omega\) represents the inertia weight; \(r_{s}\) is randomly produced in the range of \([0,1]\); \(P_{s}\) represents the local-global update probability; \(X\_local_{j}(k)\) represents the optimal individual in the \(j\)-th cycle, that is, after performing fast non-dominated sorting on all individuals in the current population, the individual in the \(j\)-th cycle that has the smallest \(Rank\) value and maximum crowding distance between two adjacent individuals is recorded as \(X\_local_{j}(k)\).