91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .m
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-09
  • 語言: Matlab
  • 標簽: matlab??

資源簡介

這是自適應粒子群算法的matlab源代碼,十分經典好用

資源截圖

代碼片段和文件信息

function?[pso?t?i]?=?apso(max_genpop_sizepart_size)
%???FUNCTION?PSO??--------USE?Particle?Swarm?Optimization?Algorithm

%clear?all
t=cputime;
D_max?=?0.25;
D_min?=?0.001;
E_max?=?2;
E_min?=?0.25;
Pm?=?0.005;
%pop_size?=?30;??????????%???pop_size?種群大小
%part_size?=?30;??????????%???part_size?粒子大小?
Q??=??10*part_size;???????????????????%???劃分的塊數
gbest?=?zeros(1part_size+1);????????????%???gbest?當前搜索到的最小的值
%max_gen?=?30;??????????%???max_gen?最大迭代次數
region=zeros(part_size2);??%???設定搜索空間范圍
%region=[-300300;-300300;-300300;-300300;-300300;-300300;-300300;-300300;-300300;-300300];??????????%區域??????????????????????????????????????????????????????????????????????????????????????**每一維設定不同范圍
%?region=[-3030;-3030;-3030;-3030;-3030;-3030;-3030;-3030;-3030;-3030];??
?%region=[-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33];
?region=[-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33;-33];
mode=‘exploit‘;
rand(‘state‘sum(100*clock));???%???重置隨機數發生器狀態
arr_present?=?ini_pos(pop_sizepart_sizeregion);???%???present?當前位置隨機初始化rand()的范圍為0~1
v_max?=?1;???
v=ini_v(pop_sizepart_sizev_max);?????????????%???初始化當前速度


pbest?=?zeros(pop_sizepart_size+1);??????%???pbest?粒子以前搜索到的最優值,最后一列包括這些值的適應度
w_max?=?0.7;????????????????????????????%???w_max?權系數最大值
w_min?=?0.05;
??????????%??????????????????????????????????????????????????????????????????????????????????????????**最大速度為粒子的范圍寬度
c1?=?2;???????????????????%???學習因子
c2?=?2;???????????????????%???學習因子
best_record?=?zeros(1max_gen);?????%???best_record記錄最好的粒子的適應度。
%??————————————————————————
%???計算原始種群的適應度及初始化
%??————————————————————————
arr_present(:end)=ini_fit(arr_presentpop_sizepart_size);
pbest?=?arr_present;????????????????????????????????????????%初始化各個粒子最優值
[best_value?best_index]?=?min(arr_present(:end));?????????%初始化全局最優,即適應度為全局最小的值,根據需要也可以選取為最大值
gbest?=?arr_present(best_index:);
%?i=1;
%?while?(i<=max_gen&abs(gbest(end))>0.01)
%???i=i+1;
??for?i=1:max_gen??
????D?=?D_caculation(arr_presentregion);
????E?=?E_caculation(arr_presentQpop_sizeregion);
????if?D?????????mode=‘explore‘;
????end
????if?D?>?D_max?&&?E>E_max
????????mode=‘exploit‘;
????end
????

???
???if?mode?==?‘exploit‘
???????w?=?D*(w_max-w_min)/(D_max-D_min)+(D_max*w_min-D_min*w_max)/(D_max-D_min);
??????for?j=1:pop_size
???????
?????????????v(j:)?=?w.*v(j:)+c1.*rand.*(pbest(j1:part_size)-arr_present(j1:part_size))...
????????????+c2.*rand.*(gbest(1:part_size)-arr_present(j1:part_size));????????????????????????%??粒子速度更新?(a)

????????%???判斷v的大小,限制v的絕對值小于v_max————————————————————————————
????????c?=?find(abs(v)>v_max);??????????????????????????????????????????????????????????????????????????????????????????????%**最大速度設置,粒子的范圍寬度
????????v(c)?=?sign(v(c))*v_max;???

????????arr_present(j1:part_size)?=?arr_p

評論

共有 條評論