MATLAB实战系列(七)头脑风暴优化(BSO)算法求解旅行商问题(TSP)
一 | BSO基本思想回顧
我們已經(jīng)學(xué)習(xí)過BSO是和遺傳算法類似的群智能優(yōu)化算法,但是BSO有其獨(dú)特的更新解的方式。假設(shè)現(xiàn)在種群數(shù)目為NIND,那么BSO更新解的方法如下所述:
STEP1:將種群中的NIND個(gè)個(gè)體分為m類,標(biāo)準(zhǔn)的BSO是采用k-means聚類的方法進(jìn)行分類的。在matlab可以使用kmeans函數(shù)來實(shí)現(xiàn)k-means聚類,使用方法如下:
[idx,C,sumD,D] = kmeans(X,K,'Distance','cityblock','MaxIter',1000,'Replicates',5);其中輸入數(shù)據(jù):
X——一個(gè)N行D列的矩陣,N是數(shù)據(jù)個(gè)數(shù),D是數(shù)據(jù)維數(shù)
K——將X劃分為幾類
Distance——選擇計(jì)算一個(gè)個(gè)體與聚類中心之間距離的方式(默認(rèn)為sqeuclidean)
cityblock——計(jì)算一個(gè)個(gè)體與聚類中心之間距離的一種方式
MaxIter——最大迭代次數(shù)(默認(rèn)為100)
Replicates——使用新的初始群集質(zhì)心位置重復(fù)群集的次數(shù)(默認(rèn)為1)
輸出數(shù)據(jù):
idx——N行1列的矩陣,存儲的是每個(gè)點(diǎn)的聚類標(biāo)號
C——K行D列的矩陣,存儲K個(gè)聚類中心
sumD——K行1列的矩陣,存儲當(dāng)前聚類中,所有點(diǎn)與這個(gè)聚類中心的距離之和
D——N行D列的矩陣,存儲每個(gè)點(diǎn)與所有聚類中心的距離
既然
總結(jié)
以上是生活随笔為你收集整理的MATLAB实战系列(七)头脑风暴优化(BSO)算法求解旅行商问题(TSP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tableau实战系列(六)-小面积图表
- 下一篇: tableau实战系列(七)-服务器日志