1. 程式人生 > >MATLAB遺傳演算法例子一

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('解的變化','種群均值的變化')

步驟:

  1. 初始化種群
  2. 分配適應度值FitnV
  3. 選擇、重組、變異
  4. 子代插入父代形成新種群
  5. 回到2,迴圈直至最大代數
  6. 得到最優種群,即最優解

本文程式碼大部分來自《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