ABC-SVM算法,逐行代碼注釋簡單易懂,帶其他資源缺的那個(gè)目標(biāo)函數(shù)的設(shè)計(jì),沒錯(cuò)就是你找的那個(gè),當(dāng)時(shí)我也找了好久
-
大小: 14KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-04
- 語言: 其他
- 標(biāo)簽: ABC??SVM??蜂群算法??目標(biāo)函數(shù)??
資源簡介
逐行代碼注釋簡單易懂,帶其他資源缺的那個(gè)目標(biāo)函數(shù)的設(shè)計(jì),沒錯(cuò)就是你找的那個(gè),當(dāng)時(shí)我也找了好久

代碼片段和文件信息
tic?%?計(jì)時(shí)器
%%?清空環(huán)境,準(zhǔn)備數(shù)據(jù)
close?all
clear
clc
format?compact
%?載入測試數(shù)據(jù)wine其中包含的數(shù)據(jù)類別數(shù)為3;wine:178*13的矩陣wine_labes:178*1的列向量
load?wine
%?選定訓(xùn)練集和測試集
%?將第一類的1-30第二類的60-95第三類的131-153做為訓(xùn)練集
train_wine?=?[wine(1:30:);wine(60:95:);wine(131:153:)];
%?相應(yīng)的訓(xùn)練集的標(biāo)簽也要分離出來
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:)];
%?相應(yīng)的測試集的標(biāo)簽也要分離出來
test_wine_labels?=?[wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
%?數(shù)據(jù)預(yù)處理
%?數(shù)據(jù)預(yù)處理將訓(xùn)練集和測試集歸一化到[01]區(qū)間
[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):?);
%%?%%%%%%%%%%%%%用ABC算法優(yōu)化SVM中的參數(shù)c和g開始%%%%%%%%%%%%%%%%%%%%
%%?參數(shù)初始化
NP=20;?%?蜂群規(guī)模
FoodNumber=NP/2;?%?蜜源(解)數(shù)量
limit=100;?%?當(dāng)有蜜源連續(xù)沒被更新的次數(shù)超過limit時(shí),該蜜源將被重新初始化
maxCycle=10;?%?最大迭代次數(shù)
%?待優(yōu)化參數(shù)信息
D=2;?%?待優(yōu)化參數(shù)個(gè)數(shù),次數(shù)為c和g兩個(gè)
ub=ones(1D)*100;?%?參數(shù)取值上界,此處將c和g的上界設(shè)為100
lb=ones(1D)*(0.01);?%?參數(shù)取值下界,此處將c和g的下界設(shè)為0.01
runtime=2;?%?可用于設(shè)置多次運(yùn)行(讓ABC算法運(yùn)行runtime次)以考察程序的穩(wěn)健性
BestGlobalMins=ones(1runtime);?%?全局最小值初始化,這里的優(yōu)化目標(biāo)為SVM預(yù)測結(jié)果中的平均平方誤差(MSE),初始化為最差值1
BestGlobalParams=zeros(runtimeD);?%?用于存放ABC算法優(yōu)化得到的最優(yōu)參數(shù)
for?r=1:runtime?%?運(yùn)行ABC算法runtime次
????%?初始化蜜源
????Range?=?repmat((ub-lb)[FoodNumber?1]);
????Lower?=?repmat(lb?[FoodNumber?1]);
????Foods?=?rand(FoodNumberD)?.*?Range?+?Lower;
????%?計(jì)算每個(gè)蜜源(解)得目標(biāo)函數(shù)值,objfun為計(jì)算SVM預(yù)測的平均平方誤差(MSE)的函數(shù),根據(jù)自己的實(shí)際問題變異目標(biāo)函數(shù)即可
????ObjVal=ones(1FoodNumber);?
????for?k?=?1:FoodNumber
????????ObjVal(k)?=?objfun(Foods(k:)train_wine_labelstrain_winetest_wine_labelstest_wine);
????end
????Fitness=calculateFitness(ObjVal);?%?計(jì)算適應(yīng)度函數(shù)值
????
????trial=zeros(1FoodNumber);?%?用于記錄第i個(gè)蜜源有連續(xù)trail(i)次沒被更新過
????%?標(biāo)記最優(yōu)蜜源(解)
????BestInd=find(ObjVal==min(ObjVal));?
????BestInd=BestInd(end);
????GlobalMin=ObjVal(BestInd);?%?更新全局最優(yōu)目標(biāo)函數(shù)值
????GlobalParams=Foods(BestInd:);?%?更新全局最優(yōu)參數(shù)為最優(yōu)蜜源
????iter=1;?%?迭代開始
????while?((iter?<=?maxCycle))?%?循環(huán)條件
%%%%%%%%%%%%%%%%%%%%%引領(lǐng)蜂搜索解的過程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
????????for?i=1:(FoodNumber)?%?遍歷每個(gè)蜜源(解)
????????????Param2Change=fix(rand*D)+1;?%?隨機(jī)選擇需要變異的參數(shù)
????????????neighbour=fix(rand*(FoodNumber))+1;?%?隨機(jī)選擇相鄰蜜源(解)以準(zhǔn)備變異
????????????%?需要保證選擇的相鄰蜜源不是當(dāng)前蜜源(i)
????????????while(neighbour==i)
????????????????neighbour=fix(rand*(FoodNumber))+1;
????????????end
????????????sol=Foods(i:);?%?提取當(dāng)前蜜源(解)對應(yīng)的的參數(shù)
????????????%?參數(shù)變異得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij})
????????????sol(Param2Change)=Foods(iParam2Change)+(Foods(iParam2Change)-Foods(neighbourParam2Change))*(rand-0.5)*2;
????????????%?確保參數(shù)取值范圍不越界
????????????ind=find(sol
????????????sol(ind)=lb(ind);
????????????ind=find(sol>ub);
????????????sol(ind)=ub(ind);
????????????%?計(jì)算變異后蜜源的目標(biāo)函數(shù)值和適應(yīng)度函數(shù)值
????????????ObjValSol=objfun(sol
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-02-27?23:46??2016.09.04ABC-SVM\
?????文件????????8168??2016-09-04?17:10??2016.09.04ABC-SVM\ABC_SVM_exmp.m
?????文件????????7867??2016-09-04?17:10??2016.09.04ABC-SVM\ABC_SVR_exmp.m
?????文件?????????182??2008-06-09?19:54??2016.09.04ABC-SVM\calculateFitness.m
?????文件?????????430??2016-09-04?16:56??2016.09.04ABC-SVM\fobj.m
?????文件??????????70??2016-09-04?10:55??2016.09.04ABC-SVM\mymae.m
?????文件??????????85??2016-09-04?10:55??2016.09.04ABC-SVM\mymape.m
?????文件??????????74??2016-09-04?10:55??2016.09.04ABC-SVM\mymse.m
?????文件?????????407??2018-02-28?11:05??2016.09.04ABC-SVM\objfun.m
?????文件???????20168??2016-09-04?09:25??2016.09.04ABC-SVM\wine.mat
?????文件?????????447??2016-09-04?10:41??2016.09.04ABC-SVM\wndspd.mat
評論
共有 條評論