?? main.m
字號:
%用遺傳算法進行簡單函數的優化
clear
bn=22; %個體串長度
inn=50; %初始種群大小
gnmax=200; %最大代數
pc=0.75; %交叉概率
pm=0.05; %變異概率
%產生初始種群
s=round(rand(inn,bn));
%計算適應度,返回適應度f和累積概率p
[f,p]=objf(s);
gn=1;
while gn<gnmax+1
for j=1:2:inn
%選擇操作
seln=sel(s,p);
%交叉操作
scro=cro(s,seln,pc);
scnew(j,:)=scro(1,:);
scnew(j+1,:)=scro(2,:);
%變異操作
smnew(j,:)=mut(scnew(j,:),pm);
smnew(j+1,:)=mut(scnew(j+1,:),pm);
end
s=smnew; %產生了新的種群
%計算新種群的適應度
[f,p]=objf(s);
%記錄當前代最好和平均的適應度
[fmax,nmax]=max(f);
fmean=mean(f);
ymax(gn)=fmax;
ymean(gn)=fmean;
%記錄當前代的最佳個體
x=n2to10(s(nmax,:));
xx=-1.0+x*3/(power(2,bn)-1);
xmax(gn)=xx;
gn=gn+1
end
gn=gn-1;
%繪制曲線
subplot(2,1,1);
plot(1:gn,[ymax;ymean]);
title('歷代適應度變化','fonts',10);
legend('最大適應度','平均適應度');
string1=['最終適應度',num2str(ymax(gn))];
gtext(string1);
subplot(2,1,2);
plot(1:gn,xmax,'r-');
legend('自變量');
string2=['最終自變量',num2str(xmax(gn))];
gtext(string2);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -