we implement a MC simulation generator for baseline comparison.

### Genetic Algorithm

Genetic algorithms are commonly used to find near-optimal solutions to NP-hard problems [@whitley1994genetic]. In the NIDS setting, searching the space with over 90 dimensions for a solution that best fools a machine learning classifier can benefit from this type of search heuristic. Figure \[fig:GA\] illustrates a simplistic view of how a genetic algorithm works in general.

Genetic algorithms typically operate on data structures known as chromosomes; a chromosome is a representation of the problem’s data. For this work, a chromosome is comprised of a data feature from the source data sets. The GA operates on each row entry in the data set creating a population of chromosomes. This initial population contains a seed chromosome based on the original row’s values and randomly generated chromosomes based upon the seed. Each chromosome contains both mutable and immutable elements. As a result, prior to performing the algorithm’s standard operations (cross-over and mutation), the chromosome is separated into two parts, the fixed and operable elements as shown in Figure \[fig:f1\]. Of note, each chromosome in the population has a common, fixed element. Once the chromosomes are sub-divided, the heuristic operations can be 