初遇Sheffield遺傳演算法工具箱

2022-08-31 22:18:19 字數 3034 閱讀 7530

安裝參考     

安裝:1、解壓gatbx-origin.zip,得到doc和src資料夾;

2、拷貝src到matlab安裝目錄下的toolbox資料夾中,並將src更名為gatbx;

3、開啟toolbox\local\目錄下的pathdef.m檔案,在適當位置新增以下兩行**:  (也可addpath)

code in pathdef.mmatlabroot,'\toolbox\gatbx;',... matlabroot,'\toolbox\gatbx\test_fns;',...

這樣子就表示安裝好了吧,哈哈。。

>> v=ver('

gatbx')

v =name:

'genetic algorithm toolbox

'version:

'1.2

'release:

''date:

'15-apr-94

'licenses:

然而,事不盡人意,正準備好好研究下它的內建函式時,,

%建立初始種群

clc;clear;

nind=60; %種群個體數

lind=30; %個體長度

[chrom,lind,basev]=crtbp(nind,lind); %建立隨機二進位制矩陣

卻報錯了,錯誤如下。。。。

cannot find an exact (case-sensitive)

match for 'crtbp.m'the closest match ise:\my programming

software\matlab\matlab

2012a\toolbox\gatbx\crtbp.m

to change the file extension, cd to the

file's folder, type:

movefile crtbp.m crtbp.m_bad;

movefile crtbp.m_bad crtbp.m

and then cd back.

error in sheffield (line 10)

[chrom,lind,basev]=crtbp(nind,lind);

%建立隨機二進位制矩陣

上網找了乙個解決方法。。

但,仍然出錯,,繼續找解決方法

(⊙o⊙)嗯,原來清空路徑快取就可以啦,開心!(英語還是蠻有用的,以後要好好學,o(∩_∩)o哈哈~)

好啦,弄了一上午,終於可以開啟我的遺傳演算法之旅了!

之前,遺傳演算法都是自己一點點摸索一點點寫的,但是,很不幸,解決問題的效果不好。這就是在打擊我的自信心嘛,(⊙o⊙)…所以,決定換個思路,,

這幾天整理知識,看了《matlab智慧型演算法30個案例分析》這本書,嗯,為了更好的解決問題,還是學學著名的sheffield遺傳演算法工具箱啦。。

這篇博文整理得還不錯   

1.建立種群

crtbase:建立基向量

crtbp:建立任意離散隨機種群

crtrp:建立實質初始種群

2.適應度計算

ranking:基於排序的適應度分配

scaling:比率適應度計算

3.選擇函式

rws:輪盤選擇

sus:隨機遍歷取樣

select:高階選擇例程

4.交叉運算元

recdis:離散重組

recint:中間重組

recline:線性重組

recmut:具有變異特徵的線性重組

xovdp:兩點交叉運算元

xovdprs:減少**的兩點交

xovmp:通常多點交叉

xovsh:洗牌交叉

xovshrs:減少**的洗牌交叉

xovsp:單點交叉

xovsprs:減少**的單點交叉

recombin:高階重組運算元

5.變異運算元

mut:離散變異

mutate:高階變異函式

mutbga:實值變異

6.重插入

reins:一致隨機和基於適應度的重插入

7.子種群的支援

migrate:在子種群間交換個體

8.實用函式

bs2rv:二進位制串到實值的轉換

rep:矩陣的複製

遇到了乙個區域描述器的概念,有點棘手。。

某一元函式優化

fieldd=[preci;lb;ub;1;0;1;1];                      %區域描述器

某二元函式優化

fieldd=[preci preci;lbx lby;ubx uby;1

1;00;1

1;11]; %區域描述器

x=bs2rv(chrom,fieldd);

區域描述器行數必須為7

len;  (num)

lb;  (num)

ub;  (num)

code;  (0=binary     | 1=gray)

scale;  (0=arithmetic | 1=logarithmic)

lbin;  (0=excluded   | 1=included)

ubin];  (0=excluded   | 1=included)

len是包含在chrom中的每個子串的長度,注意sum(len)=length(chrom);

lb、ub是行向量,分別指明每個變數使用的上界和下界;

code是二進位制行向量,指明子串是怎樣編碼的,code(i)=1為標準二進位制編碼,code(i)=0則為格雷編碼

scale是二進位制行向量,指明每個子串是否使用對數或算術刻度,scale(i)=0為算術刻度,scale(i)=1則為對數刻度;

lbin、ubin是二進位制行向量,指明表示範圍中是否包含每個邊界,選擇lbin=0或ubin=0,表示從範圍中去掉邊界;lbin=1或ubin=1則表示範

圍中包含邊界。

GenSample演算法初讀 遺傳演算法初識

之前對於遺傳演算法的學習有些囫圇吞棗,知道大致思想是自然選擇 優勝劣汰,通過大自然一代又一代的選擇將適合的基因和物種逐漸保留下來,但是中間過程是如何實現的卻並不清楚。這次有緣讀了加利福尼亞大學幾位老師寫的關於在不平衡資料集上進行過取樣相關的 他們巧妙地將遺傳演算法用於過取樣的過程中,生成了一種新取樣...

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

遺傳演算法 python 簡書 遺傳演算法

優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...