%
% Copyright (c) 2015, Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the "license.txt" for license terms.
%
% Project Code: YOEA112
% Project Title: Implementation of Firefly Algorithm (FA) in MATLAB
% Publisher: Yarpiz (www.yarpiz.com)
%
% Developer: S. Mostapha Kalami Heris (Member of Yarpiz Team)
%
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com
%
function [bestFitValue,bestSolution,cg_curve] = FA(nPop,MaxIteration,low,up,dims,fobj)
%% Problem Definition
gamma=1; % Light Absorption Coefficient
beta0=2; % Attraction Coefficient Base Value
alpha=0.2; % Mutation Coefficient
alpha_damp=0.98; % Mutation Coefficient Damping Ratio
CostFunction=fobj; % Cost Function
nVar=dims; % Number of Decision Variables
VarSize=[1 nVar]; % Decision Variables Matrix Size
VarMin=low; % Decision Variables Lower Bound
VarMax= up; % Decision Variables Upper Bound
%% Firefly Algorithm Parameters
MaxIt=MaxIteration; % Maximum Number of Iterations
% nPop=25; % Number of Fireflies (Swarm Size)
% gamma=1; % Light Absorption Coefficient
%
% beta0=2; % Attraction Coefficient Base Value
%
% alpha=0.2; % Mutation Coefficient
%
% alpha_damp=0.98; % Mutation Coefficient Damping Ratio
delta=0.05*(VarMax-VarMin); % Uniform Mutation Range
m=2;
if isscalar(VarMin) && isscalar(VarMax)
dmax = (VarMax-VarMin)*sqrt(nVar);
else
dmax = norm(VarMax-VarMin);
end
%% Initialization
% Empty Firefly Structure
firefly.Position=[];
firefly.Cost=[];
% Initialize Population Array
pop=repmat(firefly,nPop,1);
% Initialize Best Solution Ever Found
BestSol.Cost=inf;
% Create Initial Fireflies
for i=1:nPop
pop(i).Position=unifrnd(VarMin,VarMax,VarSize);
pop(i).Cost=CostFunction(pop(i).Position);
if pop(i).Cost<=BestSol.Cost
BestSol=pop(i);
end
end
% Array to Hold Best Cost Values
BestCost=zeros(MaxIt,1);
%% Firefly Algorithm Main Loop
for it=1:MaxIt
disp(['第',num2str(it),'次迭代'])
newpop=repmat(firefly,nPop,1);
for i=1:nPop
newpop(i).Cost = inf;
for j=1:nPop
if pop(j).Cost < pop(i).Cost
rij=norm(pop(i).Position-pop(j).Position)/dmax;
beta=beta0*exp(-gamma*rij^m);
% e=delta*unifrnd(-1,+1,VarSize);
e=delta.*randn(VarSize);
newsol.Position = pop(i).Position ...
+ beta*rand(VarSize).*(pop(j).Position-pop(i).Position) ...
+ alpha*e;
newsol.Position=max(newsol.Position,VarMin);
newsol.Position=min(newsol.Position,VarMax);
newsol.Cost=CostFunction(newsol.Position);
if newsol.Cost <= newpop(i).Cost
newpop(i) = newsol;
if newpop(i).Cost<=BestSol.Cost
BestSol=newpop(i);
end
end
end
end
end
% Merge
pop=[pop
newpop]; %#ok
% Sort
[~, SortOrder]=sort([pop.Cost]);
pop=pop(SortOrder);
% Truncate
pop=pop(1:nPop);
% Store Best Cost Ever Found
BestCost(it)=BestSol.Cost;
% Show Iteration Information
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);
% Damp Mutation Coefficient
alpha = alpha*alpha_damp;
end
%% Results
bestFitValue = BestSol.Cost;
bestSolution = BestSol.Position;
cg_curve = BestCost;
end
没有合适的资源?快使用搜索试试~ 我知道了~
萤火虫算法(FA)优化BP神经网络分类预测,FA-BP分类预测,多特征输入模型 多特征输入单输出的二分类及多分类模型 程序内
共5个文件
m:4个
xlsx:1个
需积分: 0 2 下载量 137 浏览量
2023-09-15
11:40:54
上传
评论
收藏 75KB ZIP 举报
温馨提示
萤火虫算法(FA)优化BP神经网络分类预测,FA-BP分类预测,多特征输入模型。 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。 程序语言为matlab,程序可出分类效果图,迭代优化图,混淆矩阵图。
资源推荐
资源详情
资源评论
收起资源包目录
0.1 FA-BP分类 - 2.zip (5个子文件)
initialization.m 469B
getObjValue.m 1KB
main.m 1KB
数据集.xlsx 73KB
FA.m 4KB
共 5 条
- 1
资源评论
智能算法及其模型预测
- 粉丝: 1840
- 资源: 788
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功