国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(轉(zhuǎn)載)matlab遺傳算法工具箱

這篇具有很好參考價(jià)值的文章主要介紹了(轉(zhuǎn)載)matlab遺傳算法工具箱。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

????????以下內(nèi)容大部分來源于《MATLAB智能算法30個(gè)案例分析》,僅為學(xué)習(xí)交流所用。

1理論基礎(chǔ)

1.1遺傳算法概述

????????遺傳算法(genetic algorithm,GA)是一種進(jìn)化算法,其基本原理是仿效生物界中的“物競(jìng)天擇、適者生存”的演化法則。遺傳算法是把問題參數(shù)編碼為染色體,再利用迭代的方式進(jìn)行選擇、交叉以及變異等運(yùn)算來交換種群中染色體的信息,最終生成符合優(yōu)化目標(biāo)的染色體。
????????在遺傳算法中,染色體對(duì)應(yīng)的是數(shù)據(jù)或數(shù)組,通常是由一維的串結(jié)構(gòu)數(shù)據(jù)來表示,串上各個(gè)位置對(duì)應(yīng)基因的取值。基因組成的串就是染色體,或者稱為基因型個(gè)體(individuals)。一定數(shù)量的個(gè)體組成了群體(population)。群體中個(gè)體的數(shù)目稱為群體大小(population size),也稱為群體規(guī)模。而各個(gè)個(gè)體對(duì)環(huán)境的適應(yīng)程度叫做適應(yīng)度(fitness)。
遺傳算法的基本步驟如下:
????????1.編碼
????????GA在進(jìn)行搜索之前先將解空間的解數(shù)據(jù)表示成遺傳空間的基因型串結(jié)構(gòu)數(shù)據(jù),這些串結(jié)構(gòu)數(shù)據(jù)的不同組合便構(gòu)成了不同的點(diǎn)。

????????2.初始群體的生成
????????隨機(jī)產(chǎn)生N個(gè)初始串結(jié)構(gòu)數(shù)據(jù),每個(gè)串結(jié)構(gòu)數(shù)據(jù)稱為一個(gè)個(gè)體,N個(gè)個(gè)體構(gòu)成了一個(gè)群體。GA以這N個(gè)串結(jié)構(gòu)數(shù)據(jù)作為初始點(diǎn)開始進(jìn)化。
????????3.適應(yīng)度評(píng)估
????????適應(yīng)度表明個(gè)體或解的優(yōu)劣性。不同的問題,適應(yīng)性函數(shù)的定義方式也不同。4、選擇
選擇的目的是為了從當(dāng)前群體中選出優(yōu)良的個(gè)體,使它們有機(jī)會(huì)作為父代為下一代繁殖子孫。遺傳算法通過選擇過程體現(xiàn)這一思想,進(jìn)行選擇的原則是適應(yīng)性強(qiáng)的個(gè)體為下一代貢獻(xiàn)一個(gè)或多個(gè)后代的概率大。選擇體現(xiàn)了達(dá)爾文的適者生存原則。
????????5.交叉
????????交叉操作是遺傳算法中最主要的遺傳操作。通過交叉操作可以得到新一代個(gè)體,新個(gè)體組合了其父輩個(gè)體的特性。交叉體現(xiàn)了信息交換的思想。
????????6.變異
????????變異首先在群體中隨機(jī)選擇一個(gè)個(gè)體,對(duì)于選中的個(gè)體以一定的概率隨機(jī)地改變串結(jié)構(gòu)數(shù)據(jù)中某個(gè)串的值。同生物界一樣,GA中變異發(fā)生的概率很低,通常取值很小。

1.2謝菲爾德遺傳算法工具箱

????????1.工具箱簡(jiǎn)介
????????謝菲爾德(Sheffield)遺傳算法工具箱是英國(guó)謝菲爾德大學(xué)開發(fā)的遺傳算法工具箱。該工具箱是用MATLAB高級(jí)語(yǔ)言編寫的,對(duì)問題使用M文件編寫,可以看見算法的源代碼,與此匹配的是先進(jìn)的MATLAB數(shù)據(jù)分析、可視化工具、特殊目的應(yīng)用領(lǐng)域工具箱和展現(xiàn)給使用者具有研究遺傳算法可能性的一致環(huán)境。該工具箱為遺傳算法研究者和初次實(shí)驗(yàn)遺傳算法的用戶提供了廣泛多樣的實(shí)用函數(shù)。
????????2.工具箱添加
????????用戶可以通過網(wǎng)絡(luò)下載gatbx工具箱(官方github下載地址:gatbx)。然后把工具箱添加到本機(jī)的MATLAB環(huán)境中,該工具箱的安裝步驟如下:
????????(1)將工具箱文件夾復(fù)制到本地計(jì)算機(jī)中的工具箱目錄下,路徑為matlabroot\ toolbox。其中matlabroot為 MATLAB的安裝根目錄。
????????(2)將工具箱所在的文件夾添加到MATLAB的搜索路徑中,有兩種方式可以實(shí)現(xiàn),即命令行方式和圖形用戶界面方式。
????????①命令行方式:用戶可以調(diào)用addpath命令來添加,例如:

str = [matlabroot, '\toolbox\gatbx'];
addpath(str)

? ? ? ? ②圖形用戶界面方式:在 MATLAB主窗口上選擇主頁(yè)→設(shè)置路徑菜單項(xiàng),單擊“添加文件夾”按鈕。找到工具箱所在的文件夾( gatbx),單擊“OK”按鈕,則工具箱所在的文件夾出現(xiàn)在“設(shè)置路徑”的最上端。單擊“保存”按鈕保存搜索路徑的設(shè)置,然后單擊“關(guān)閉”按鈕關(guān)閉對(duì)話框。

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????(3)批量修改后綴

????????該工具箱文件后綴為M,即*.M,matlab是區(qū)分大小寫的,如果這一步?jīng)]有操作,將會(huì)報(bào)錯(cuò),在該文件路徑下,新建txt,輸入以下命令,并保存修改文件后綴為bat,點(diǎn)擊運(yùn)行:

ren *.M *.m

????????如果文件夾中.M后綴的文件并未修改為.m的后綴,可以通過一個(gè)中間后綴名進(jìn)行修改,先將其后綴名轉(zhuǎn)為.txt,再轉(zhuǎn)為.m,也就是先輸入下面的命令,并保存修改文件后綴為bat,點(diǎn)擊運(yùn)行:

ren *.M *.txt

? ? ? ? 所有.M后綴的文件都修改為了.txt后綴,然后再輸入下面的命令并保存修改文件后綴為bat,點(diǎn)擊運(yùn)行:

ren *.txt *.m

????????這樣就把所有文件的后綴名都改成了.m文件。如果還是不行的話。。。。。就一個(gè)一個(gè)手動(dòng)改吧。

2案例背景

2.1問題描述

????????1.簡(jiǎn)單一元函數(shù)優(yōu)化
????????利用遺傳算法尋找以下函數(shù)的最小值:

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????2.多元函數(shù)優(yōu)化
????????利用遺傳算法尋找以下函數(shù)的最大值:

(轉(zhuǎn)載)matlab遺傳算法工具箱

2.2解題思路及步驟

????????將自變量在給定范圍內(nèi)進(jìn)行編碼,得到種群編碼,按照所選擇的適應(yīng)度函數(shù)并通過遺傳算法中的選擇,交叉和變異對(duì)個(gè)體進(jìn)行篩選和進(jìn)化,使適應(yīng)度值大的個(gè)體被保留,小的個(gè)體被淘汰,新的群體繼承了上一代的信息,又優(yōu)于上一代,這樣反復(fù)循環(huán),直至滿足條件,最后留下來的個(gè)體集中分布在最優(yōu)解周圍,篩選出其中最優(yōu)的個(gè)體作為問題的解。

3 MATLAB程序?qū)崿F(xiàn)

????????下面詳細(xì)介紹各部分常用的函數(shù),其他的函數(shù)用戶可以直接參考工具箱中的GATBXA2.PDF文檔,其中有詳細(xì)的用法介紹。

3.1 工具箱結(jié)構(gòu)

????????遺傳算法工具箱中的主要函數(shù)如表1所列。

表1 遺傳算法工具箱的主要函數(shù)列表

(轉(zhuǎn)載)matlab遺傳算法工具箱
?(轉(zhuǎn)載)matlab遺傳算法工具箱

?3.2遺傳算法常用函數(shù)

????????1.創(chuàng)建種群函數(shù)——crtbp功能:創(chuàng)建任意離散隨機(jī)種群。調(diào)用格式:

% 調(diào)用格式1
[Chrom,Lind,Basev]= crtbp(Nind,Lind)
% 調(diào)用格式2
[Chrom,Lind,Basev]= crtbp(Nind,Base)
% 調(diào)用格式3
[Chrom,Lind,Base]= crtbp(Nind,Lind,Base)

????????格式①創(chuàng)建一個(gè)大小為Nind×Lind 的隨機(jī)二進(jìn)制矩陣,其中,Nind 為種群個(gè)體數(shù),Lind為個(gè)體長(zhǎng)度。返回種群編碼Chrom和染色體基因位的基本字符向量 BaseV。
????????格式②創(chuàng)建一個(gè)種群個(gè)體為Nind,個(gè)體的每位編碼的進(jìn)制數(shù)由Base 決定(Base 的列數(shù)即為個(gè)體長(zhǎng)度)。
????????格式③創(chuàng)建一個(gè)大小為Nind×Lind 的隨機(jī)矩陣,個(gè)體的各位的進(jìn)制數(shù)由Base決定﹐這時(shí)輸入?yún)?shù)Lind可省略(Base 的列數(shù)即為L(zhǎng)ind),即為格式②。
????????【用法舉例】使用函數(shù)crtbp創(chuàng)建任意離散隨機(jī)種群的應(yīng)用舉例。

????????(1)創(chuàng)建一個(gè)種群大小為5,個(gè)體長(zhǎng)度為10的二進(jìn)制隨機(jī)種群:

[Chrom,Lind,BaseV] = crtbp(5,10)

或者

[Chrom,Lind,BaseV] = crtbp(5,10,[2 2 2 2 2 2 2 2 2 2])

或者

[Chrom,Lind,BaseV] = crtbp(5,[2 2 2 2 2 2 2 2 2 2])

輸出結(jié)果為:

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????2.適應(yīng)度計(jì)算函數(shù)一—ranking功能:基于排序的適應(yīng)度分配。調(diào)用格式:

% 調(diào)用格式1
Fitnv = ranking(Objv)
% 調(diào)用格式2
Eitnv = ranking(Objv,RFun)
% 調(diào)用格式3
Fitnv = ranking(Objv,RFun,SUBPOP)

????????格式①是按照個(gè)體的目標(biāo)值ObjV(列向量)由小到大的順序?qū)€(gè)體進(jìn)行排序的,并返回個(gè)體適應(yīng)度值FitnV的列向量。
????????格式②中RFun有三種情況: .
????????(1)若RFun是一個(gè)在[1,2]區(qū)間內(nèi)的標(biāo)量,則采用線性排序,這個(gè)標(biāo)量指定選擇的壓差。

????????(2)若RFun是一個(gè)具有兩個(gè)參數(shù)的向量,則RFun(2):指定排序方法,0為線性排序,1為非線性排序。RFun(1);對(duì)線性排序﹐標(biāo)量指定的選擇壓差RFun(1)必須在[1,2]區(qū)間;對(duì)非線性排序,RFun(1)必須在[1, length(ObjV)一2]區(qū)間;如果為NAN,則 RFun(1)假設(shè)為2。
????????(3)若RFun是長(zhǎng)度為length(ObjV)的向量,則它包含對(duì)每一行的適應(yīng)度值計(jì)算。格式③中的參數(shù)ObjV和RFun與格式①和格式②一致,參數(shù)SUBPOP是一個(gè)任選參數(shù),指明在-ObjV中子種群的數(shù)量。省略SUBPOP或SUBPOP為NAN,則 SUBPOP=1。在ObjV中的所有子種群大小必須相同。如果ranking被調(diào)用于多子種群,則ranking 獨(dú)立地對(duì)每個(gè)子種群執(zhí)行。
????????【用法舉例】考慮具有10個(gè)個(gè)體的種群,其當(dāng)前目標(biāo)值如下:

ObjV = [1;2;3;4;5;10;9;8;7;6]

????????(1)使用線性排序和壓差為⒉估算適應(yīng)度:

Fitnv= ranking(ObjV)
% 或者
Fitnv= ranking(ObjV,[2,0])
% 或者
Fitnv= ranking(ObjV,[2,0],1)

????????運(yùn)行結(jié)果如下:

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????(2〉使用RFun中的值估算適應(yīng)度:

RFun = [3;5;7;10;14;18;25;30;40;50];
Fitnv = ranking(Objv, RFun)

運(yùn)行結(jié)果:
(轉(zhuǎn)載)matlab遺傳算法工具箱
????????(3〉使用非線性排序,選擇壓差為2,在ObjV中有兩個(gè)子種群估算適應(yīng)度:
?

FitnV =ranking(ObjV,[2,1],2)

?運(yùn)行結(jié)果:

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????3.選擇函數(shù)——select 功能:從種群中選個(gè)體(高級(jí)函數(shù))。 調(diào)用格式:

selCh = select(SEL_F,Chrom,Fitnv)
selCh = select(SEL_r,Chrom,Eitnv,GGAP)
selCh = select(SRL_F,Chrom,Fitnv,GGAP,SUBPOP)

????????SEL_F是一個(gè)字符串,包含一個(gè)低級(jí)選擇函數(shù)名,如 rws 或 sus;

????????FitnV是列向量,包舍種群 Chrom中個(gè)體的適應(yīng)度值。這個(gè)適應(yīng)度值表明了每個(gè)個(gè)體被 選擇的預(yù)期概率。

????????GGAP是可選參數(shù),指出了代溝部分種群被復(fù)制。如果GGAP省略或?yàn)镹AN,則GAP 假設(shè)為1.0。

????????SUBPOP是一個(gè)可選參數(shù),決定 Chrom 中子種群的數(shù)量。如果 SUBPOP 省略或?yàn)?NAN,則 sUBPOP=1。Chrom 中所有子種群必須有相同的大小。
????????【用法舉例】考慮以下具有8個(gè)個(gè)體的種群Chrom,適應(yīng)度值為FitnV:?

Chrom = [1 11 21;2 12 22;3 13 23;4 14 24;5 15 25;6 16 26;7 17 27;8 18 28]
FitnV = [1.50;1.35;1.21;1.07;0.92;0.78;0.64;0.5]

使用隨機(jī)遍歷抽樣 sus 選擇8個(gè)個(gè)體

selch = select('sus',Chrom,FitnV)

運(yùn)行結(jié)果為:

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????4.交叉算子函數(shù)——recombin功能:重組個(gè)體(高級(jí)函數(shù))。調(diào)用格式:

NewChrom = recombin(REC_r,Chrom)
NewChrom = recombin(REC_F,Chrom,Recopt)
NewChrom = recombin(REC_F,Chrom,RecOpt,SUBPOP)

????????recombin完成種群Chrom中個(gè)體的重組,在新種群NewChrom中返回重組后的個(gè)體。Chrom和NewChrom中的一行對(duì)應(yīng)一個(gè)個(gè)體。
????????REC_F是一個(gè)包含低級(jí)重組函數(shù)名的字符串,例如recdis或xovsp.
????????RecOpt是一個(gè)指明交叉概率的任選參數(shù),如省略或?yàn)镹AN,將設(shè)為缺省值。
????????SUBPOP是一個(gè)決定Chrom中子群個(gè)數(shù)的可選參數(shù),如果省略或?yàn)镹AN,則 SUBPOP為1。Chrom中的所有子種群必須有相同的大小。
????????【用法舉例】使用函數(shù)recombin對(duì)5個(gè)個(gè)體的種群進(jìn)行重組。

Chrom = crtbp(5,10)
NewChrom = recombin('xovsp',Chrom)

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????5.變異算子函數(shù)——mut功能:離散變異算子。
????????調(diào)用格式:

NewChrom = mut(O1dChrom,Pm,Basev)

OldChrom為當(dāng)前種群,Pm為變異概率(省略時(shí)為0.7/Lind),BaseV指明染色體個(gè)體元素的變異的基本字符(省略時(shí)種群為二進(jìn)制編碼)。
????????【用法舉例】使用函數(shù)mut將當(dāng)前種群變異為新種群。

????????(1)種群為二進(jìn)制編碼:

oldChrom = crtbp(5,10)
NewChrom = mut(oldChrom)

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????(2)種群為非二進(jìn)制編碼,創(chuàng)建一個(gè)長(zhǎng)度為8、有6個(gè)個(gè)體的隨機(jī)種群;

BaseV = [8 8 8 4 4 4 4 4];
[Chrom, Lind,BaseV] = crtbp(6,BaseV);
Chrom
NewChrom = mut(Chrom,0.7,BaseV)

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????6.重插入函數(shù)———reins功能:重插入子代到種群。調(diào)用格式:

Chrom = reins(Chrom,SelCh)
Chrom = reins(Chrom,Se1Ch,SUBPOP)
Chrom = reins(Chrom,SelCh,SUBPOP, InsOpt,0bjvCh)
[Chrom,0bjVCh]= reins(Chrom,SelCh,SUBPOP,Ins0pt,0bjvCh,0bjvSel)

????????reins完成插人子代到當(dāng)前種群,用子代代替父代并返回結(jié)果種群。Chrom為父代種群,SelCh為子代,每一行對(duì)應(yīng)一個(gè)個(gè)體。
????????SUBPOP是一個(gè)可選參數(shù),指明Chrom和 SelCh中子種群的個(gè)數(shù)。如果省略或者為NAN,則假設(shè)為1。在Chrom和SelCh中每個(gè)子種群必須具有相同大小。
????????InsOpt是一個(gè)最多有兩個(gè)參數(shù)的任選向量。

????????InsOpt(1)是一個(gè)標(biāo)量,指明用子代代替父代的方法。0為均勻選擇,子代代替父代使用均勻隨機(jī)選擇。1為基于適應(yīng)度的選擇,子代代替父代中適應(yīng)度最小的個(gè)體。如果省略InsOpt(1)或InsOpt(1)為NAN,則假設(shè)為0。
????????InsOpt(2)是一個(gè)在[o,1]區(qū)間的標(biāo)量,表示每個(gè)子種群中重插入的子代個(gè)體在整個(gè)子種群中個(gè)體的比率。如果InsOpt(2)省略或?yàn)镹AN,則假設(shè)InsOpt(2)=1.0。
????????ObjVCh是一個(gè)可選列向量,包括Chrom中個(gè)體的目標(biāo)值。對(duì)基于適應(yīng)度的重插入,ObjVCh是必需的。
????????ObjVSel是一個(gè)可選參數(shù),包含SelCh中個(gè)體的目標(biāo)值。如果子代的數(shù)量大于重插入種群中的子代數(shù)量﹐則ObjVSel是必需的。這種情況子代將按它們的適應(yīng)度大小選擇插人。
????????【用法舉例】在5個(gè)個(gè)體的父代種群中插入子代種群。

Chrom = crtbp(5,10)            % 父代
selch = crtbp(2,10)            % 子代
Chrom = reins(Chrom,selch)     % 重插入

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????7.實(shí)用函數(shù)——bs2rv
????????功能:二進(jìn)制到十進(jìn)制的轉(zhuǎn)換。調(diào)用格式:

Phen = bs2rv(Chrom,FieldD)

????????bs2rv根據(jù)譯碼矩陣FieldD將二進(jìn)制串矩陣Chrom 轉(zhuǎn)換為實(shí)值向量,返回十進(jìn)制的矩陣。
????????矩陣FieldD有如下結(jié)構(gòu):

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????這個(gè)矩陣的組成如下:
????????len是包含在Chrom中的每個(gè)子串的長(zhǎng)度,注意sum(len)=size(Chrom,2)。lb和ub分別是每個(gè)變量的下界和上界。
????????code指明子串是怎樣編碼的,1為標(biāo)準(zhǔn)的二進(jìn)制編碼,0為格雷編碼。scale指明每個(gè)子串所使用的刻度,0表示算術(shù)刻度,1表示對(duì)數(shù)刻度。
????????lbin和 ubin指明表示范圍中是否包含邊界。0表示不包含邊界,1表示包含邊界。
????????【用法舉例】先使用crtbp創(chuàng)建二進(jìn)制種群Chrom,表示在[一1,10]區(qū)間的一組簡(jiǎn)單變量,然后使用bs2rv將二進(jìn)制串轉(zhuǎn)換為實(shí)值表現(xiàn)型。

Chrom = crtbp(4,8)                             % 創(chuàng)建二進(jìn)制串
FieldD = [size(Chrom,2);-1;10;1;0;1;1]         % 包含邊界
Phen = bs2rv(Chrom,FieldD)                     % 轉(zhuǎn)換二進(jìn)制到10進(jìn)制

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????8.實(shí)用函數(shù)—-rep功能:矩陣復(fù)制。
????????調(diào)用格式: Matout = rep(MatIn,REPN)
????????函數(shù)rep完成矩陣MatIn的復(fù)制,REPN指明復(fù)制次數(shù),返回復(fù)制后的矩陣 MatOut。REPN包含每個(gè)方向復(fù)制的次數(shù),REPN(1)表示縱向復(fù)制次數(shù),REPN(2)表示水平方向復(fù)制次數(shù)。
????????【用法舉例】使用函數(shù)rep 復(fù)制矩陣MatIn。

MatIn = [1 2 3 4;5 6 7 8]
MatOut = rep(MatIn,[1,2])

?(轉(zhuǎn)載)matlab遺傳算法工具箱

3.3遺傳算法工具箱應(yīng)用舉例

????????本節(jié)通過一些具體的例子來介紹遺傳算法工具箱函數(shù)的使用。

1.簡(jiǎn)單一元函數(shù)優(yōu)化
????????利用遺傳算法計(jì)算以下函數(shù)的最小值:

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????選擇二進(jìn)制編碼,遺傳算法參數(shù)設(shè)置如表2所列。

表2 遺傳算法參數(shù)

(轉(zhuǎn)載)matlab遺傳算法工具箱

?????????遺傳算法優(yōu)化程序代碼:

clc
clear all
close all
%% 畫出函數(shù)圖
figure(1);
hold on;
lb=1;ub=2; %函數(shù)自變量范圍【1,2】
ezplot('sin(10*pi*X)/X',[lb,ub]);   %畫出函數(shù)曲線
xlabel('自變量/X')
ylabel('函數(shù)值/Y')
%% 定義遺傳算法參數(shù)
NIND=40;        %個(gè)體數(shù)目
MAXGEN=20;      %最大遺傳代數(shù)
PRECI=20;       %變量的二進(jìn)制位數(shù)
GGAP=0.95;      %代溝
px=0.7;         %交叉概率
pm=0.01;        %變異概率
trace=zeros(2,MAXGEN);                        %尋優(yōu)結(jié)果的初始值
FieldD=[PRECI;lb;ub;1;0;1;1];                      %區(qū)域描述器
Chrom=crtbp(NIND,PRECI);                      %初始種群
%% 優(yōu)化
gen=0;                                  %代計(jì)數(shù)器
X=bs2rv(Chrom,FieldD);                 %計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換
ObjV=sin(10*pi*X)./X;        %計(jì)算目標(biāo)函數(shù)值
while gen<MAXGEN
   FitnV=ranking(ObjV);                               %分配適應(yīng)度值
   SelCh=select('sus',Chrom,FitnV,GGAP);              %選擇
   SelCh=recombin('xovsp',SelCh,px);                  %重組
   SelCh=mut(SelCh,pm);                               %變異
   X=bs2rv(SelCh,FieldD);               %子代個(gè)體的十進(jìn)制轉(zhuǎn)換
   ObjVSel=sin(10*pi*X)./X;             %計(jì)算子代的目標(biāo)函數(shù)值
   [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新種群
   X=bs2rv(Chrom,FieldD);
   gen=gen+1;                                             %代計(jì)數(shù)器增加
   %獲取每代的最優(yōu)解及其序號(hào),Y為最優(yōu)解,I為個(gè)體的序號(hào)
   [Y,I]=min(ObjV);
   trace(1,gen)=X(I);                            %記下每代的最優(yōu)值
   trace(2,gen)=Y;                               %記下每代的最優(yōu)值
end
plot(trace(1,:),trace(2,:),'bo');                            %畫出每代的最優(yōu)點(diǎn)
grid on;
plot(X,ObjV,'b*');   %畫出最后一代的種群
hold off
%% 畫進(jìn)化圖
figure(2);
plot(1:MAXGEN,trace(2,:));
grid on
xlabel('遺傳代數(shù)')
ylabel('解的變化')
title('進(jìn)化過程')
bestY=trace(2,end);
bestX=trace(1,end);
fprintf(['最優(yōu)解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])

運(yùn)行結(jié)果:

(轉(zhuǎn)載)matlab遺傳算法工具箱

?(轉(zhuǎn)載)matlab遺傳算法工具箱

????????2.多元函數(shù)優(yōu)化
????????利用遺傳算法計(jì)算以下函數(shù)的最大值:

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????選擇二進(jìn)制編碼,遺傳算法參數(shù)設(shè)置如表3所列。

表3 遺傳算法參數(shù)

(轉(zhuǎn)載)matlab遺傳算法工具箱

????????遺傳算法優(yōu)化程序代碼:

clc
clear all
close all
%% 畫出函數(shù)圖
figure(1);
lbx=-2;ubx=2; %函數(shù)自變量x范圍【-2,2】
lby=-2;uby=2; %函數(shù)自變量y范圍【-2,2】
ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50);   %畫出函數(shù)曲線
hold on;
%% 定義遺傳算法參數(shù)
NIND=40;        %個(gè)體數(shù)目
MAXGEN=50;      %最大遺傳代數(shù)
PRECI=20;       %變量的二進(jìn)制位數(shù)
GGAP=0.95;      %代溝
px=0.7;         %交叉概率
pm=0.01;        %變異概率
trace=zeros(3,MAXGEN);                        %尋優(yōu)結(jié)果的初始值
FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1];                      %區(qū)域描述器
Chrom=crtbp(NIND,PRECI*2);                      %初始種群
%% 優(yōu)化
gen=0;                                  %代計(jì)數(shù)器
XY=bs2rv(Chrom,FieldD);                 %計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換
X=XY(:,1);Y=XY(:,2);
ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);        %計(jì)算目標(biāo)函數(shù)值
while gen<MAXGEN
   FitnV=ranking(-ObjV);                              %分配適應(yīng)度值
   SelCh=select('sus',Chrom,FitnV,GGAP);              %選擇
   SelCh=recombin('xovsp',SelCh,px);                  %重組
   SelCh=mut(SelCh,pm);                               %變異
   XY=bs2rv(SelCh,FieldD);               %子代個(gè)體的十進(jìn)制轉(zhuǎn)換
   X=XY(:,1);Y=XY(:,2);
   ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);             %計(jì)算子代的目標(biāo)函數(shù)值
   [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新種群
   XY=bs2rv(Chrom,FieldD);
   gen=gen+1;                                             %代計(jì)數(shù)器增加
   %獲取每代的最優(yōu)解及其序號(hào),Y為最優(yōu)解,I為個(gè)體的序號(hào)
   [Y,I]=max(ObjV);
   trace(1:2,gen)=XY(I,:);                       %記下每代的最優(yōu)值
   trace(3,gen)=Y;                               %記下每代的最優(yōu)值
end
plot3(trace(1,:),trace(2,:),trace(3,:),'bo');                            %畫出每代的最優(yōu)點(diǎn)
grid on;
plot3(XY(:,1),XY(:,2),ObjV,'bo');  %畫出最后一代的種群
hold off
%% 畫進(jìn)化圖
figure(2);
plot(1:MAXGEN,trace(3,:));
grid on
xlabel('遺傳代數(shù)')
ylabel('解的變化')
title('進(jìn)化過程')
bestZ=trace(3,end);
bestX=trace(1,end);
bestY=trace(2,end);
fprintf(['最優(yōu)解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\nZ=',num2str(bestZ),'\n'])

運(yùn)行結(jié)果:

(轉(zhuǎn)載)matlab遺傳算法工具箱

?(轉(zhuǎn)載)matlab遺傳算法工具箱

?4.總結(jié)

????????遺傳算法工具箱提供了一種求解非線性、多模型、多目標(biāo)等復(fù)雜系統(tǒng)優(yōu)化問題的通用框架,它不依賴問題的具體領(lǐng)域,對(duì)問題的種類具有很強(qiáng)的魯棒性,所以它廣泛應(yīng)用于各個(gè)科學(xué)領(lǐng)域。遺傳算法在函數(shù)優(yōu)化、組合優(yōu)化、生產(chǎn)調(diào)度、自動(dòng)控制﹑機(jī)器人學(xué)﹑圖像處理、人工生命、遺傳編碼和機(jī)器學(xué)習(xí)等方面得到了廣泛運(yùn)用。文章來源地址http://www.zghlxwxcb.cn/news/detail-465786.html

到了這里,關(guān)于(轉(zhuǎn)載)matlab遺傳算法工具箱的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Matlab 優(yōu)化工具箱

    Matlab 優(yōu)化工具箱

    語(yǔ)法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩陣。 示例1-1 : 語(yǔ)法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩陣。 語(yǔ)法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    瀏覽(54)
  • MATLAB cftool工具箱——曲線擬合

    MATLAB cftool工具箱——曲線擬合

    ? ? cftool工具箱可以將數(shù)據(jù)點(diǎn)擬合成曲線或曲面并直觀顯示出圖像。能實(shí)現(xiàn)多種類型的線性、非線性曲線/面擬合。 ? ? 有兩種方式打開cftool:(1)在命令行窗口輸入\\\"cftool\\\"并回車;(2)在MATLAB的\\\"APP\\\"選項(xiàng)欄中找到\\\"Curve Fitting\\\"程序打開即可。 ? ? 界面左上部分為數(shù)據(jù)區(qū)域,下拉框中

    2024年02月08日
    瀏覽(25)
  • 【MATLAB第57期】基于MATLAB的雙隱含層BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測(cè)模型(無工具箱版本及工具箱版本對(duì)比)

    【MATLAB第57期】基于MATLAB的雙隱含層BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測(cè)模型(無工具箱版本及工具箱版本對(duì)比)

    數(shù)據(jù)為案例數(shù)據(jù) 。103行樣本,7輸入1輸出數(shù)據(jù)。 訓(xùn)練集數(shù)據(jù)的R2為:0.9022 測(cè)試集數(shù)據(jù)的R2為:0.87266 訓(xùn)練集數(shù)據(jù)的MAE為:1.8189 測(cè)試集數(shù)據(jù)的MAE為:2.1658 訓(xùn)練集數(shù)據(jù)的MBE為:-0.00088469 測(cè)試集數(shù)據(jù)的MBE為:0.3059 數(shù)據(jù)與無工具版本相同,數(shù)據(jù)順序也相同。 訓(xùn)練集數(shù)據(jù)的R2為:1 測(cè)試

    2024年02月16日
    瀏覽(51)
  • Matlab樣條工具箱及曲線擬合

    Matlab樣條工具箱及曲線擬合

    Matlab樣條工具箱提供了樣條的建立、操作、繪制等功能. 建立一個(gè)樣條曲線或曲面,根據(jù)前綴可分為4類: 前綴 類別 cs* 三次樣條 pp* 分段多項(xiàng)式樣條 sp* B樣條,系數(shù)為基函數(shù)系數(shù) rp* 有理B樣條 函數(shù)操作:求值、求導(dǎo)數(shù)、求積分等; 節(jié)點(diǎn)操作:節(jié)點(diǎn)重?cái)?shù)的設(shè)定、修改等. 1.三次

    2024年02月08日
    瀏覽(31)
  • 在Matlab中安裝LibSVM工具箱

    在Matlab中安裝LibSVM工具箱

    1 下載工具箱 地址:LibSVM下載地址 下拉網(wǎng)頁(yè): 2 注意事項(xiàng): 2.1 注意測(cè)試數(shù)據(jù) ==官網(wǎng)下載的數(shù)據(jù)包中沒有Matlab對(duì)應(yīng)的數(shù)據(jù)集格式,點(diǎn)此下載:heart_scale.mat.== 鏈接: https://pan.baidu.com/s/15LYMilm8asw9EYkHmifLyg 提取碼: trws 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦 –來自百度

    2024年02月04日
    瀏覽(19)
  • matlab機(jī)器人工具箱基礎(chǔ)使用

    資料:https://blog.csdn.net/huangjunsheng123/article/details/110630665 test1.m

    2024年02月12日
    瀏覽(101)
  • matlab系統(tǒng)辨識(shí)工具箱及其反向驗(yàn)證

    matlab系統(tǒng)辨識(shí)工具箱及其反向驗(yàn)證

    系統(tǒng)辨識(shí)工具箱 什么時(shí)候使用系統(tǒng)辨識(shí),當(dāng)系統(tǒng)傳遞函數(shù)不確定(在多大程度上不確定?)時(shí),通過對(duì)輸入輸出數(shù)據(jù)采集,通過數(shù)學(xué)迭代找到控制對(duì)象的近似模型。在找到近似模型(傳遞函數(shù))后,就可以使用線性化調(diào)參工具對(duì)系統(tǒng)控制參數(shù)進(jìn)行整定,進(jìn)行控制系統(tǒng)設(shè)計(jì)。 調(diào)用命

    2024年02月05日
    瀏覽(25)
  • 【Matlab】相機(jī)標(biāo)定(計(jì)算機(jī)視覺工具箱)

    【Matlab】相機(jī)標(biāo)定(計(jì)算機(jī)視覺工具箱)

    圖像處理和計(jì)算機(jī)視覺是Matlab的一個(gè)主要應(yīng)用領(lǐng)域,這部分包括4個(gè)工具箱——圖像處理、計(jì)算機(jī)視覺、雷達(dá)、醫(yī)學(xué)圖像。由于視覺的東西容易呈現(xiàn),所以先從計(jì)算機(jī)視覺工具箱學(xué)起。 官方文檔對(duì)計(jì)算機(jī)視覺工具箱的介紹如下:設(shè)計(jì)和測(cè)試計(jì)算機(jī)視覺、3D 視覺和視頻處理系統(tǒng)

    2024年02月05日
    瀏覽(28)
  • MATLAB曲線擬合工具箱(cftool)介紹(完結(jié))

    MATLAB曲線擬合工具箱(cftool)介紹(完結(jié))

    本文通過實(shí)例對(duì)MATLAB曲線擬合工具箱進(jìn)行詳細(xì)講解,幫助大家更容易理解曲線擬合工具箱(cftool)。 已知 x = [0 0.2 0.50.8 0.9 1.3 1.4 1.9 2.1 2.2 2.5 2.6 2.9 3.0]; y = [1.27792.1596 2.7311 2.5974 2.4068 1.6215 1.4178 0.9955 0.9666 0.8837 0.9639 1.00311.1233 1.1583]; 并且根據(jù)某種物理或數(shù)學(xué)關(guān)系確定y=f(x)的表達(dá)

    2024年02月02日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包