# Multi-Objective PSO with Variable Number of Dimensions for Space Robot Path Optimization
## 3 Optimization Methods
### Variable Number of Dimensions MOPSO  
#### 3.1.1 Conventional MOPSO  
The algorithm VNDMOPSO follows the principles of standard single- and multi-objective PSO [23; 36]. Therefore, we briefly review the main steps of the MOPSO algorithm [36] that serves as a starting point for the development of the VNDMOPSO algorithm. The MOPSO starts as any other HA with a random generation of particles:\[\mathbf{u}_{p}=\mathbf{u}_{\min}+\mathbf{r}\otimes(\mathbf{u}_{\max}-\mathbf{u}_{\min}), \tag{5}\]  
where \(p\) stands for the index of an agent from a total number of \(N_{\rm A}\) agents, \(\otimes\) denotes the element-wise multiplication, and \(\mathbf{r}\) is the vector of random values from interval \(\langle 0;1.0\rangle\) with a uniform probability of distribution. The decision space is limited by the lower and upper bounds, \(\mathbf{u}_{\min}\) and \(\mathbf{u}_{\max}\), respectively. Then, the positions, \(\mathbf{u}\), of particles are iteratively updated based on the formula:  
\[\mathbf{u}_{p}(i)=\mathbf{u}_{p}(i-1)+\Delta_{\rm t}\mathbf{v}_{p}(i), \tag{6}\]  
where \(\Delta_{\rm t}\) is the time step (\(\Delta_{\rm t}=1\,\)s is used in the vast majority of the studies) and \(\mathbf{v}_{p}(i)\) stands for the current velocity vector that reads:  
\[\mathbf{v}_{p}(i)=w\mathbf{v}_{p}(i-1)+c_{1}r_{1}\big{[}\mathbf{b}_{p}-\mathbf{u}_{p}(i-1) \big{]}+c_{2}r_{2}\Big{[}\mathbf{g}_{p}-\mathbf{u}_{p}(i-1)\Big{]}. \tag{7}\]  
Here, symbols \(w\), \(c_{1}\), and \(c_{2}\) stand for the user-defined controlling parameters of the algorithm, in particular the inertia weight, the cognitive learning factor, and the social learning factor, respectively. Then, symbols \(\mathbf{b}_{p}\), and \(\mathbf{g}_{p}\) stand for the personal and global best positions assigned for the \(p\)-th particle, respectively. Finally, symbols \(r_{1}\) and \(r_{2}\) are random values from interval \(\langle 0;1.0\rangle\) that scale the vectors from previous positions of particles to personal and global best, respectively. The total movement of the particle expressed in terms of (6) and (7) is the result of the action of three forces: (1) it tends to keep the previous direction of the movement (scaled by the inertia weight \(w\)); (2) it is attracted towards the location of the personal best \(\mathbf{b}\) (scaled by \(c_{1}r_{1}\)); and (3) it is attracted towards the global best \(\mathbf{g}\). In single-objective PSO, every particle has its own \(\mathbf{b}_{p}\) and the same \(\mathbf{g}\) is used for all the particles. The personal and global best are assigned according to the value of the objective function \(f\). In MOPSO, a set of objective function values has to be considered when selecting the \(\mathbf{b}_{p}\) and \(\mathbf{g}_{p}\). Moreover, a different global best vector, \(\mathbf{g}_{p}\), is assigned to every particle. The initial particle's position \(\mathbf{u}_{p}(1)\) is used for \(\mathbf{b}_{p}\) in the first iteration. Then, the personal best is updated to \(\mathbf{u}_{p}(i)\) if it dominates \(\mathbf{b}_{p}\) (i.e., it is better or equal in all watched objectives). The global best values, \(\mathbf{g}_{p}\), are assigned from the so-called external archive, \(\mathcal{E}\), that stores all non-dominated solutions found so far [36]. It is updated at the end of every iteration, \(i\). The size of the external archive, \(\mathcal{E}\), is limited to \(N_{\rm A}\) to avoid the exponential growth of the algorithm's computational complexity. The effective method for pruning of \(\mathcal{E}\)[37] is used for the selection of members of \(\mathcal{E}\). The mechanism of the global best selection combines two approaches: (1) random assignment; and (2) assignment based on the Euclidean distance. The global best assignment is shown in the form of pseudocode in Algorithm 1. A random value, \(r\), is generated and compared with a value of the user-defined parameter probability of random global best, \(0\leq r_{\rm g}\leq 1.0\).