• 大小: 29KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-12-08
  • 语言: 其他
  • 标签: CS  ,PSO  

资源简介

CS(布谷鸟算法)、PSO(粒子群优化算法)源码中文逐行注释,很好的学习材料。

资源截图

代码片段和文件信息

tic % 计时器
%% 清空环境,准备数据
close all
clear
clc
format compact
% 载入测试数据wine其中包含的数据类别数为3;wine:178*13的矩阵wine_labes:178*1的列向量
load wine
% 选定训练集和测试集
% 将第一类的1-30第二类的60-95第三类的131-153做为训练集
train_wine = [wine(1:30:);wine(60:95:);wine(131:153:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59第二类的96-130第三类的154-178做为测试集
test_wine = [wine(31:59:);wine(96:130:);wine(154:178:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
% 数据预处理
% 数据预处理将训练集和测试集归一化到[01]区间
[mtrainntrain] = size(train_wine);
[mtestntest] = size(test_wine);
dataset = [train_wine;test_wine];

[dataset_scaleps] = mapminmax(dataset‘01);
dataset_scale = dataset_scale‘;

train_wine = dataset_scale(1:mtrain:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest): );
%% CS-SVM
time=20;
n=20; % n为巢穴数量
pa=0.25; % 被宿主发现的概率
dim = 2; % 需要寻优的参数个数
Lb=[0.010.01]; % 设置参数下界
Ub=[100100]; % 设置参数上界

% 随机初始化巢穴
nest=zeros(ndim);
for i=1:n % 遍历每个巢穴
    nest(i:)=Lb+(Ub-Lb).*rand(size(Lb)); % 对每个巢穴,随机初始化参数
end

fitness=ones(1n); % 目标函数值初始化
[fminbestnestnestfitness]=get_best_nest_svm(nestnestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine); % 找出当前最佳巢穴和参数

%% 迭代开始
for t=1:time
    new_nest=get_cuckoos(nestbestnestLbUb); % 保留当前最优解,寻找新巢穴
    [~~nestfitness]=get_best_nest_svm(nestnew_nestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine); % 找出当前最佳巢穴和参数
    new_nest=empty_nests(nestLbUbpa); % 发现并更新劣质巢穴
    % 找出当前最佳巢穴和参数
    [fnewbestnestfitness]=get_best_nest_svm(nestnew_nestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine); 
    if fnew        fmin=fnew;
        bestnest=best ;
    end
end
%% 打印参数选择结果
bestobjfun=fmin;
bestc=bestnest(1);
bestg=bestnest(2);
disp(‘打印参数选择结果‘);
str=sprintf(‘Best c = %g,Best g = %g‘bestcbestg);
disp(str)
%% 利用最佳的参数进行SVM网络训练
cmd_gwosvm = [‘-c ‘num2str(bestc)‘ -g ‘num2str(bestg)];
model_gwosvm = svmtrain(train_wine_labelstrain_winecmd_gwosvm);
%% SVM网络预测
[predict_labelaccuracy] = svmpredict(test_wine_labelstest_winemodel_gwosvm);
% 打印测试集分类准确率
total = length(test_wine_labels);
right = sum(predict_label == test_wine_labels);
disp(‘打印测试集分类准确率‘);
str = sprintf( ‘Accuracy = %g%% (%d/%d)‘accuracy(1)righttotal);
disp(str);
%% 结果分析
% 测试集的实际分类和预测分类图
figure;
hold on;
plot(test_wine_labels‘o‘);
plot(predict_label‘r*‘);
xlabel(‘测试集样本‘‘FontSize‘12);
ylabel(‘类别标签‘‘FontSize‘12);
legend(‘实际测试集分类‘‘预测测试集分类‘);
title(‘测试集的实际分类和预测分类图‘‘FontSize‘12);
grid on
snapnow
%% 显示程序运行时间
toc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-09-05 17:22  CS-SVM\
     文件        3051  2016-09-05 17:22  CS-SVM\CS_SVM_exmp.m
     文件        2716  2016-09-05 17:00  CS-SVM\CS_SVR_exmp.m
     文件        6483  2016-09-05 16:52  CS-SVM\cuckoo_ori_with_chinese_note.m
     文件         999  2016-09-05 16:49  CS-SVM\empty_nests.m
     文件         426  2016-09-05 16:49  CS-SVM\fobj.m
     文件         676  2016-09-05 17:22  CS-SVM\get_best_nest.m
     文件         698  2016-09-05 17:21  CS-SVM\get_best_nest_svm.m
     文件        1629  2016-09-05 16:49  CS-SVM\get_cuckoos.m
     文件          70  2016-09-05 16:49  CS-SVM\mymae.m
     文件          85  2016-09-05 16:49  CS-SVM\mymape.m
     文件          74  2016-09-05 16:49  CS-SVM\mymse.m
     文件         402  2016-09-05 17:13  CS-SVM\objfun.m
     文件         376  2016-09-05 16:49  CS-SVM\simplebounds.m
     文件       20168  2016-09-05 17:17  CS-SVM\wine.mat
     文件         447  2016-09-05 16:49  CS-SVM\wndspd.mat
     目录           0  2016-09-05 16:45  PSO-SVM\
     文件         426  2016-09-05 16:14  PSO-SVM\fobj.m
     文件         108  2016-09-05 15:04  PSO-SVM\fun.m
     文件          70  2016-09-05 16:14  PSO-SVM\mymae.m
     文件          85  2016-09-05 16:14  PSO-SVM\mymape.m
     文件          74  2016-09-05 16:14  PSO-SVM\mymse.m
     文件         402  2016-09-05 17:12  PSO-SVM\objfun.m
     文件        4106  2016-09-05 16:43  PSO-SVM\PSO_SVM_exmp.m
     文件        3814  2016-09-05 17:00  PSO-SVM\PSO_SVR_exmp.m
     文件        2276  2016-09-05 16:11  PSO-SVM\pso_test.m
     文件       20168  2016-09-05 16:37  PSO-SVM\wine.mat
     文件         447  2016-09-05 16:14  PSO-SVM\wndspd.mat

评论

共有 条评论