⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goss_w.m

📁 本人编辑的标准PSO算法
💻 M
字号:
% 高斯分布的累积分部函数,及其演化而来的 w调整函数

%%%%%%%% w高斯分布累积函数调节 %%%%%%%%%%
% function y = Goss_w(iter,iter_max)
clear;clc;
iter_max = 1000;

r = iter_max/10; 
% k=1; u = 0.25; %高斯分布参数调节;
k1 = 0.4; k2 = 0.4; u1 = 0.6; u2 = 0.2; %分段高斯分布参数调节;
myfun = @(t)exp( -(t-iter_max/4).^2/(2*r^2) );

%%%%%%% 测试高斯分布 %%%%%%%% 
% for iter = 1:iter_max 
%     y(iter) = k*( 1/( r*sqrt(2*pi) ) * quad( myfun,iter,10000 ) )+ u;
% end
% plot(y); grid on; title('高斯分布');
%%%%%%% 测试包含高斯分布的分段曲线 %%%%%%%%
for iter = 1:iter_max
    if iter < iter_max*0.5
        y(iter) = k1*( 1/( r*sqrt(2*pi) ) * quad( myfun,iter,10000 ) )+ u1;
    end
    if  iter_max*0.5 <= iter 
        y(iter) = k2*( 1/( r*sqrt(2*pi) ) * quad( myfun,(iter-iter_max*0.5),10000 ) )+ u2;
    end
end
plot(y); grid on; title('分段高斯分布'); 
%%%%%%%%%% 线性分段曲线测试 %%%%%%%%%%%
% k1 = 0.1;k2=0.8;
%  for iter = 1:iter_max
%     if iter < iter_max*k1
%         y(iter) = 1 - (1-0.7)*iter /(iter_max*k1);
%     end
%     if  iter_max*k1<= iter & iter <= iter_max*k2
%         y(iter) = 0.7 - (0.7-0.5)*(iter-iter_max*k1) /(iter_max*(k2-k1));
%     end
%     if  iter_max*k2 < iter
%         y(iter) = 0.5 - (0.5-0.2)*(iter-iter_max*k2) /(iter_max*(1-k2));
%     end
% end
% plot(y); grid on;;xlabel('迭代次数');ylabel('惯性权重 ω'); title('线性分段分布');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -