## 2 Principles and Methods
### Particle Swarm Optimization (PSO) Algorithm and Fitness Function  
As one of the most popular evolutionary algorithms, the PSO algorithm has been used in a wide range of applications [23]. The concept of the PSO algorithm originates from the simulation of the social behavior of bird flocks searching for food, which is initially inspired by the fact that the birds' trying to take advantage of sharing information of food position affects the whole swarm behavior. In the realization of the PSO algorithm, each bird is regarded as an initial particle that represents a possible solution in the search space, and these particles are simultaneously flying through the search space. To depict a specific particle, two vectors, a position vector and a velocity vector, are needed. The former vector represents the solution of the problem, while the latter one determines the position updated in the next iteration. For more details, refer to [19; 23]. In the PSO algorithm, to search for the best solution, each particle keeps tracking the best position of its own and the whole swarm, according to the value of the fitness function (i.e., the fitness value). The updated position and velocity of the \(i\)-th particle in the \((t+1)\)-th iteration are as follows [23]:  
\[\vec{X}_{i}(t+1)=\vec{X}_{i}(t)+\vec{V}_{i}(t+1), \tag{2}\] \[\vec{V}_{i}(t+1)=w\vec{V}_{i}(t)+c_{1}r_{1}(\vec{Pbest}_{i}-\vec{ X}_{i}(t))+c_{2}r_{2}(\vec{Gbest}_{i}-\vec{X}_{i}(t)), \tag{3}\]  
where \(t\) and \(t+1\) denote the \(t\)-th and the \((t+1)\)-th iteration, respectively; \(\vec{X}_{i}(t)\) and \(\vec{V}_{i}(t)\) denote the position and the velocity of the \(i\)-th particle in the \(t\)-th iteration, respectively. \(\vec{Pbest}_{i}\) and \(\vec{Gbest}_{i}\) are the best position of the \(i\)-th particle and that of the whole swarm, respectively. \(r_{1}\) and \(r_{2}\) represent the random numbers uniformly distributed in [0,1] at each iteration. \(w\) is the inertia weight that 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. Specifically, \(w\) = 0.9, \(c_{1}\) = 1.5, and \(c_{2}\) = 1.5 are applied in the present simulation [17; 23]. The fitness function of an evolutionary algorithm plays a vital role in the optimization process, which dominates the optimal solution in the termination of the PSO algorithm. Considering that the key requirement of a GNSS-R mission can be quantified in terms of how quickly 90% of the region of interest is sampled by the measurement [16], here the fitness function is defined as:  
\[\text{Fitness function = Minimum length of time (percentage coverage \geq 90\%).} \tag{4}\]  
The region of interest in the present work is the whole globe. In the simulation, the globe was divided into 64,800 cells, each cell encompassing \(1^{\circ}\) in latitude and \(1^{\circ}\) in longitude. The dependence of the visit coverage on the choice of the size of the cells will be discussed in Section 4. In the present simulation study, a particle in the PSO algorithm corresponded to a specific constellation configuration. For a certain number of LEO satellites, 30 different constellation configurations of 2D-LFC, which correspond to 30 particles of the initial swarm, are generated randomly in the first iteration of the simulation, which means that the initial positions and velocities of these 30 constellations (particles) are generated randomly. In the following iteration, each constellation configuration (particle) is evaluated with the fitness function expressed with Equation (4), and the position and velocity of each particle will be updated using Equations (2) and (3) based on the best position of this particle and that of the swarm which have been found so far. In this paper, the PSO process was iterated 60 times for each particle and the optimal constellation configuration that was found accordingly was the final solution.