# Multi-Guide Set-Based Particle Swarm Optimization for Multi-Objective Portfolio Optimization
## 3 Optimization Algorithms for Portfolio Optimization
### Multi-Guide Particle Swarm Optimization  
MGPSO is a multi-objective multi-swarm implementation of PSO that uses an archive to share non-dominated solutions between the swarms [27]. Each of the swarms optimizes one of the \(m\) objectives for an \(m\)-objective optimization problem. The archive, which can be bounded or unbounded, stores non-dominated solutions found by the swarms. MGPSO adds a third guide to the velocity update function, the archive guide, which attracts particles to previously found non-dominated solutions. The archive guide is the winner of a randomly created tournament of archive solutions. The winner is the least crowded solution in the archive. Crowding distance is used to measure how close the solutions are to one another [12]. Alongside the introduction of the archive guide is the archive balance coefficient, i.e., \(\lambda_{i}\). The archive balance coefficient is a value from a uniform distribution in the range \([0,1]\) that remains fixed throughout the search. The archive balance coefficient controls the influence of the archive and social guides, where larger values favor the social guide and smaller values favor the archive guide. The proposal of MGPSO also defines an archive management protocol (summarized in Algorithm 4) according to which a solution is only inserted into the archive if it is not dominated by any existing solution in the archive [27]. Any pre-existing solutions in the archive that are dominated by the newly added solution are removed. In the case that a bounded archive is used and the archive is full, the most crowded solution is removed. ```
Let \(A\) represent the archive;  Let \(n_{A}\) represent the archive size;  Let \(S_{k}\) represent subswarm \(k\);  Let \(c\) represent the maximum capacity of the archive, e.g., \(\sum_{k=1}^{m}S_{k}\cdot n_{s_{k}}\);  Let \(\mathbf{y}\) be the solution to insert into the archive; iffor all solutions \(\mathbf{x}_{i},\cdots,\mathbf{x}_{n_{A}}\) in \(A\), there is no solution that dominates \(\mathbf{y}\)then if\(n+1\leq c\)then  Insert into \(A\); else  Delete most crowded solution;  Insert into \(A\);  Remove any solutions in \(A\) that are dominated by \(\mathbf{y}\); else  Do not insert into \(A\);
```  
**Algorithm 4**Archive Insert Policy  
Formally, the velocity update is  
\[ \begin{split} v_{i}(t+1)&=w\mathbf{v}_{i}(t)+c_{1}\mathbf{r }_{1}(\mathbf{y}_{i}(t)-\mathbf{x}_{i}(t))\\ &+\lambda_{i}c_{2}\mathbf{r}_{2}(\hat{y}_{i}(t)-\mathbf{x}_{i}(t))\\ &+(1-\lambda_{i})c_{3}\mathbf{r}_{3}(\hat{\mathbf{u}}_{i}(t)-\mathbf{x}_{i}( t))\end{split}  \tag{12}\]  
where \(\mathbf{r}_{3}\) is a vector of random values sampled from a standard uniform distribution in [0,1]; \(c_{3}\) is the archive acceleration coefficient, \(\hat{\mathbf{u}}_{i}\) is the archive guide for particle \(i\). [PERSON] and [PERSON] recently proposed an approach for the MGPSO that randomly samples control parameter values from theoretically derived stability conditions, yielding similar performance to that when using tuned parameters [27; 21]. Algorithm 5 contains pseudo-code for MGPSO.