📄 initial_param.m
字号:
%程序初始化
% flag=1:Spherical函数,表达式为f(x1,x2)=x1^2+x2^2
% flag=2:Rosenbrock函数,表达式为f(x1,x2)=100*(x1^2-x2)^2+(1-x1)^2
% flag=3:Shaffer'sf6函数,表达式为f(x1,x2)=(sin(sqrt(x1^2+x2^2))^2-0.5)/((0.001*(x1^2+x2^2)+1)^2)-0.5
% flag=4:Rastrigrin函数,表达式为f(x1,x2)=x1^2-10*cos(2*pi*x1)+10+x2^2-10*cos(2*pi*x2)+10
% flag=5:Griewank函数,表达式为f(x1,x2)=(1/4000)*(x1^2+x2^2)-cos(x1/sqrt(1))*cos(x2/sqrt(2))+1
% flag=6:Ackley函数,表达式为f(x1,x2)=-20*exp(-0.2*sqrt((x1^2+x2^2)/2))-exp((cos(2*pi*x1)+cos(2*pi*x2))/2)+20+exp(1)
% flag=7:Axis Parallel hyper-ellipsoid函数,表达式为f(x1,x2)=x1^2+2*x2^2
% flag=8:Schwefel函数,表达式为f(x1,x2)=x1*sin(sqrt(abs(x1)))+x2*sin(sqrt(abs(x2)))+418.9829*2
Fun_Select=8; %目标函数选择
x_min=-500; %搜索区域下限
x_max=500; %搜索区域上限
D=2; %搜索空间维数(未知数个数)
popsize=30; %种群规模大小
gen=100; %进化代数
w=0.7298; %惯性权重
c1=1.49445; %学习因子(个体最优导向系数)
c2=1.49445; %学习因子(全局最优导向系数)
max_velocity=0.5*(x_max-x_min); %最大速度限制(第1维)
best_fitness=inf; %初始化最优粒子适应值为无穷大
best_in_history(gen)=inf; %初始化全局历史最优解的适应值为无穷大
best_in_history(:)=inf; %初始化全局历史最优解的适应值为无穷大
%初始化种群,创建popsize行4*D+3列的0矩阵
pop(popsize,4*D+3)=0;
%pop(i,1)为x1位置分量(第1维分量)
%pop(i,2)为x2位置分量(第2维分量)
%......
%pop(i,D)为xD位置分量(第D维分量)
%pop(i,D+1)为x1速度分量
%pop(i,D+2)为x2速度分量
%......
%pop(i,2*D)为xD速度分量
%pop(i,2*D+1)为个体最优解x1位置分量
%pop(i,2*D+2)为个体最优解x2位置分量
%......
%pop(i,3*D)为个体最优解xD位置分量
%pop(i,3*D+1)为局部最优解x1位置分量
%pop(i,3*D+2)为局部最优解x2位置分量
%......
%pop(i,4*D)为局部最优解xD位置分量
%pop(i,4*D+1)为个体最优解的适应值
%pop(i,4*D+2)为当前个体适应值
%pop(i,4*D+3)为局部最优解的适应值
for i=1:popsize
for j=1:D
pop(i,j)=(x_max-x_min)*rand()+x_min; %初始化种群中的粒子位置(位于x_min与x_max之间)
pop(i,D+j)=rand(); %初始化种群微粒速度
pop(i,2*D+j)=pop(i,j); %初始状态下个体最优解(pbest)等于初始位置
pop(i,3*D+j)=pop(i,j); %初始状态下局部最优解(lbest)等于初始位置
end
pop(i,4*D+1)=inf; %初始化个体最优解的适应值为无穷大
pop(i,4*D+2)=inf; %初始化当前个体适应值为无穷大
pop(i,4*D+3)=inf; %初始化局部最优解适应值为无穷大
end
gbest(D)=0;
gbest(:)=pop(1,1:D); %全局最优初始值为种群第一个粒子的位置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -