package opt.ga;
import dist.Distribution;
import shared.Instance;
/**
* A mutation function for changing a single value
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class DiscreteChangeOneMutation implements MutationFunction {
/**
* The ranges of the different values
*/
private int[] ranges;
/**
* Make a new discrete change one mutation function
* @param ranges the ranges of the data
*/
public DiscreteChangeOneMutation(int[] ranges) {
this.ranges = ranges;
}
/**
* @see opt.ga.MutationFunction#mutate(opt.OptimizationData)
*/
public void mutate(Instance d) {
int i = Distribution.random.nextInt(d.size());
d.getData().set(i, Distribution.random.nextInt(ranges[i]));
}
}