## 3 The Proposed TETSO Framework  
Solving engineering problems in CPSs poses numerous challenges. Multi-objective optimization is used to determine Pareto optimal solutions for each objective when more than one objective is specified [24]. The multi-objective nature of such real-world practical problems is the main characteristic that makes their solution difficult. For a given problem that has more than one key factor objective, all of these objectives can not be satisfied simultaneously, meaning there are no unique optimal solutions. Therefore, multi-objective optimization is the process of finding Pareto optimal solutions in the objective space, where each objective component of any Pareto optimal solution may only be enhanced by degrading at least one of its other objective components. To find solutions for multi-objective problems, one should provide a set of Pareto optimal solutions in order to make the best trade-off between the multiple underlying objectives. In 1995, [PERSON] and [PERSON] invented a meta-heuristic algorithm called particle swarm optimization (PSO) for single-objective problems [25]. Figure 1 shows a general PSO algorithm (the definitions and symbols are explained later in this section). This algorithm is a stochastic optimization technique inspired by natural swarm behavior such as bird flocking and fish schooling [26; 27]. This approach discovers an optimal solution by moving a large number of particles, or prospective solutions, throughout the search space while following the current best particle positions. Each particle traces the best location, referred to as the best solution, found in its path. When particle \(i\) finds a location that is better than all former locations that it has found, it stores that location as a new current best solution for particle \(i\), \(P_{best(i)}^{(t)}\). If \(P_{best(i)}^{(t)}\) is better than the current global best solution, \(G_{best}\), then \(G_{best}\) is updated with \(P_{best(i)}^{(t)}\)[28]. Initially, \(G_{best}\) and \(P_{best(i)}^{(t)}\) are set to zero. During the evolution of the path of particle \(i\), it considers its own best location and the best global solution that the swarm has attained so far. In the PSO each particle firstly updates its velocity by considering its current position, current velocity, \(P_{best(i)}^{(t)}\), and \(G_{best}\). Then, the particle adapts its position using the updated velocity at every iteration. The mathematical model of the PSO algorithm is as follows,  
\[V_{i}^{(t+1)} = wV_{i}^{(t)}+c_{1}\tau_{1}\big{(}P_{best(i)}^{(t)}-x_{i}^{(t)} \big{)}+c_{2}\tau_{2}\big{(}G_{best}^{(t)}-x_{i}^{(t)}\big{)}, \tag{5}\] \[X_{i}^{(t+1)} = X_{i}^{(t)}+V_{i}^{(t+1)} \tag{6}\]  
for \(1\leq i\leq N_{SP}\) where \(t\) is the completed number of iterations and \(N_{SP}\) is the number of particles. As well, \(X_{i}^{(t)}\) is the current position of the particle \(i\) at iteration \(t\). The velocity of particle \(i\) at iteration \(t+1\) is shown as \(V_{i}^{(t+1)}\). Moreover, \(w\) is an inertia weight which determines the rate of a particle's previous velocity to its current velocity, and the terms \(c_{j}\) and \(r_{j}\), \(j=1,2\), represent acceleration coefficients and uniform random numbers, respectively, distributed between 0 and 1. The concepts determining the updates of a particle's position and velocity are demonstrated in Figure 1. The first term (i.e., \(wV_{i}^{(t)}\)), on the right hand side (RHS) of Equation (5), provides PSO with the exploration ability, whereas the 2 nd and 3 rd terms (i.e., \(c_{1}\tau_{1}(P_{best(i)}^{(t)}-x_{i}^{(t)})\) and \(c_{2}\tau_{2}(G_{best}^{(t)}-x_{i}^{(t)})\)) define the particle-best calculation and collective global-best calculation of the particles, respectively. The PSObegins by randomly positioning \(N_{SP}\) particles in the search area, and while conducting the required iterations, the particles' velocities by using Equation (5) are computed. Following the particles' velocities calculation, by using Equation (6) the positions of particles can then be computed.