✅作者简介：热爱科研的Matlab仿真开发者，修心和技术同步精进，matlab项目合作可私信。

🍎个人主页：Matlab科研工作室

🍊个人信条：格物致知。

## ⛄ 部分代码

while t<Max_iter

t

for i=1:size(Positions,1)

% Return back the search agents that go beyond the boundaries of the search space

Flag4ub=Positions(i,:)>ub;

Flag4lb=Positions(i,:)<lb;

Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;

% Calculate objective function for each search agen

gam=Positions(i,1);

sig2=Positions(i,2);

model=initlssvm(train_x,train_yy,type,gam,sig2,kernel,proprecess);

model=trainlssvm(model);

%求出训练集和测试集的预测值

[train_predict_y,zt,model]=simlssvm(model,train_x);

[test_predict_y,zt,model]=simlssvm(model,test_x);

%预测数据反归一化

train_predict=postmnmx(train_predict_y ,miny,maxy);%预测输出

test_predict=postmnmx(test_predict_y ,miny,maxy); %测试集预测值

%计算均方差

trainmse=sum((train_predict-train_y).^2)/length(train_y);

testmse=sum((test_predict-test_y).^2)/length(test_y);

fitness=trainmse; %以测试集的预测值计算的均方差为适应度值

if fitness<Leader_score % Change this to > for maximization problem

YPred_best=test_predict;

end

end

a=-t*((2)/Max_iter); % a decreases linearly fron 2 to 0 in Eq. (2.3)

% a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12)

a2=t*((-1)/Max_iter);

% Update the Position of search agents

for i=1:size(Positions,1)

r1=rand(); % r1 is a random number in [0,1]

r2=rand(); % r2 is a random number in [0,1]

A=2*a*r1-a;  % Eq. (2.3) in the paper

C=2*r2;      % Eq. (2.4) in the paper

b=1;               %  parameters in Eq. (2.5)

l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)

p = rand();        % p in Eq. (2.6)

for j=1:size(Positions,2)

if p<0.5

if abs(A)>=1

D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)

Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)

elseif abs(A)<1

end

elseif p>=0.5

% Eq. (2.5)

end

end

end

t=t+1;

end

## ⛄ 参考文献

[1]郝可青, 吕志刚, 邸若海,等. 基于鲸鱼算法优化长短时记忆神经网络的锂电池剩余寿命预测[J]. 科学技术与工程, 2022, 22(29):9.

[2]彭 燕,刘宇红,张荣芬. 基于LSTM的股票价格预测建模与分析[J]. 计算机工程与应用(209-212).