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