?? mainprog.m
字號:
%???????????????????????????????????????????????????????????????????%
% 求下列函數的最大值????????????????????????????????????????????????%
%????????f(x)=10*sin(5x)+7*cos(4x)??????????x∈[0,10]???????????????%
%?? 將 x 的值用一個10位的二值形式表示為二值問題?????????????????????%
%----------------------------------------------
% 編程
%----------------------------------------------
% 2.8 主程序
%遺傳算法主程序
%Name:genmain05.m
clear
%clf
popsize=50; %設置初始參數,群體大小
chromlength=27*161*40; %字符串長度(個體長度),染色體長度(將課程表轉化為27*161*40個單元元素進行優化)
pc=0.6; %設置交叉概率,本例中交叉概率是定值,若想設置變化的交叉概率可用表達式表示,或從寫一個
%交叉概率函數,例如用神經網絡訓練得到的值作為交叉概率
pm=0.001; %設置變異概率,同理也可設置為變化的
tic
pop=initpop(popsize,chromlength); %運行初始化函數,隨機產生初始群體
toc
for i=1:100%20為迭代次數
tic
[objvalue]=calobjvalue(pop);%計算目標函數
toc
tic
fitvalue=calfitvalue(objvalue); %計算群體中每個個體的適應度
toc
tic
[newpop]=selection(pop,fitvalue); %復制
toc
tic
[newpop]=crossover(pop,pc); %交叉
toc
tic
[newpop]=mutation(pop,pm);%變異
toc
tic
[bestindividual,bestfit]=best(newpop,fitvalue);%求出群體中適應值最大的個體及其適應值
toc
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
%x(i)=decodechrom(pop5,1,chromlength)*10/1023;
pop=newpop;
end
y(i)
pop
%fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
%grid on
%hold on
%plot(x,y,'r*')
%hold off
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -