Xin Yao, Yong Liu and Guangming Lin, “Evolutionary programming made faster,” in IEEE Transactions on Evolutionary Computation, vol. 3, no. 2, pp. 82-102, July 1999, doi: 10.1109/4235.771163.

Introduction

The disadvantage of classical EP (CEP) is the low convergence on multimodal problems. The new EP proposed in this paper uses the Cauchy mutation which outperforms the Gaussian mutation.

Classical Evolutionary Programming

The self-adaptive mutation is usually better.

Basic Steps

1
2
3
4
5
function pop = Initialization(popsize,lb,ub,n)
x = lb+(ub-lb)*rand([popsize,n]);
eta = 3*ones([popsize,n]); % 初始值为3
pop = [x, eta];
end
1
2
3
4
5
6
7
function fitness = Evaluation(pop, objective, n)
popsize = size(pop,1);
fitness = zeros(1,popsize);
for k = 1:popsize
fitness(k) = objective(pop(k,1:n));
end
end
1
2
3
4
5
6
7
8
9
function child = CreateNew(parent, n, lb, ub)
tau1 = 1/(sqrt(2*sqrt(n)));
tau2 = 1/sqrt(2*n);
x = parent(1:n) + parent(n+1:end).*randn(1,n);
x = boundData(x, lb, ub);
normrand = randn;
eta = parent(n+1:end).*exp(tau2*normrand+tau1*randn(1,n));
child = [x,eta];
end
1
2
3
4
5
6
7
8
9
10
function newpop = Selection(pop, q, mu, fitness)
popsize = size(pop,1);
wins = zeros(1, popsize);
for k = 1:popsize
opponents = randperm(popsize,q);
wins(k) = sum(fitness(k)<=fitness(opponents)); % 最小化问题
end
[~, index] = sort(wins, 'descend');
newpop = pop(index(1:mu),:);
end

Fast Evolutionary Programming

[To be continued]