时序预测 |
您所在的位置:网站首页 › 时间序列分解算法-房地产行业的数学建模 › 时序预测 |
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 ⛄ 内容介绍针对短期电力负荷预测目前存在的难点与问题,提出了一种基于麻雀搜索优化的门控循环单元预测方法.首先,输入门控循环单元组合网络对内部特征进行学习,并输出预测时间负荷值;最后,使用麻雀搜索算法对网络超参数进行组合优化,以验证集损失最小为目标函数获取最优化网络结构超参数.该方法实现了原始输入序列结构权重分配与组合网络超参数的最优化.算例分析表明,所提方法比传统预测模型精确度更高. ⛄ 部分代码function [fMin , bestX, Convergence_curve] = SSA( N, M, lb, ub, dim, fobj) X=initialization(N,dim,ub,lb); P_percent = 0.2; % 发现者的种群规模占总种群规模的百分比 pNum = round(N*P_percent); % 发现者数量20% SD = pNum/2; % 警戒者数量10% ST = 0.8; % 安全阈值 % 初始化 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; ⛄ 运行结果 ⛄ 参考文献[1] 左思雨, 张冰, 赵强,等. 基于麻雀搜索算法优化的GRU的船舶运动姿态的预测方法:, CN113238666A[P]. 2021. [2] 张宏峰, 倪受东, 赵亮,等. 基于麻雀搜索算法的摄像机标定优化方法[J]. 激光与光电子学进展, 2021(022):058. [3] 刘可真阮俊枭赵现平刘果. 基于麻雀搜索优化的Attention-GRU短期负荷预测方法[J]. 电力系统及其自动化学报, 2022, 34(4):99-106. [4] 左思雨, 赵强, 张冰,等. 基于VMD-SSA-GRU的船舶运动姿态预测[J]. 舰船科学技术, 2022, 44(23):7. ⛳️ 代码获取关注我 ❤️部分理论引用网络文献,若有侵权联系博主删除 ❤️ 关注我领取海量matlab电子书和数学建模资料 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |