1 简介
本文提出了一种萤火虫算法改进的支持向量机数据分类模型。
自然界中多数种类的萤火虫都有发光的特性,基本萤火虫算法即是通过模拟自然界中萤火虫的发光行为构建的智能优化算法,其假设:
(1)算法中的萤火虫没有性别之分,每 一 只 萤火虫都可被其他萤火虫个体吸引。
(2)萤火虫自身的光亮程度与对其他萤火虫的吸引程度成正比例关系,并且,随着距离增大其吸引程度减少。
(3)萤火虫亮度与优化目标函数的性质相关。在基本萤火虫算法中,搜索和优化过程模拟的是萤火虫个体的吸引和移动过程,用优化目标函数值的大小来衡量萤火虫个体位置的优劣,个体位置的优胜劣汰过程也即求解算法过程中可行解的巡游过程。利用萤 火 虫 算 法 求 解 过 程 中 的 关 键 参 数 定义:



2 部分代码
%% 清空环境变量clc;clear;%% 初始化参数domx = [-3, 3; -3, 3]; % 定义域rho = 0.9; % 荧光素挥发因子gamma = 0.1; % 适应度提取比例beta = 0.58; % 邻域变化率nt = 6; % 邻域阀值(邻域萤火虫数)s = 0.03; % 步长iot0 = 400; % 荧光素初始浓度rs = 3; % 感知半径r0 = 3; % 决策半径m = size(domx, 1); % 函数空间维数n = 50; % 萤火虫数量gaddress = zeros(n, m); % 分配萤火虫地址空间gvalue = zeros(n, 1); % 分配适应度存放空间ioti = zeros(n, 1); % 分配荧光素存放空间rdi = zeros(n, 1); % 分配萤火虫决策半径存放空间%% 萤火虫常量初始化% 初始化地址for i = 1:mgaddress(:, i) = domx(i, 1)+(domx(i, 2)-domx(i, 1))*rand(n, 1);end% 初始化荧光素浓度ioti(:, 1) = iot0;% 初始化决策半径rdi(:, 1) = r0;iter_max = 500; % 最大迭代次数t = 1; % 迭代计数器yy = zeros(iter_max, 1); % 各代最优解%% 迭代寻优while t <= iter_max% 更新荧光素浓度ioti = (1-rho)*ioti+gamma*fun(gaddress);% 各萤火虫移动过程开始for i = 1:n% 决策半径内找更优点Nit = []; % 存放萤火虫序号for j = 1:nif norm(gaddress(j, :)-gaddress(i, :)) < rdi(i) && ioti(i, 1) < ioti(j, 1)Nit(numel(Nit)+1) = j;endend% 找下一步移动的点开始if ~isempty(Nit)Nitioti = ioti(Nit, 1); % 选出Nit荧光素SumNitioti = sum(Nitioti); % Nit荧光素和Molecular = Nitioti-ioti(i, 1); % 分子Denominator = SumNitioti-ioti(i, 1); % 分母Pij = Molecular./Denominator; % 计算Nit各元素被选择概率Pij = cumsum(Pij); % 累计Pij = Pij./Pij(end); % 归一化Pos = find(rand < Pij); % 确定位置j = Nit(Pos(1)); % 确定j的位置% 萤火虫i向j移动一小步gaddress(i, :) = gaddress(i, :)+s*(gaddress(j, :)-gaddress(i, :))/norm(gaddress(j, :)-gaddress(i, :));% 边界处理(限制范围)gaddress(i, :) = min(gaddress(i, :), domx(1, 2));gaddress(i, :) = max(gaddress(i, :), domx(1, 1));% 更新决策半径rdi(i) = rdi(i)+beta*(nt-length(Nit));if rdi(i, 1) < 0rdi(i, 1) = 0;endif rdi(i, 1) > rsrdi(i, 1) = rs;endendend% 每代最优解存入yy数组内yy(t) = max(fun(gaddress));% 迭代次数+1t = t+1;end%% 结果显示gvalue = fun(gaddress); % 求各个萤火虫的值disp('最大值为:')num = find(gvalue == max(gvalue)); % 最大值序号MaxValue = max(gvalue)disp('最优解为:')BestAddress = gaddress(num, :)figure;plot(yy, 'r', 'linewidth', 2)xlabel ('迭代次数'); ylabel( '函数值');title( 'GSO算法各代最优解变化');
3 仿真结果

4 参考文献
[1]王玺, 张学东, 司风琪,等. 基于最小二乘支持向量机和萤火虫算法的开式循环水系统优化[J]. 动力工程学报, 2015, 35(3):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
该文介绍了一种结合萤火虫算法与支持向量机(SVM)的数据分类模型。算法模拟萤火虫的发光行为进行优化搜索,通过调整萤火虫的吸引规则和移动策略来提升SVM的分类性能。代码实现中定义了算法参数,进行了迭代寻优,并展示了迭代过程中的最优解变化。最终找到的最优解和仿真结果证明了该方法的有效性。
603

被折叠的 条评论
为什么被折叠?



