代码如下:
function DE(Gm,F0)
t0 = cputime;
%差分进化算法程序
%F0是变异率 %Gm 最大迭代次数
Gm = 10000;
F0 = 0.5;
Np = 100;
CR = 0.9; %交叉概率
G= 1; %初始化代数
D = 10; %所求问题的维数
Gmin = zeros(1,Gm); %各代的最优值
best_x = zeros(Gm,D); %各代的最优解
value = zeros(1,Np);
%产生初始种群
xmin = -500;
xmax = 500;
function y = f(v)
%Schwefel’s 函数
y = -sum(v.*sin(abs(v).^(1/2)));
end
X0 = (xmax-xmin)*rand(Np,D) + xmin; %产生Np个D维向量
XG = X0;
%%%%%%%%%%%%%----这里未做评价,不判断终止条件----%%%%%%%%%%%%%%%%%%%%%%%%
XG_next_1= zeros(Np,D); %初始化
XG_next_2 = zeros(Np,D);
XG_next = zeros(Np,D);
while G <= Gm
G
%%%%%%%%%%%%%%%%%%%%%%%%----变异操作----%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1:Np
%产生j,k,p三个不同的数
a = 1;
b = Np;
dx = randperm(b-a+1) + a- 1;
j = dx(1);
k = dx(2);