?? flch6eg1.asv
字號(hào):
% 求下列函數(shù)的最大值????????????????????????????????????????????????%
%????????f(x)=10*cos(5*x)-4*x??????????x∈[0,10]???????????????%
%?? 將 x 的值用一個(gè)10位的二值形式表示為二值問題?????????????????????%
%----------------------------------------------
% 編程
%----------------------------------------------
% 主程序
%遺傳算法主程序
clear
clf
x2=0.1;x1=0.2;x0=0.05;e=0;
popsize=20; %設(shè)置初始參數(shù),群體大小
chromlength=10; %字符串長(zhǎng)度(個(gè)體長(zhǎng)度),染色體長(zhǎng)度
pc=0.6; %設(shè)置交叉概率,本例中交叉概率是定值,若想設(shè)置變化的交叉概率可用表達(dá)式表示,或從寫一個(gè)
%交叉概率函數(shù),例如用神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的值作為交叉概率
pm=0.001; %設(shè)置變異概率,同理也可設(shè)置為變化的
pop=initpop(popsize,chromlength); %運(yùn)行初始化函數(shù),隨機(jī)產(chǎn)生初始群體
for i=1:30 %20為迭代次數(shù)
[objvalue]=calobjvalue(pop);%計(jì)算目標(biāo)函數(shù)
fitvalue=calfitvalue(objvalue); %計(jì)算群體中每個(gè)個(gè)體的適應(yīng)度
[newpop]=selection(pop,fitvalue); %復(fù)制
[newpop]=crossover(pop,pc); %交叉
[newpop]=mutation(pop,pc);%變異
[bestindividual,bestfit]=best(pop,fitvalue);%求出群體中適應(yīng)值最大的個(gè)體及其適應(yīng)值
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
xx=x(i)
x2=x1+0.1*e+0.2*(x1-x0);
x0=x1;x1=x2;
xx=6.5*x2+4.3*x1+3.2*x0;
yN=1/(1+exp(-xx));
yNN(i)=yN
yp=1-exp(-i/2);
%yp=1
ypp(i)=yp
e=0.5*(yp-yN).^2
pop=newpop;
end
y(i)
%fplot('10*cos(3*x)-4*x',[0 10])
i=1:30
plot(i,ypp,i,yNN,'rx')
grid on
hold on
%plot(x,y,'g*')
hold off
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -