Matlab遺傳演算法例項

2021-10-06 04:12:26 字數 1636 閱讀 5481

clear

;clc;

%popsize=input(

'輸入種群大小:\n');

%lengh=input(

'請輸入染色體長度:\n');

popsize=100;

lengh=10;

a=-1;

b=2;

%y=x*sin(10*pi*x)+1.0

%初始種群

pop=round(rand(popsize,lengh))

;%行:種群大小,列:染色體長度

%二進位制轉換十進位制

[px,py]

=size(pop)

;for i=1:py

pop1(:,i)

=2^(py-i).*pop(:,i)

;end

pop2=sum(pop1,2)

;%對應的實數 目標值

vpop=pop2*((b-a)/(

2^(lengh)-1

))-1.0;

x=vpop;

y=sin(10*pi*x).*x+1;

% m=1;

% m=m+1;

% s=zeros(100,1)

;% s(m,1)

=max(y)

;%選擇 適者生存

for i=1:px

cpoint=round(rand*(px-10))

; a=y(cpoint:cpoint+9,:)

;[y,u]

=max(a)

; j=u+cpoint-1;

newpop(i,:)

=pop(j,:)

;end

pop=newpop;

%交叉newpop=ones(size(pop))

;pc=0.6;%交叉概率

for i=1:2:px-1

if(randcpoint=round(rand*py)

; newpop(i,:)

=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];

newpop(i+1,:)

=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];

else

newpop(i,:)

=pop(i,:)

; newpop(i+1,:)

=pop(i+1,:)

; end

end%變異

%newpop=ones(size(pop))

;pb=0.02;

%newpop=pop;

for i=1:px

if(randcpoint=round(rand*py)

;if newpop(i,cpoint)

==0 newpop(i,cpoint)

=1;else

newpop(i,cpoint)

=0; end

endendpop=newpop;

%實驗報告

%s生產種群

%二進位制轉十進位制

%交叉 實驗題目 實驗內容 實驗** 實驗結果

遺傳演算法簡單例項

遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種符號串。本題中,用無符號二進位制整數來表示。因 x1,x2...

遺傳演算法的matlab實現

遺傳演算法是一種全域性最優化演算法,是運用了演化論優勝劣汰原理的隨機化搜尋方法。前些日子,在進行畢業設計的相關研究中,我接觸到了遺傳演算法,用其對乙個五元非線性函式進行最優化搜尋。平台使用的是matlab,主要使用的是謝菲爾德大學的matlab遺傳演算法工具箱。具體程式如下 clc clear al...

遺傳演算法介紹 內含例項

現代生物遺傳學中描述的生物進化理論 遺傳物質的主要載體是染色體 chromsome 染色體主要由dna和蛋白質組成。其中dna為最主要的遺傳物質。基因 gene 是有遺傳效應的片斷,它儲存著遺傳資訊,可以準確地複製,也能發生突變,並可通過控制蛋白質的合成而控制生物的狀態.生物自身通過對基因的複製 r...