L = 32;
N = 60;
T = 100;
Pc = 0.6;
Pm = 0.02;
for i = 1 : 1 : N
x0(1, i) = unidrnd(2 ^ L - 1);
x0(2, i) = unidrnd(2 ^ L - 1);
end
for t = 1 : 1 : T
for i = 1 : 1 : N
grayCode(1, i, :) = num2gray(x0(1, i), L);
grayCode(2, i, :) = num2gray(x0(2, i), L);
end
for i = 1 : 1 : N / 2
if rand() < Pc
p = unidrnd(L);
for j = 1 : 1 : p - 1
grayCode(1, i + N, j) = grayCode(1, i, j);
grayCode(2, i + N, j) = grayCode(2, i, j);
grayCode(1, N - i + 1 + N, j) = grayCode(1, N - i + 1, j);
grayCode(2, N - i + 1 + N, j) = grayCode(2, N - i + 1, j);
end
for j = p : 1 : L
grayCode(1, i + N, j) = grayCode(1, N - i + 1, j);
grayCode(2, i + N, j) = grayCode(2, N - i + 1, j);
grayCode(1, N - i + 1 + N, j) = grayCode(1, i, j);
grayCode(2, N - i + 1 + N, j) = grayCode(2, i, j);
end
end
end
for i = N + 1 : 1 : 2 * N
for j = 1 : 1 : L
for k = 1 : 1 : 2
if rand() < Pm
grayCode(k, i, j) = 1 - grayCode(k, i, j);
end
end
end
end
for i = N + 1 : 1 : 2 * N
x0(1, i) = gray2num(grayCode(1, i, :));
x0(2, i) = gray2num(grayCode(2, i, :));
end
for i = 1 : 1 : 2 * N
x1(1, i) = double(x0(1, i)) / (2 ^ L - 1) * 10 - 5;
x1(2, i) = double(x0(2, i)) / (2 ^ L - 1) * 10 - 5;
temp(1, i) = x1(1, i) ^ 2 + x1(2, i) ^ 2;
y(1, i) = 0.5 - (sin(sqrt(temp(1, i))) ^ 2 - 0.5) / (1 + 0.001 * temp(1, i));
end
for i = 1 : 1 : N
[a, b] = max(y);
x2(:, i) = x0(:, b);
y(1, b) = -inf;
end
for i = 1 : 1 : N
x0(:, i) = x2(:, i);
end
end
x1