您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用matlab遺傳算法求解最小值的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用matlab遺傳算法求解最小值文章都會有所收獲,下面我們一起來看看吧。
%% 清空環(huán)境變量
clc
clear
%% 初始化遺傳算法參數(shù)
%初始化參數(shù)
maxgen=100; %進化代數(shù),即迭代次數(shù)
sizepop=20; %種群規(guī)模
pcross=[0.4]; %交叉概率選擇,0和1之間
pmutation=[0.2]; %變異概率選擇,0和1之間
lenchrom=[1 1]; %每個變量的字串長度,如果是浮點變量,則長度都為1
bound=[-5 5;-5 5]; %數(shù)據(jù)范圍
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %將種群信息定義為一個結構體
avgfitness=[]; %每一代種群的平均適應度
bestfitness=[]; %每一代種群的最佳適應度
bestchrom=[]; %適應度最好的染色體
%% 初始化種群計算適應度值
% 初始化種群
for i=1:sizepop
%隨機產(chǎn)生一個種群
individuals.chrom(i,:)=Code(lenchrom,bound);
x=individuals.chrom(i,:);
%計算適應度
individuals.fitness(i)=fun(x); %染色體的適應度
end
%找最好的染色體
[bestfitness, bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色體
avgfitness=sum(individuals.fitness)/sizepop; %染色體的平均適應度
% 記錄每一代進化中最好的適應度和平均適應度
trace=[avgfitness bestfitness];
%% 迭代尋優(yōu)
% 進化開始
for i=1:maxgen
% 選擇
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
%交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 變異
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
% 計算適應度
for j=1:sizepop
x=individuals.chrom(j,:); %解碼
individuals.fitness(j)=fun(x);
end
%找到最小和最大適應度的染色體及它們在種群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次進化中最好的染色體
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %記錄每一代進化中最好的適應度和平均適應度
end
%進化結束
%% 結果分析
[r, c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('適應度曲線','fontsize',12);
xlabel('進化代數(shù)','fontsize',12);ylabel('適應度','fontsize',12);
axis([0,100,0,1])
關于“怎么使用matlab遺傳算法求解最小值”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用matlab遺傳算法求解最小值”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。