# Run `ga` from a File

The command-line interface enables you to run the genetic algorithm many times, with different options settings, using a file. For example, you can run the genetic algorithm with different settings for Crossover fraction to see which one gives the best results. The following code runs the function `ga` 21 times, varying `options.CrossoverFraction` from 0 to 1 in increments of 0.05, and records the results.

```options = optimoptions('ga','MaxGenerations',300,'Display','none'); rng default % for reproducibility record=[]; for n=0:.05:1 options = optimoptions(options,'CrossoverFraction',n); [x,fval]=ga(@rastriginsfcn,2,[],[],[],[],[],[],[],options); record = [record; fval]; end```

Plot the values of `fval` against the crossover fraction.

```plot(0:.05:1, record); xlabel('Crossover Fraction'); ylabel('fval')```

The plot suggests that you get the best results by setting `options.CrossoverFraction` to a value somewhere between 0.4 and 0.8.

You can get a smoother plot of `fval` as a function of the crossover fraction by running `ga` 20 times and averaging the values of fval for each crossover fraction.

```options = optimoptions('ga','MaxGenerations',300,'Display','none'); rng default % for reproducibility record=[]; fval = zeros(20,1); for n=0:.05:1 options = optimoptions(options,'CrossoverFraction', n); for i = 1:20 [x,fval(i)]=ga(@rastriginsfcn,2,[],[],[],[],[],[],[],options); end meanf = mean(fval); record = [record; meanf]; end plot(0:.05:1, record); xlabel('Crossover Fraction'); ylabel('fval')```

This plot also suggests the range of best choices for `options.CrossoverFraction` is 0.4 to 0.8.