基于生物地理学的优化算法(BBO)用于训练多层感知器(MLP)【多种算法进行比较】(Matlab代码实现)
创始人
2024-04-10 19:12:27
0

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

来源:

多层感知器(MLP)作为使用最广泛的神经网络(NN)之一,已被应用于许多实际问题。MLP 需要针对特定应用程序进行培训,经常会遇到局部最小值、收敛速度和初始化敏感性问题。本文建议使用最近开发的基于生物地理学的优化(BBO)算法来训练MLP以减少这些问题。为了研究BBO在训练MLP中的效率,使用了五个分类数据集以及六个函数近似数据集。将结果与5种著名的启发式算法反向传播(BP)和极限学习机(ELM)在局部最小值的捕获、结果精度和收敛率方面进行了比较。结果表明,利用BBO训练MLP明显优于目前的启发式学习算法和BP。此外,结果表明,与ELM相比,BBO能够提供非常有竞争力的结果。

📚2 运行结果

🎉3 参考文献

[1]Seyedali Mirjalili (2022). Biogeography-Based Optimizer (BBO) for training Multi-Layer Perceptron (MLP) .

https://doi.org/10.1016/j.ins.2014.01.038

部分代码:

function [MinCost,Best] = ACO(ProblemFunction, DisplayFlag)

% Ant colony optimization algorithm for optimizing a general function.

% INPUTS: ProblemFunction is the handle of the function that returns 
%         the handles of the initialization, cost, and feasibility functions.
%         DisplayFlag says whether or not to display information during iterations and plot results.

if ~exist('DisplayFlag', 'var')
    DisplayFlag = true;
end

[OPTIONS, MinCost, AvgCost, InitFunction, CostFunction, FeasibleFunction, ...
    MaxParValue, MinParValue, Population] = Init(DisplayFlag, ProblemFunction);

Keep = 2; % elitism parameter: how many of the best individuals to keep from one generation to the next

% ACO parameter initialization
tau0 = 1e-6; % initial pheromone value, between 0 and 0.5
Q = 20; % pheromonone update constant, between 0 and 100
q0 = 1; % exploration constant, between 0 and 1
rhog = 0.9; % global pheromone decay rate, between 0 and 1
rhol = 0.5; % local pheromone decay rate, between 0 and 1
alpha = 1; % pheromone sensitivity, between 1 and 5
beta = 5; % visibility sensitivity, between 0 and 15
tau = tau0 * ones(MaxParValue-MinParValue+1, 1); % initial pheromone values
p = zeros(size(tau)); % allocate array for probabilities

% Begin the optimization loop
for GenIndex = 1 : OPTIONS.Maxgen
    % pheromone decay
    tau = (1 - rhog) * tau;
    % Use each solution to update the pheromone for each parameter value
    for k = 1 : OPTIONS.popsize
        Cost = Population(k).cost;
        Chrom = Population(k).chrom;
        for i = 1 : length(Chrom)
            j = Chrom(i);
            j=floor(j);
            if (Cost == 0)
                tau(j-MinParValue+1) = max(tau);
            else
                tau(j-MinParValue+1) = tau(j-MinParValue+1) + Q / Cost;
            end
        end    
    end
    % Use the probabilities to generate new solutions
    for k = Keep+1 : OPTIONS.popsize
        for j = 1 : OPTIONS.numVar
            % Generate probabilities based on pheromone amounts
            p = tau .^ alpha;
            p = p / sum(p);
            [Maxp, Maxpindex] = max(p);
            if rand < q0
                Select_index = Maxpindex;
            else
                SelectProb = p(1);
                Select_index = 1;
                RandomNumber = rand;
                while SelectProb < RandomNumber
                    Select_index = Select_index + 1;
                    if Select_index >= MaxParValue - MinParValue + 1
                        break;
                    end
                    SelectProb = SelectProb + p(Select_index);
                end
            end
            Population(k).chrom(j) = MinParValue + Select_index - 1;
            % local pheromone update
            tau(Select_index) = (1 - rhol) * tau(Select_index) + rhol * tau0;     
        end
    end
    % Make sure the population does not have duplicates. 
    Population = ClearDups(Population, MaxParValue, MinParValue);
    % Make sure each individual is legal.
    Population = FeasibleFunction(OPTIONS, Population);
    % Calculate cost
    Population = CostFunction(OPTIONS, Population);
    % Sort from best to worst
    Population = PopSort(Population);
    % Compute the average cost of the valid individuals
    [AverageCost, nLegal] = ComputeAveCost(Population);
    % Display info to screen
    MinCost = [MinCost Population(1).cost];
    AvgCost = [AvgCost AverageCost];
    if DisplayFlag
        disp(['The best and mean of Generation # ', num2str(GenIndex), ' are ',...
            num2str(MinCost(end)), ' and ', num2str(AvgCost(end))]);
    end
end
Best=Conclude(DisplayFlag, OPTIONS, Population, nLegal, MinCost);
return;

🌈4 Matlab代码实现

相关内容

热门资讯

济宁:协商议事聚合力 调解赋能... 基层治理千头万绪,矛盾纠纷化解关乎民生福祉。济宁市任城区古槐街道锚定基层治理痛点难点,以网格为基本治...
最新!《增值税法实施条例》全文 中华人民共和国国务院令  第826号 《中华人民共和国增值税法实施条例》已经2025年12月19日国...
武陟县法院:法官调解巧破僵局 ... “非常感谢法官的耐心调解,不仅帮我们拿回了拖欠的工程款,还修复了合作关系!”原告向法官连连道谢。20...
2025汽车行业年鉴|政策篇:... 记者 周信 当中国汽车年产销即将双双突破3230万辆,全球每卖出三辆车就有一辆来自中国时,“内卷”却...
货拉拉取消车贴违约金制度 货拉拉发布第二期平台规则和产品功能优化成果。根据今年7月签署的《网络货运信息交易撮合平台保障货车司机...
国家发展改革委:2026年优化... 记者今天(30日)从国家发展改革委了解到,2026年优化实施“两新”政策方案发布。 优化支持范围。设...
獐子岛(002069)披露累计... 截至2025年12月30日收盘,獐子岛(002069)报收于3.69元,较前一交易日下跌1.86%,...
《中华人民共和国增值税法实施条... 中华人民共和国增值税法实施条例 第一章 总则 第一条 根据《中华人民共和国增值税法》(以下简称增值税...
李旻律师:诈骗频发 小红书作为... 12月23日,丽江市古城区文化和旅游局采取一项公开举措,向小红书平台发出公函,指出其未能有效履行平台...
山东京鲁律师事务所2025年度... 2025年,山东京鲁律师事务所在“公平正义”、“公益慈善”与“招商引资”三大领域取得丰硕成果,推选出...