📄 pso_opt_fun_1.m
字号:
function y=Pso_Opt_fun_1(x,k,x0)
% 哈尔滨工业大学2006(10):1716-1718相应动态罚函数
global keyH;
% x0是已知的较好的解
%y=(x(1)-3)^2+(x(2)-3)^2+9;
%x=[1 2 3 45 98];k=1;x0=[11 2 3 45 98];%debug
[Res_Gx,Res_hx]=Pso_restrain(x);
[n,n1]=size(Res_Gx);
for i=1:n
fai(i)=max(0,Res_Gx(i));
end
for i=1:n
if fai(i)<1,
deta(i)=0.5;
else
deta(i)=2;
end
end
for i=1:n
if fai(i)<0.001,
you(i)=10;
elseif fai(i)<=0.1 & fai(i)>=0.001
you(i)=20;
elseif fai(i)<=1 & fai(i)>=0.1
you(i)=100;
else
you(i)=300;
end
end
H=0;
for i=1:n
H=H+you(i).*fai(i).^(deta(i));
end
%%%%%%%%%%%%%%%%%y1为适应函数,x0为比x好的点%%%%%%%%%%%%%%%%
%y1=0.5*(Pso_Object(x)+Pso_Object(x0)-abs(Pso_Object(x)-Pso_Object(x0)));
if keyH==1
y1=0.5*(Pso_Object(x)+Pso_Object(x0)-abs(Pso_Object(x)-Pso_Object(x0)));%改进的
else
y1=Pso_Object(x);%未改进的
end
%%%%%%%y为罚函数,k为迭代次数%%%%%%%%%%%%%%%%%
y=H*k^(2)+y1;
%%%%%%%%%%%%%%2007.8.20%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -