*LSO Algorithm*

The LSO algorithm is basically a revised version of the WOSP algorithm, which is derived from the PSO algorithm, and aims to prevent premature convergence to local suboptimal solutions associated with the SRF, which comprises the repulsion force (RF) and attraction force (AF; Figure 1) based on symmetric competitive interactions in the biology. In the PSO algorithm, every individual has unique motivations; however, the swarm tends to follow the leader. When newly joined individuals find a better solution on the search path, the leader updates the trajectory. The trajectory of each individual is an inertial route towards the best position known in the passage [9].

**Figure 1.** Movement of locust swarms in the WOSP algorithm.

As displayed in Figure 1, the difference between the LSO and PSO algorithms is that the LSO algorithm is designed to solve multimodal optimisation problems, where locusts (subswarms) simultaneously search for multiple objects. The search position is continually updated through iterations by optimising locust swarms to find the optimal solution.

To enhance the search for multiple optima, the LSO algorithm uses the following two main adjustments for finding a new optimal solution when particles converge near the local optima: (1) the SRF is used to disperse the neighbouring particles escaping from the current local optimum and regroup partial particles into new subswarms, and each subswarm explores the possible best solution (Figure 2), and (2) the starting point is optimised by using the evolutionary algorithm in the best-found optimum process. In general, the evolutionary algorithm produces an excellent next generation of particles to adapt to the changing environment through innate inheritance and acquired knowledge. The pseudocode of the LSO algorithm developed by Chen (2009) [14] is presented as follows (Algorithm 1).

#### **Algorithm 1** Locust Swarm Optimisation (LSO) Algorithm


**Figure 2.** Search process of the proposed LSO algorithm when using two subswarms.

For Swarm 1-, the LSO algorithm imitates the moving effect of biological swarms when the particles are far away from each other. Thus, the mutual AF between the neighbouring particles produces a particle swarm. The AF leads close for the neighbouring particles and accelerates for each other. After a certain period, the distance between the adjacent particles in the swarm is too low. At this time, these particles generate an RF so that they move away from each other before the next time interval.

For Swarms 2–N-, the LSO algorithm uses a "jump to pre-set direction" strategy at a fixed time interval according to the scout particle suggestions in order to allow partial particles to jump from the original subswarms. In the LSO algorithm, the scout particles are used for selecting the starting point of the jump particles to be scattered in order to explore the best solution. However, the rescattering time and particle direction are random in the WOSP algorithm.

The smart starting point is found using the random search strategy (when R > S, R and S are selected randomly from selected particle swarms) [14] to detect new possible solutions. In line 10, the initial velocity of the particles is selected, such that the particle movement is directed away from the previous best solution and previously searched space.

The LSO algorithm has exhibited good results when solving multimodal optimisation problems. Moreover, multiswarm PSO schemes, such as the WOSP, DMS-PSO, and LSO algorithms, have also provided good search results when solving multimodal problems. Table 1 compares these three PSO schemes.


#### **3. Application of the LSO Algorithm for Solving the IPTBK Problem**

The proposed LS-PSO algorithm was used to analyse the accuracy of the attack path reconstruction at various topology sizes. The basic IPTBK problem is described in the following subsections. The problem of the attack path reconstruction can be expressed as a directed graph as follows: *G* = ( *N*, *E*)=(*ni*, *eij*), where *N* represents a set of nodes, *N* = [*ni*]={*ni*1,... , *nid*,... , *niD*}, *ns* is a set of nodes for attack sources, *nd* represents a set of victims, and *E* denotes set of edges *eij* of the graph from node *xi* to node *xj* in *D*-dimensional search space.
