best chromosome for each generation is maintained in subsequent generations. The chromosomes in the next generation, limited by the chosen population size variable, are selected using a roulette wheel technique. The process of selection, cross-over, and mutation is repeated until a chosen number of iterations is reached or the improvement in the best fitness is below a chosen threshold. A pseudo-code for the GA is shown in Algorithm \[alg:GA\].

Choose cross-over rate, mutation rate, number of chromosomes, maximum iterations Separate seed vector into immutable and mutable sub-vectors Generate initial population of mutable vectors Mutable seed vector created as a chromosome Randomly generate remaining chromosomes Determine population best fitness using fixed portion of seed vector Randomly select two parent chromosomes Randomly select cross-over index Perform cross-over at the index Add two offspring chromosomes to the population Randomly select mutation index Update chromosome at mutation index with new value Calculate fitness of each chromosome Update population best fitness Select next generation using roulette wheel method

### Particle Swarm Optimization

Particle swarm optimization is a bio-inspired heuristic based on behaviors of animals that flock or swarm [@clerc2010particle]. The idea is that each member or particle of the swarm explores the search space with 