1?簡介
2 部分代碼
function [sFeat,Sf,Nf,curve] = jSSA2(feat,label,N,max_Iter,HO)
lb? ? = 0;
ub? ? = 1;
thres = 0.5;
fun = @jFitnessFunction;
dim = size(feat,2);?
X? ?= zeros(N,dim);?
for i = 1:N
for d = 1:dim
? ? X(i,d) = lb + (ub - lb) * rand();
? end
end
% Pre
fit? ?= zeros(1,N);
fitF? = inf;
curve = inf;?
t = 1;??
%---Iteration start----------------------------------------------------
while t <= max_Iter
? for i = 1:N
? ? fit(i) = fun(feat,label,(X(i,:) > thres),HO);
? ? if fit(i) < fitF
? ? ? Xf? ?= X(i,:);
? ? ? fitF = fit(i);?
? ? end
? end
? % Additional sort in the first iteration to improve the?
? % initial behavior by divide salps into leader and followers
? if t == 1
? ? [fit, idx] = sort(fit,'ascend');
? ? X? ? ? ? ? = X(idx,:);?
? end
c1 = 2 * exp(-(4 * t / max_Iter) ^ 2);
for i = 1:N
? ? if i == 1
? ? ? for d = 1:dim
? ? ? ? c2 = rand();?
? ? ? ? c3 = rand();
? ? ? ? if c3 >= 0.5?
? ? ? ? ? X(i,d) = Xf(d) + c1 * ((ub - lb) * c2 + lb);
? ? ? ? else
? ? ? ? ? X(i,d) = Xf(d) - c1 * ((ub - lb) * c2 + lb);
? ? ? ? end
? ? ? end
? ? else
? ? ? for d = 1:dim
? ? ? ? X(i,d) = (X(i,d) + X(i-1,d)) / 2;
? ? ? end
? ? end
? ? XB = X(i,:);? XB(XB > ub) = ub;? XB(XB < lb) = lb;
? ? X(i,:) = XB;
? end
? curve(t) = fitF;
? fprintf('\nIteration %d Best (SSA)= %f',t,curve(t))
? t = t + 1;
end
Pos? ?= 1:dim;
Sf? ? = Pos((Xf > thres) == 1);
Nf? ? = length(Sf);
sFeat = feat(:,Sf);?
end
3 仿真結(jié)果
?4 參考文獻(xiàn)
[1]范千、陳振健蹬竖、夏樟華. 一種基于折射反向?qū)W習(xí)機(jī)制與自適應(yīng)控制因子的改進(jìn)樽海鞘群算法[J]. 哈爾濱工業(yè)大學(xué)學(xué)報, 2020, 52(10):9.
?博主簡介:擅長智能優(yōu)化算法翅雏、神經(jīng)網(wǎng)絡(luò)預(yù)測祈秕、信號處理华烟、元胞自動機(jī)困后、圖像處理鹉梨、路徑規(guī)劃婴程、無人機(jī)等多種領(lǐng)域的Matlab仿真,有科研問題可私信交流渠脉。
**部分理論引用網(wǎng)絡(luò)文獻(xiàn)宇整,若有侵權(quán)聯(lián)系博主刪除。**
完整代碼獲取關(guān)注微信公眾號天天matlab