function offspring = crossover(parents) [num_parents, string_length] = size(parents); offspring = zeros(num_parents, string_length); %pick every 2, use -1 so you can select the next one i.e. i+1 without %running out of hte index bounds for i = 1:2:num_parents-1 crossover_point = randi([1, string_length-1]); offspring(i, :) = [ parents(i, 1:crossover_point) ... parents(i+1, crossover_point+1:end) ]; offspring(i+1, :) = [ parents(i+1, 1:crossover_point) ... parents(i, crossover_point+1:end) ]; end if mod(num_parents, 2) == 1 %Carry over last parent if odd offspring(end, :) = parents(end, :); end end