MATLAB: How to use crossover and mutation

MATLABvectors

my population is lake that
p1 = [ 9 3 6 0 0]
p2 = [1 0 2 5 0 ]
how to use crossover and mutation to obtain new solution?

Best Answer

There are many possibilities.
Likely the simplest:
p1 = [ 9 3 6 0 0] % Parent

p2 = [1 0 2 5 0 ] % Parent
idx = randi(numel(p1)-1);
p1x = [p1(1:idx) p2(idx+1:end)] % Crossover

p2x = [p2(1:idx) p1(idx+1:end)] % Crossover
idx = randi(numel(p1));
p1m = p1;
p2m = p2;
p1m(idx) = randi(9) % Mutatiion

p2m(idx) = randi(9) % Mutatiion
producing (in this run):
p1 =
9 3 6 0 0
p2 =
1 0 2 5 0
idx =
3
p1x =
9 3 6 5 0
p2x =
1 0 2 0 0
idx =
3
p1m =
9 3 8 0 0
p2m =
1 0 1 5 0
The ‘idx’ values both just happened to be the same this time.