# Seeking Optimal GNSS Radio Occultation Constellations Using Evolutionary Algorithms
## 2 Principles and Methods
### An Overview of the Evolutionary Algorithms
#### 2.2.2 Particle Swarm Optimization (PSO) Algorithm  
Similar to a GA, PSO is initialized with a population of random solutions. However, unlike GA, the PSO algorithm mimics the social behavior of bird flocks searching for food, when they try to take advantage of sharing information of food position, which affects the whole swarm behavior. Each bird is regarded as an initial particle which represents a possible solution in the search space, and these particles are simultaneously flying through the search space. In particular, each particle is associated with a position vector, which represents the solution of the problem, and a velocity vector, which determines the position updated in the next iteration. See Reference [37] for details.  
In the simulation with a PSO algorithm, each particle keeps tracking the best position of its own and the whole swarm according to the fitness value. The updated velocity \(\overrightarrow{V_{i}}(t+1)\) of the \(i\)th particle in the \(t+1\)th iteration can be expressed as follows [37]:  
\[\overrightarrow{V_{i}}(t+1)=w\overrightarrow{V_{i}}(t)+c_{1}r_{1}(P_{besti}^{ \rightarrow}-\overrightarrow{X_{i}}(t))+c_{2}r_{2}(\overrightarrow{G_{best}} -\overrightarrow{X_{i}}(t)) \tag{3}\]  
where \(\overrightarrow{X_{i}}(t)\) and \(\overrightarrow{V_{i}}(t)\) denote the position and velocity of the \(i\)th particle in the \(t\)th iteration; \(w\) is the inertia weight which controls the scope of the search space; \(c_{1}\) and \(c_{2}\), respectively, denote how the individual and the social factor influence the velocity of the particle; \(r_{1}\) and \(r_{2}\) represent the random numbers uniformly distributed in [0,1] at each iteration; \(P_{besti}^{\rightarrow}\) and \(\overrightarrow{G_{best}}\) is the best position of the \(i\)th particle and that of the whole swarm. The updated position of the \(i\)th particle in the \(t+1\)th iteration can be described by as follows:  
\[\overrightarrow{X_{i}}(t+1)=\overrightarrow{X_{i}}(t)+\overrightarrow{V_{i}} (t+1) \tag{4}\]  
When deploying the PSO algorithm in this study, a particle corresponds to a constellation configuration. The detailed simulation procedure is as following: First of all, the initial swarm composed of 30 particles, i.e., 30 different constellation configurations of 2D-LFC and 3D-LFC, is generated randomly. Hence, the initial positions and velocities of these constellations in the first iteration are generated randomly. In the following iteration, each constellation configuration (particle) is evaluated with the fitness function. In particular, the fitness function adopted by a PSO algorithm is the same as that used by a GA, defined in Section 2.3. The position and velocity of each particle will be updated using Equations (3) and (4), according to its best position and that of the swarm which are found so far. Besides, the inertia weight \(w\) = 0.9, the individual factor \(c_{1}\) = 1.5 and the social factor \(c_{2}\) = 1.5 are applied [27; 37]. In Reference [27], to ensure the fairness for the comparison between the two algorithms, the termination condition for both of them are set as 60 iterations. In this paper, the termination condition for the two evolutionary algorithms are both set as 100 iterations. The PSO process is iterated 100 times for each particle and the optimal constellation configuration found is the solution of this algorithm.