谢菲尔德遗传算法工具箱
謝菲爾德遺傳算法工具箱的使用
- 安裝工具箱
- 下載工具箱
- 添加路徑
- 標(biāo)題
- 遺傳算法函數(shù)
- ranking()函數(shù)
- select()函數(shù)
- bs2rv()函數(shù)
- 小結(jié)
安裝工具箱
謝菲爾德遺傳算法工具箱作為matlab的一個函數(shù)庫,可以簡單實現(xiàn)遺傳算法。我一開始學(xué)習(xí)了粒子群優(yōu)化算法和鯨魚優(yōu)化算法等群智能優(yōu)化算法,都是在整數(shù)域上,依靠不同的算子對種群中的每個agent進(jìn)行迭代,也有接觸過差分進(jìn)化算法這類遺傳算法的改進(jìn)算法。初步了解遺傳算法之后,便一直思考遺傳算法中二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換問題,因為涉及到十進(jìn)制的小數(shù)部分和二進(jìn)制的位數(shù)等方面。在謝菲爾德工具箱中,存在一個bs2rv()函數(shù),該內(nèi)置函數(shù)包含一個特定的算法,使得我們按照該算法需要的參數(shù)可以輕松將二進(jìn)制數(shù)組轉(zhuǎn)化為特定區(qū)間的十進(jìn)制數(shù),其中的原理也沒有特別了解。
下載工具箱
原來的下載鏈接是由官方免費提供的,但是目前是被404的,需要的話可以私信我,原來的官網(wǎng)就是下面這個。
http://codem.group.shef.ac.uk/index.php/ga-toolbox
(1)從網(wǎng)盤里面下出來,為了好記加了中文,下載下來可以把前面的中文刪了。
(2)解壓出來放在matlab管理工具的文件夾(toolbox)里。P.S我用的是matlab2012a
添加路徑
在matlab中找到下面的文件夾,把gatbx 添加到所有文件的路徑中,我的這個matlab每次啟動都需要添加一下.
標(biāo)題
遺傳算法函數(shù)
遺傳算法是一種群智能優(yōu)化算法。在種群中,通過對每個粒子進(jìn)行選擇,交叉,變異三個操作進(jìn)行迭代。下面介紹幾個稍微難理解的函數(shù),對于幾個函數(shù),我的理解也可能存在偏差。
ranking()函數(shù)
ranking()函數(shù)有三種調(diào)用格式
1.FitnV = ranking(ObjV)
2.FitnV = ranking(ObjV,RFun)
3.FitnV = ranking(ObjV,RFun,SUBPOP)
第一種格式
ObjV是object value,儲存一個向量。返回一個線性排序,壓差=2的序列,這里線性排序和壓差為2是默認(rèn)屬性。宏觀上看,返回一個**[0,2]的向量,ObjV越大對應(yīng)的返回值越小。這個返回值會在select函數(shù)**中被調(diào)用.
第二種格式
Rfun要傳入一個兩位的數(shù)組,
Rfun(1)中,對線性排序,Rfun(1)需要控制在[1,2],就我理解,壓差是一種壓縮模式,Rfun(1)=2,函數(shù)的返回值會控制在[0,2],Rfun(1)=1.5,返回值會控制在[0.5,1.5].
Rfun(2)中,Rfun(2)=1為非線性排序,Rfun(2)=0為線性排序。對于線性排序和非線性排序的了解不多,ranking()函數(shù)默認(rèn)為線性排序。
第三種格式
默認(rèn)SUBPOP = 1,SUBPOP定義了ObjV中子種群的數(shù)量,這個參數(shù)沒有過多研究。
select()函數(shù)
從種群中選擇個體
1.SelCh = select(SEL_F,Chrom,FitnV)
2.SelCh = select(SEL_F,Chrom,FitnV,GGAP)
3.SelCh = select(SEL_F,Chrom,FitnV,GGAP,SUBPOP)
第一種格式
SEL_F傳入一個字符串參數(shù)’rws’是Roulette Wheel Selection,也就是輪盤賭和’sus’是Stochastic Universal Sampling,也就是隨機通用采樣。
第二種格式
GGAP表示代溝,即留下來的概率。默認(rèn)為1.0
bs2rv()函數(shù)
二進(jìn)制轉(zhuǎn)為十進(jìn)制函數(shù)
bs2rv(Chrom,FieldD)
這個函數(shù)理解為遺傳算法工具箱里內(nèi)置的一個算法,因為遺傳算法中的選擇,交叉,變異都是在二進(jìn)制字符串中完成,所以需要這個函數(shù)轉(zhuǎn)化為十進(jìn)制。
FieldD理解為我們轉(zhuǎn)化是需要傳入的格式參數(shù)。
FieldD = [len lb ub code scale lbin ubin]
len = size(Chrom,2)
lb,ub分別為每個變量的上下限。
code傳入的是編碼模式,1表示標(biāo)準(zhǔn)的二進(jìn)制編碼,0表示格雷編碼。
scale傳入的子串的所用刻度,0表示算出刻度。1表示對數(shù)刻度。
lbin ubin分別表示轉(zhuǎn)化的范圍中是否包含邊界,0表示不包含邊界,1表示包含。
小結(jié)
本文只簡單介紹了謝菲爾德遺傳算法工具箱很少的一部分,有不正確的地方歡迎大家私信討論,希望這篇文章在幫助我記錄學(xué)習(xí)的點滴之余,也能幫助到大家。
總結(jié)
以上是生活随笔為你收集整理的谢菲尔德遗传算法工具箱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么查看个人CSDN账号积分-最靠谱!
- 下一篇: [css] 你有用过弹性布局吗?说说你