## 2 Materials and Methods
### Multiobjective Optimization Algorithm
#### 2.3.1 Discrete Particle Status  
To comply with the discrete representation of nodes in finite-element analysis, we redefine the terms position and velocity used in PSO in a discrete form as follows:  
* Position: In PSO, the position vector represents a solution of the optimized problem. For the OSP problem, the position permutation of a particle \(i\) is defined as \(X_{i}=\{x_{1},x_{2},\cdots,x_{n}\}\). Each dimension of position is a random integer \(x_{i}\in[1,n]\), where \(n\) is equal to the total number of DOFs. The positions of all particles pertain to potential sensor nodes; all initial positions are randomly sampled.
* Velocity: The discrete velocity of particle \(i\) is defined as \(V_{i}=\{v_{1},v_{2},\cdots,v_{n}\}\). The parameter \(V_{i}\) is binary-coded. Moreover, if \(v_{i}=1\), the corresponding element \(x_{i}\) in the position vector changes; otherwise, \(x_{i}\) maintains its original state. The initial velocity of the particles is 0.  
The definition of the position vector is straightforward and easy to decode; thus, it tends to minimize the computational complexity. The aforementioned velocity definition is intended to prevent particles from flying away because setting a threshold \(V_{max}\) is generally essential for inhibiting particles from flying outside computational boundaries. However, because our velocity is binary-coded, \(V_{max}\) is no longer required. In addition, because the defined position vector is integer-coded, defining a suitable velocity to work on the position is nontrivial. The redefined velocity reflects the differences between two position vectors.  
In DMOPSO, a velocity provides a particle with its moving direction and tendency. After updating the velocity, one particle makes use of the new velocity to formalize a new position. Because position and velocity are integer vectors, the mathematical updating rules in continuous PSO no longer require discrete representation. Therefore, we redefine the rules to meet the requirements of our OSP problem. We first redefine the velocity updating rule in discrete form as follows:  
\[V_{i}^{new}=B(\omega V_{i}+c_{1}r_{1}(\mathit{Pbest}_{i}\oplus X_{i})+c_{2}r_{2 }(\mathit{Gbest}_{i}\oplus X_{i})), \tag{8}\]  
where \(\omega\) is the inertia weight; \(c_{1}\) and \(c_{2}\) are the cognitive and social components, respectively; \(r_{1}\) and \(r_{2}\) are two random numbers in the range of 0-1; and \(\oplus\) is the XOR operator. The binary function \(B\) is defined as follows:  
\[B(x_{i})=\left\{\begin{array}{ll}1,&\text{if }rand(0,1)<\mathit{sigmoid}(x_{i}) \\ 0,&\text{if }rand(0,1)\geq\mathit{sigmoid}(x_{i})\end{array}\right., \tag{9}\]  
where the _sigmoid_ function is defined as follows:  
\[\mathit{sigmoid}(x)=\frac{1}{1+e^{-x}} \tag{10}\]  
To promote exploration and exploitation, the inertia weight \(\omega\) is randomly generated between 0 and 1. Moreover, the cognitive and social components \(c_{1}\) and \(c_{2}\) are set to the typical value of 1.494, as suggested by [22]. Finally, given a position vector \(X\) and velocity vector \(V\), we can update the positions according to the newly defined discrete velocity updating rule as follows:  
\[x_{i}^{new}=\left\{\begin{array}{rl}x_{i},&\text{if }v_{i}=0\\ rand(\Omega_{1}),&\text{if }v_{i}=1\end{array}\right., \tag{11}\]  
where \(\Omega_{1}\) represents the position set that has not been visited; that is, the position set that has not been listed in the tabu list.