多输入多输出 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多输入多输出预测

目录

预测效果



基本介绍

多输入多输出 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多输入多输出预测

1.data为数据集,10个输入特征,3个输出变量。

2.main.m为主程序文件。

3.命令窗口输出MBE、MAE和R2,可在下载区获取数据和程序内容。

程序设计

  • 完整程序和数据下载方式:私信博主回复Matlab实现ABC-BP人工蜂群算法优化BP神经网络多输入多输出预测
clike 复制代码
function [bestcord,bestpos,BestCost] = ABC(nPop,MaxIt,VarMin,VarMax,nVar,fobj)

% MaxIt = 200;                  % 最大迭代次数
% nPop = 100;                   % 蜂群大小
VarSize = [1 nVar];     % 变量矩阵
nOnlooker = nPop;             % 侦察蜂个数
L = round(0.6*nVar*nPop);     % 探索极值限制参数
a = 1;                        % 加速度系数上限


%% Initialization
%% 初始化
% 置空蜜蜂矩阵
empty_bee.Position = [];
empty_bee.Cost = [];
% 初始化蜂群数组
pop = repmat(empty_bee, nPop, 1);
% 初始化最优解
BestSol.Cost = inf;
% 产生初始种群
for i = 1:nPop
    pop(i).Position = unifrnd(VarMin, VarMax, VarSize);
    pop(i).Cost = fobj(pop(i).Position);
    if pop(i).Cost <= BestSol.Cost
        BestSol = pop(i);
    end
end
% 丢解计数器
C = zeros(nPop, 1);
% 保存最优函数值的数组
BestCost = zeros(MaxIt, 1);

%% ABC迭代
for it = 1:MaxIt
    % 引领蜂
    for i = 1:nPop
        % 随机选择不等于i的k
        K = [1:i-1 i+1:nPop];
        k = K(randi([1 numel(K)]));
        % 定义加速度系数
        phi = a*unifrnd(-1, +1, VarSize);
        % 新的蜜蜂位置
        newbee.Position = pop(i).Position+phi.*(pop(i).Position-pop(k).Position);
        % 边界处理
        newbee.Position = max(newbee.Position, VarMin);
        newbee.Position = min(newbee.Position, VarMax);
        % 新的蜜蜂函数值
        newbee.Cost = fobj(newbee.Position);
        % 比较
        if newbee.Cost <= pop(i).Cost
            pop(i) = newbee;
        else
            C(i) = C(i)+1;
        end
    end
    % 计算适应度值和选择概率
    F = zeros(nPop, 1);

往期精彩

MATLAB实现RBF径向基神经网络多输入多输出预测
MATLAB实现BP神经网络多输入多输出预测
MATLAB实现DNN神经网络多输入多输出预测

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/116377961

[2] https://blog.csdn.net/kjm13182345320/article/details/127931217

[3] https://blog.csdn.net/kjm13182345320/article/details/127894261

相关推荐
利刃大大2 小时前
【回溯+剪枝】找出所有子集的异或总和再求和 && 全排列Ⅱ
c++·算法·深度优先·剪枝
Rachela_z3 小时前
代码随想录算法训练营第十四天| 二叉树2
数据结构·算法
细嗅蔷薇@3 小时前
迪杰斯特拉(Dijkstra)算法
数据结构·算法
追求源于热爱!3 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
ElseWhereR3 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法
Smark.4 小时前
Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
算法
S-X-S4 小时前
算法总结-数组/字符串
java·数据结构·算法
Joyner20185 小时前
python-leetcode-从中序与后序遍历序列构造二叉树
算法·leetcode·职场和发展
因兹菜5 小时前
[LeetCode]day9 203.移除链表元素
算法·leetcode·链表
LNsupermali5 小时前
力扣257. 二叉树的所有路径(遍历思想解决)
算法·leetcode·职场和发展