MATLAB遺傳演算法例子一
本文程式碼基於謝菲爾德大學遺傳演算法工具箱。
問題:求在0~4範圍內的最大值
figure(1);
% fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %畫出函式曲線
fplot('-variable.*(variable - 4)',[0,5]); %畫出函式曲線
%定義遺傳演算法引數
NIND=40; %個體數目(Number of individuals)
MAXGEN=25; %最大遺傳代數(Maximum number of generations)
PRECI=20; %變量的二進位制位數(Precision of variables)
GGAP=0.9 ; %代溝(Generation gap)
trace=zeros(2, MAXGEN); %尋優結果的初始值
FieldD=[20;0;5;1;0;1;1]; %區域描述器(Build field descriptor)表示染色體個體到實際的數字的對映關係
Chrom=crtbp(NIND, PRECI); %初始種群
gen=0; %代計數器
variable=bs2rv(Chrom, FieldD); %計 算初始種群的十進位制轉換
ObjV=-variable.*(variable - 4); %計算目標函式值
while gen<MAXGEN
FitnV=ranking(-ObjV); %分配適應度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV, GGAP); %選擇
SelCh=recombin('xovsp', SelCh, 0.7); %重組
SelCh=mut(SelCh); %變 異
variable=bs2rv(SelCh, FieldD); %子代個體的十進位制轉換
ObjVSel=-variable.*(variable - 4);%計運算元代的目標函式值
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel);
%重插入子代的新種群
variable=bs2rv(Chrom, FieldD);
gen=gen+1; %代計數器增加
%輸出最優解及其序號,並在目標函式影象中標出,Y為最優解,I為種群的序號
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, 'bo');
trace(1, gen)=max(ObjV); %遺傳演算法效能跟蹤
trace(2, gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom, FieldD); %最優個體的十進位制轉換
hold on, grid;
plot(variable,ObjV,'b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid
legend('解的變化','種群均值的變化')
步驟:
- 初始化種群
- 分配適應度值FitnV
- 選擇、重組、變異
- 子代插入父代形成新種群
- 回到2,迴圈直至最大代數
- 得到最優種群,即最優解
本文程式碼大部分來自《MATLAB_遺傳演算法工具箱與應用》雷英傑 一書
相關推薦
MATLAB遺傳演算法例子一
本文程式碼基於謝菲爾德大學遺傳演算法工具箱。 問題:求在0~4範圍內的最大值 figure(1); % fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %畫出函式曲線 fplot('-variable
第一章謝菲爾德大學的MATLAB遺傳演算法工具箱(一)
clc clear all close all %% 畫出函式圖 figure(1); hold on; lb=1;ub=2; %函式自變數範圍【1,2】 ezplot('sin(10*pi*X)/X',[lb,ub]); %畫出函式曲線 xlabel('自變數/X'
Matlab 遺傳演算法求解TSP問題
function varargout = tsp_ga(xy,dmat,pop_size,num_iter,show_prog,show_res) %TSP_GA Traveling Salesman Problem (TSP) Genetic Algorithm (GA)
Matlab遺傳演算法優化問題求解的示例程式碼
程式碼如下: function m_main() clear clc Max_gen = 100;% 執行代數 pop_size = 100;%種群大小 chromsome = 10;%染色體的長度 pc = 0.9;%交叉概率 pm = 0.25;%變異概率 gen =
Matlab遺傳演算法求函式最大值
主函式函式main.m global Bitlength%定義3個全域性變數 global boundsbegin global boundsend boundsbegin=-2; boundsend=2; precision=0.0001;%運算精確度
MATLAB R2018a 全域性優化工具箱學習(一)遺傳演算法
Global Optimization Toolbox 在MATLAB R2018a 中發現了全域性優化的工具箱以及增加的資料和機器學習工具箱,對於求解全域性最優值很是方便。 MATLAB Global Optimization Toolbox 學習: 全域性
MATLAB遺傳神經網路演算法學習
誤差反向傳播(BP)神經網路根據反向傳播的誤差來調節連線權值和閾值,具有很強的非線性模擬能力 第一層為輸入層,節點數目M由輸入向量維數確定;中間層為雙隱含層,節點數可選,一般不同層有不同的節點數;最後一層為輸出層,節點數目N由輸出向量維數確定. 不同層的神經元由權值連線,
Python遺傳演算法框架使用例項(二)多目標優化問題Geatpy for Python與Matlab的對比學習
在前面幾篇文章中,我們已經介紹了高效能Python遺傳和進化演算法框架——Geatpy的使用及一些案例。 本篇就一個多目標優化例項進行展開講述,並且與使用Matlab工具箱得到相近效果進行一些對比: Geatpy已於2018.09.20更新至1.0.6版本
Python遺傳演算法框架——Geatpy學習筆記(一)
最近各項比賽告一段落,期間我逐漸開始接觸遺傳演算法。最近由同學推薦,我開始學習一個Python高效能遺傳演算法框架——Geatpy。它是由華工、華農、德州奧斯汀公立大學的學生組成的聯合團隊開發。 華工的師兄目前才研二,就和志同道合的人組建團隊開發了這款實用型框架,實屬難得,打破了“幾乎所有好
matlab手寫遺傳演算法解決一元函式最值問題(例項)
問題:找出y=x4-4x3+3x+5 (xÎ[0,6])在[0,6]之間的最小值。 思路:用33位0,1變數來編碼x,3位編碼整數,30位編碼小數。理論上30位編碼小數可以將最小值對應的x精確到小數點後九位. 下面是我解決這個問題所有的函式,複製就可以運行了,不明白可以私
【 MATLAB 】遺傳演算法程式
有段時間,一直用為知筆記記筆記,可是後來使用了csdn部落格後,就不太喜歡用為知筆記了,可惜了我的會員。筆記裡的一些東西,例如公式什麼的,都不能直接複製過來,很是遺憾。 準備棄用為知筆記了,把這個遺傳演算法的程式粘過來吧,即使對我可能沒什麼用了,但也可能有需要用的人。 程
請提供一個c#編的遺傳演算法是關於鑽孔路徑優化的例子謝謝
怎麼把後臺的datatable新增到資料庫的表中視窗間控制元件的相互操作怎麼把後臺的datatable新增到資料庫的表中視窗間控制元件的相互操作 MaskedTextBox在Form中顯示不正確winform多選的實現方法MaskedTextBox在Form中顯示不正確win
遺傳演算法原理簡介及其MATLAB實踐
目錄 遺傳演算法簡介 遺傳演算法(Genetic Algorithm,GA)是一種進化演算法,其基本原理是仿效生物界中的“物競天擇、適者生存”的演化法則,它最初由美國Michigan大學的J. Holland教授於1967年提出。 遺傳演算法
2.遺傳演算法matlab實現(2):再加例項兩個(一元二元完整作圖,二維圖形,三維圖形以及進化過程圖)
(1)直接在命令視窗輸入以下程式碼: figure(1); hold on; lb=1;ub=2; %函式自變數範圍[1,2] ezplot('sin(10*pi*X)/X',[lb,ub]);
【轉】非常好的理解遺傳演算法的例子
非常好的理解遺傳演算法的例子 個人分類: 演算法 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。 例:求下述二元函式的最大值: (1) 個體編碼 遺傳演算法的運算物件
遺傳演算法的入門例子
遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。 例:求下述二元函式的最大值: (1) 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所
遺傳演算法--較容易理解的一篇講解
遺傳演算法 ( GA , Genetic Algorithm ) ,也稱進化演算法 。 遺傳演算法是受達爾文的進化論的啟發,借鑑生物進化過程而提出的一種啟發式搜尋演算法。因此在介紹遺傳演算法前有必要簡單的介紹生物進化知識。 一.進化論知識 作為遺傳演算法生
matlab基於遺傳演算法的最大熵值法的雙閾值影象分割
利用最佳直方圖熵法(KSW熵法)及傳統遺傳演算法實現灰度影象二閾值分割 matlab程式碼如下: 1、main.m(主函式): %%%利用最佳直方圖熵法(KSW熵法)及傳統遺傳演算法實現灰度影象二閾值分割 %%%主程式 %% 初始部分,讀取影象及計算
離散型遺傳演算法求解組合優化matlab實現
問題描述: 103個50維的節點中,選出n個節點進行組合,使其獲得較好的適應度值注意點:首先在原始資料檔案(txt)中,將相應的節點進行編號,編成1-103,放在第一列,之後再將編號對映到相應的真實節點上。需要資料檔案的小夥伴,可以到:https://download.csd
遺傳演算法(四)MATLAB GA工具箱使用 附解TSP問題
基本使用 1. 直接參見函式ga 函式原型:[x fval] = ga(@fitnessfun, nvars, options) x是使fitnessfun函式取最小值使的自變數值。nvars為自變數的數目即x向量中包含的元素個數,option