# Tool for Predicting College Student Career Decisions: An Enhanced Support Vector Machine Framework
## Appendix B SVM & BOA
### Butterfly Optimization Algorithm (BOA)  
In recent years, many new intelligent algorithms have been proposed to solve practical problems, such as weighted mean of vectors (INFO) [74], hunger games search (HGS) [75], Runge Kutta optimizer (RUN) [76], Harris hawks optimization (HHO) [77], slime mould algorithm (SMA) [78] and colony predation algorithm (CPA) [79]. These algorithms show specific potential in solving many problems such as plant disease recognition [80], medical diagnosis [81; 82; 83], feature selection [84; 85; 86], image segmentation [87; 88; 89], engineering design [90; 91], economic emission dispatch problem [92], multi-attribute decision making [93; 94; 95; 96], parameter tunning for machine learning models [97; 98], green supplier selection [99], scheduling problems [100; 101], combination optimization problems [102], parameter optimization [103; 104; 105; 106], and big data optimization problems [107].  
Butterfly optimization algorithm (BOA) [108] is a new swarm intelligence optimization algorithm proposed in 2018. Since its introduction, BOA has been applied to many problems such as fault diagnosis [109], disease diagnosis [110], optimal cluster head choice for wireless sensor networks [111], parameters identification of photovoltaic models [112], image segmentation [113] and feature selection [114]. BOA mainly searches the optimal solution of the problem by imitating the foraging behavior of butterflies. In biology, butterflies have chemoreceptors on their bodies. With these chemoreceptors, butterflies can smell the fragrance of food. Therefore, a function \(f\) representing fragrance is set in the BOA. The calculation formula of \(f\) is as follows:  
\[f=c\times l^{a} \tag{11}\]  
where \(c\) represents the sensory modality, \(a\) is the power exponent that depends on the sensory modality, \(l\) is stimulation intensity which means fitness in the algorithm.  
The update formula of \(c\) is as follows:  
\[c_{new}=c+\frac{0.025}{c\times t} \tag{12}\]  
where \(t\) represents the current iteration number.  
There are two situations in BOA during the search phase. In the first situation, when one butterfly produces fragrance that other butterflies perceive, the other butterflies will then move in that direction. This phase is global search. On the other hand, when butterflies cannot perceive the fragrance which produced by other butterflies in the search space, they will take random steps to search around. This phase is local search. From the above analysis we can get two update formulas for BOA. The formula for the global search phase is shown in Equation (10):  
\[x_{i}^{t+1}=x_{i}^{t}+\left(r^{2}\times g^{*}-x_{i}^{t}\right)\times f \tag{13}\]  
where \(x_{i}^{t}\) represents the solution vector of the \(i\)-th butterfly in the \(t\)-th iteration, \(g^{*}\) represents the fitness of the optimal solution, \(r\) is the random number in the range [0, 1].  
The formula for the local search phase is shown in Equation (11):  
\[x_{i}^{t+1}=x_{i}^{t}+\left(r^{2}\times x_{j}^{t}-x_{k}^{t}\right)\times f \tag{14}\]where \(x_{j}^{t}\) and \(x_{k}^{t}\) are the positions of \(j\)-th and \(k\)-th butterflies in the population, \(j\) and \(k\) are the random numbers in the range [1, \(N\)], \(N\) represents the number of populations, \(r\) is the random number in the range [0, 1].  
In order to switch between global search and local search in the process of searching for the optimal solution, a probability parameter \(p\) is set in BOA. The algorithm will choose which formula to update according to \(p\). In other words, \(p\) controls BOA to perform global search or local search. The new population individuals generated by BOA will be stored in the agent. After calculating the fitness, choose whether to replace or not. Only when the generated population is better than the original population will it be replaced. The above steps constitute a complete iterative process of BOA. Figure 11 shows the concrete process.