意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码(临床预测模型)

来源:恒创科技 编辑:恒创科技编辑部
2023-12-31 17:12:59
1 内容介绍

一种基于麻雀搜索算法优化极限学习机的风电功率预测方法,具体包括如下步骤:步骤1,确定影响风电功率的主导影响因子;步骤2,构建麻雀搜索算法优化核极限学习机预测模型,通过该模型对风电功率进行预测。本文解决了目前风电功率预测精度低,预测性能受自身参数影响较大的问题。

2 部分代码

function [fMin , bestX, Convergence_curve] = SSA(X, N, M, c, d, dim, fobj)



【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码(临床预测模型)

P_percent = 0.2; % 发现者的种群规模占总种群规模的百分比


pNum = round(N*P_percent); % 发现者数量20%


SD = pNum/2; % 警戒者数量10%


ST = 0.8; % 安全阈值

lb = c.*ones(1, dim); % 下限

ub = d.*ones(1,dim); % 上限

% 初始化

for i = 1:N

% X(i, :) = lb + (ub - lb) .* rand(1, dim);

fitness(i) = fobj(X(i, :));

end

pFit = fitness;

pX = X; % 与pFit相对应的个体最佳位置

[fMin, bestI] = min(fitness); % fMin表示全局最优解

bestX = X(bestI, :); % bestX表示全局最优位置


%% 迭代寻优

for t = 1 : M

[~, sortIndex] = sort(pFit); % 排序

[fmax, B] = max(pFit);

worst = X(B, :);

%% 发现者位置更新

r2 = rand(1);

if r2 < ST

for i = 1:pNum % Equation (3)

r1 = rand(1);

X(sortIndex(i), :) = pX(sortIndex(i), :)*exp(-(i)/(r1*M));

X(sortIndex(i), :) = Bounds(X(sortIndex(i), :), lb, ub);

fitness(sortIndex(i)) = fobj(X(sortIndex(i), :));

end

else

for i = 1:pNum

X(sortIndex(i), :) = pX(sortIndex(i), :)+randn(1)*ones(1, dim);

X(sortIndex(i), :) = Bounds(X(sortIndex(i), :), lb, ub);

fitness(sortIndex(i)) = fobj(X(sortIndex(i), :));

end

end

[~, bestII] = min(fitness);

bestXX = X(bestII, :);

%% 跟随者位置更新

for i = (pNum+1):N % Equation (4)

A = floor(rand(1, dim)*2)*2-1;

if i > N/2

X(sortIndex(i), :) = randn(1)*exp((worst-pX(sortIndex(i), :))/(i)^2);

else

X(sortIndex(i), :) = bestXX+(abs((pX(sortIndex(i), :)-bestXX)))*(A'*(A*A')^(-1))*ones(1, dim);

end

X(sortIndex(i), :) = Bounds(X(sortIndex(i), :), lb, ub);

fitness(sortIndex(i)) = fobj(X(sortIndex(i), :));

end

%% 警戒者位置更新

c = randperm(numel(sortIndex));

b = sortIndex(c(1:SD));

for j = 1:length(b) % Equation (5)

if pFit(sortIndex(b(j))) > fMin

X(sortIndex(b(j)), :) = bestX+(randn(1, dim)).*(abs((pX(sortIndex(b(j)), :) -bestX)));

else

X(sortIndex(b(j)), :) = pX(sortIndex(b(j)), :)+(2*rand(1)-1)*(abs(pX(sortIndex(b(j)), :)-worst))/(pFit(sortIndex(b(j)))-fmax+1e-50);

end

X(sortIndex(b(j)), :) = Bounds(X(sortIndex(b(j)), :), lb, ub);

fitness(sortIndex(b(j))) = fobj(X(sortIndex(b(j)), :));

end

for i = 1:N

% 更新个体最优

if fitness(i) < pFit(i)

pFit(i) = fitness(i);

pX(i, :) = X(i, :);

end

% 更新全局最优

if pFit(i) < fMin

fMin = pFit(i);

bestX = pX(i, :);

end

end

Convergence_curve(t) = fMin;

disp(['SSA: At iteration ', num2str(t), ' ,the best fitness is ', num2str(fMin)]);

end


%% 边界处理

function s = Bounds(s, Lb, Ub)

% 下界

temp = s;

I = temp < Lb;

temp(I) = Lb(I);


% 上界

J = temp > Ub;

temp(J) = Ub(J);

% 更新

s = temp;


3 运行结果

【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码_路径规划

【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码_搜索算法_02

4 参考文献

[1]杨云, 王勇. 基于麻雀搜索优化深度极限学习机的入侵检测方法[J]. 微电子学与计算机, 2022(039-006).

[2]呼梦颖, 杨霈轶, 段建东,等. 基于麻雀搜索算法优化核极限学习机的风电功率预测方法:.

部分理论引用网络文献,若有侵权联系博主删除。


上一篇: 项目目录规范(项目资料整理规范) 下一篇: 【控制】基于Matlab实现含最速跟踪微分器的自抗扰控制技术