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...