1 简介
工业过程常含有显著的非线性,时变等复杂特性,传统的核极限学习机有时无法充分利用数据信息,所建软测量模型预测性能较差.为了提高核极限学习机的泛化能力和预测精度,提出一种蝴蝶算法结合核极限学习机软测量建模方法.通过蝴蝶优化极限学习机的惩罚系数和核宽,得到一组最优超参数;最后将该方法应用于脱丁烷塔过程软测量建模中.仿真结果表明,优化后的核极限学习机模型预测精度有明显的提高,验证了所提方法不仅是可行的,而且具有良好的预测精度和泛化性能.
2 部分代码
function [fmin, best_pos, Curve] = BOA(X, N, Max_iter, lb, ub, dim, fobj)
%% BOA参数
p = 0.8; % 开关概率
power_exponent = 0.1;
sensory_modality = 0.01;
for i = 1:N
fitness(i) = fobj(X(i, :));
end
% 最优解
[fmin, I] = min(fitness);
best_pos = X(I, :);
S = X;
%% 迭代
for t = 1:Max_iter
for i = 1:N
% 计算与目标函数相关的每只蝴蝶的香味
Fnew = fobj(S(i, :));
FP = (sensory_modality*(Fnew^power_exponent));
% 全局或局部搜索
if rand < p
dis = rand * rand * best_pos - X(i, :); % Eq. (2) in paper
S(i, :) = X(i, :)+dis*FP;
else
% 在附近随机找蝴蝶
epsilon = rand;
JK = randperm(N);
dis = epsilon*epsilon*X(JK(1), :)-X(JK(2), :);
S(i, :) = X(i, :)+dis*FP; % Eq. (3) in paper
end
% 边界处理
S(i, :) = simplebounds(S(i, :), lb, ub);
% 新的个体适应度值
Fnew = fobj(S(i, :)); % Fnew represents new fitness values
% If fitness improves (better Xutions found), update then
if Fnew <= fitness(i)
X(i, :) = S(i, :);
fitness(i) = Fnew;
end
% 更新当前全局最优解
if Fnew <= fmin
best_pos = S(i, :);
fmin = Fnew;
end
end
Curve(t) = fmin;
% 更新感觉因子
sensory_modality = sensory_modality_NEW(sensory_modality, Max_iter);
disp(['BOA: At iteration ', num2str(t), ' ,the best fitness is ', num2str(Curve(t))]);
end
%% 边界限制函数
function s = simplebounds(s, Lb, Ub)
s = max(s, Lb);
s = min(s, Ub);
end
function y=sensory_modality_NEW(x, Ngen)
y = x+(0.025/(x*Ngen));
end
end
3 仿真结果
4 参考文献
[1]刘振男、杜尧、韩幸烨、和鹏飞、周正模、曾天山. 基于遗传算法优化极限学习机模型的干旱预测——以云贵高原为例[J]. 人民长江, 2020, 51(8):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。