%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB主函数程序
% 求函数y(x,y)=3cos(xy)+x+y的最小值
% x的取值范围为[-4,4],y的取值范围为[-4,4]
% 多个局部极值的函数
% 环境:MATLAB R2018a
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function originalDE()
% 初始化参数设置
clear;
clc;
NP = 20; % 种群数量
D = 2; % 变量的维数
G = 100; % 最大进化代数
F = 0.5; % 变异算子
CR = 0.1; % 交叉算子
Xs = 4; % 变量上限
Xx = -4; % 变量下限
t0 = cputime;
x = zeros(D,NP); % 初始种群
v = zeros(D,NP); % 变异种群
u = zeros(D,NP); % 选择种群
x = rand(D,NP)*(Xs-Xx)+Xs; % 赋初值(改进使用特征值替换)
% 计算适应度函数值
for m = 1:NP
Ob(m) = func2(x(:,m));
end
trace(1) = min(Ob);
% 差分操作
for gen = 1:G
% 变异操作
% r1,r2,r3和m互不相同
for m = 1:NP
r1 = randi([1,NP],1,1);
while(r1 == m)
r1 = randi([1,NP],1,1);
end
r2 = randi([1,NP],1,1);
while(r2 == m)|(r2 == r1