package opt.ga;
import dist.Distribution;
import shared.Instance;
/**
* A single point cross over function
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class SingleCrossOver implements CrossoverFunction {
/**
* @see opt.CrossOverFunction#mate(opt.OptimizationData, opt.OptimizationData)
*/
public Instance mate(Instance a, Instance b) {
double[] newData = new double[a.size()];
int point = Distribution.random.nextInt(newData.length + 1);
for (int i = 0; i < newData.length; i++) {
if (i >= point) {
newData[i] = a.getContinuous(i);
} else {
newData[i] = b.getContinuous(i);
}
}
return new Instance(newData);
}
}