## 2 Literature Survey
### Overview of SC-MOPSO  
The pseudocode of SC-MOPSO is presented in Algorithm 1. As shown, the inputs of the algorithms are NumOfParticles, which indicates the number of particles; NumOfIterations, which indicates the number of iterations; Boundary, which identifies the outermost search; DimensionsRange, which indicates the range of dimension; ObjectiveFunctions, which indicates to the objective functions that need to be optimized. In addition, the parameters of the traditional particle swarm optimization, namely, inertia, \(C_{1}\), and \(C_{2}\) are given. Furthermore, the algorithm accepts two thresholds, namely, adaptive timeout and classMinThreshold. The former indicates the threshold that allows moving a particle from one class to another, and the latter indicates the minimum number of particles within a class. The outputs of the algorithm are the Pareto front and Pareto set.  
The particle distribution among the classes is the algorithm's foundation. The first step in the distribution of the particles involves employing two random number generators: one to assign each particle in class and the other to generate the values of the decision variables of the particle. In this context, the term \"class\" refers to a subset of the solution space that only includes solutions from the same dimension and type of decision variable; all other dimension solutions are found in other classes.  
The pseudocode for Algorithm 1 presents the first swarm initialization phase (lines 3 to 8). The solutions are projected into their classes using the command on line 8. The algorithm then executes for the specified number of iterations (NumOffIterations). The algorithm runs over each class one by one with each iteration. The algorithm runs through each class's particles one at a time and uses the function selectExemplar (Classes) to choose an exemplar for each particle. Any particle's exemplar is chosen from the same class as the particle. The particle is then moved to a new position by the algorithm depending on its input parameters: (Inertia, C1, and C2) and exemplar. The algorithm evaluates any potential improvement in the fitness functions after transferring the particle. Afterward, the algorithm adds one to the nonimprovement counter if there is no improvement; otherwise, the improvement counter is reset. The improvement counter's purpose is to make it possible for the logic to move the particle from one class to another if no improvement happens after a certain number of repetitions, which is represented by the adaptiveTimeOut threshold. A minimal number of particles must exist within a specific class in order for logic to move particles from one class to another. This is represented by another threshold, which is classMinThreshold.  
The existing variant of SC-MOPSO assumes that the solution is homogenous. In other words, it considers that the definition of the decision variable is the same for all components of the solution vector. However, this does not apply to the problem of trust-aware data gathering. In such a problem, the decision variable is different from one component to another, i.e., some components indicate the number of mobile sinks, others indicate the number of rendezvous points, others indicate the number of hops, and others indicate their locations. To resolve this problem, we developed a novel variant of SC-MOPSO. We named it SC-MOPSO for data gathering or SC-MOPSO-DG. It provides application-dependent operators named interclass operators. The operators include solution generation, addition and deletion of rendezvous points, moving to an upper class, and moving to a lower class with an awareness of the representation of data gathering solution. This is presented in the next subsection.