%[2015]-"Monarch butterfly optimization"
% (9/12/2020)
function MBO = jMonarchButterflyOptimizationSVM(feat,label,opts)
% Parameters
lb = 0;
ub = 1;
thres = 0.5;
peri = 1.2; % migration period
p = 5/12; % ratio
Smax = 1; % maximum step
BAR = 5/12; % butterfly adjusting rate
num_land1 = 4; % number of butterflies in land 1
beta = 1.5; % levy component
if isfield(opts,'T'), max_Iter = opts.T; end
if isfield(opts,'N'), N = opts.N; end
if isfield(opts,'peri'), peri = opts.peri; end
if isfield(opts,'p'), p = opts.p; end
if isfield(opts,'Smax'), Smax = opts.Smax; end
if isfield(opts,'BAR'), BAR = opts.BAR; end
if isfield(opts,'beta'), beta = opts.beta; end
if isfield(opts,'N1'), num_land1 = opts.N1; end
if isfield(opts,'thres'), thres = opts.thres; end
% Objective function
fun = @jFitnessFunctionSVM;
% Number of dimensions
dim = size(feat,2);
% Initial
X = zeros(N,dim);
for i = 1:N
for d = 1:dim
X(i,d) = lb + (ub - lb) * rand();
end
end
% Fitness
fit = zeros(1,N);
fitG = inf;
for i = 1:N
fit(i) = fun(feat,label,(X(i,:) > thres),opts);
% Global best update
if fit(i) < fitG
fitG = fit(i);
Xgb = X(i,:);
end
end
% Pre
Xnew = zeros(N,dim);
Fnew = zeros(1,N);
curve = zeros(1,max_Iter);
curve(1) = fitG;
t = 2;
% Iterations
while t <= max_Iter
% Sort butterfly
[fit, idx] = sort(fit,'ascend');
X = X(idx,:);
% Weight factor (8)
alpha = Smax / (t ^ 2);
% {1} First land: Migration operation
for i = 1:num_land1
for d = 1:dim
% Random number (2)
r = rand() * peri;
if r <= p
% Random select a butterfly in land 1
r1 = randi([1,num_land1]);
% Update position (1)
Xnew(i,d) = X(r1,d);
else
% Random select a butterfly in land 2
r2 = randi([num_land1 + 1, N]);
% Update position (3)
Xnew(i,d) = X(r2,d);
end
end
% Boundary
XB = Xnew(i,:); XB(XB > ub) = ub; XB(XB < lb) = lb;
Xnew(i,:) = XB;
end
% {2} Second land: Butterly adjusting operation
for i = num_land1 + 1 : N
% Levy distribution (7)
dx = jLevyDistribution(beta,dim);
for d = 1:dim
if rand() <= p
% Position update (4)
Xnew(i,d) = Xgb(d);
else
% Random select a butterfly in land 2
r3 = randi([num_land1 + 1, N]);
% Update position (5)
Xnew(i,d) = X(r3,d);
% Butterfly adjusting (6)
if rand () > BAR
Xnew(i,d) = Xnew(i,d) + alpha * (dx(d) - 0.5);
end
end
end
% Boundary
XB = Xnew(i,:); XB(XB > ub) = ub; XB(XB < lb) = lb;
Xnew(i,:) = XB;
end
% {3} Combine population
for i = 1:N
% Fitness
Fnew(i) = fun(feat,label,(Xnew(i,:) > thres),opts);
% Global best update
if Fnew(i) < fitG
fitG = Fnew(i);
Xgb = Xnew(i,:);
end
end
% Merge & Select best N solutions
XX = [X; Xnew];
FF = [fit, Fnew];
[FF, idx] = sort(FF,'ascend');
X = XX(idx(1:N),:);
fit = FF(1:N);
% Save
curve(t) = fitG;
fprintf('\nIteration %d Best (MBO)= %f',t,curve(t))
t = t + 1;
end
% Select features
Pos = 1:dim;
Sf = Pos((Xgb > thres) == 1);
sFeat = feat(:,Sf);
% Store results
MBO.sf = Sf;
MBO.ff = sFeat;
MBO.nf = length(Sf);
MBO.s = curve;
MBO.f = feat;
MBO.l = label;
end
%// Levy Flight //
function LF = jLevyDistribution(beta,dim)
% Sigma
nume = gamma(1 + beta) * sin(pi * beta / 2);
deno = gamma((1 + beta) / 2) * beta * 2 ^ ((beta - 1) / 2);
sigma = (nume / deno) ^ (1 / beta);
% Parameter u & v
u = randn(1,dim) * sigma;
v = randn(1,dim);
% Step
step = u ./ abs(v) .^ (1 / beta);
LF = step;
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
智能优化特征选择|基于MBO帝王蝴蝶优化的特征选择分类算法(matlab程序) 1.程序功能已完成调试,用户可以通过一键操作生成图形和评价指标。 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 3.代码中包含详细注释,具有较强的可读性,特别适合初学者和新手。 4.在实际数据集上的效果可能较差,需要对模型参数进行微调。 CSDN:机器不会学习CL智能优化特征选择|基于MBO帝王蝴蝶优化的特征选择分类算法(matlab程序) 1.程序功能已完成调试,用户可以通过一键操作生成图形和评价指标。 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 3.代码中包含详细注释,具有较强的可读性,特别适合初学者和新手。 4.在实际数据集上的效果可能较差,需要对模型参数进行微调。 CSDN:机器不会学习CL
资源推荐
资源详情
资源评论
收起资源包目录
基于帝王蝶优化的特征选择分类算法.zip (11个子文件)
基于帝王蝶优化的特征选择分类算法
jMonarchButterflyOptimization.m 4KB
jMonarchButterflyOptimizationSVM.m 4KB
jFitnessFunctionSVM.m 1KB
data.xls 215KB
MBO_SVM.m 3KB
jfs.m 411B
MBO_KNN.m 3KB
jsvc.m 1KB
jknn.m 958B
auc.m 752B
jFitnessFunction.m 1KB
共 11 条
- 1
资源评论
机器不会学习CL
- 粉丝: 2802
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功