a calculated velocity. The velocity is updated based upon the particle’s best solution and the swarm’s optimal solution. The probability that the velocity is influenced by the best solutions is determined by selected weighting coefficients. We used the PySwarms code base [@james_v._miranda_pyswarms:_2018] to develop the heuristic used in our work. Figure \[fig:ff1\] illustrates how the PSO algorithm works.

The heuristic begins with the creation of the swarm. The swarm is seeded with a row from the evaluated data set. The remaining particles are then randomly created using the seed particle as a baseline. Each particle is then randomly assigned an initial velocity. Similar to the GA, the particle is composed of mutable and immutable cells. An example particle is shown in Figure \[fig:ff2\].

In each iteration of the PSO algorithm, the particles’ fitness function is evaluated using the same metric as the GA. The values of the particle’s best location and the global best location are updated as required. Next, the distances between each particle’s location and the particle’s best location and the global best location is determined. These values are then used to update the particle’s velocity and location. The heuristic is repeated until either a selected number of 