資源簡介
matlab實(shí)現(xiàn)的遺傳算法,包含遺傳算法的編碼,選擇,交叉,變異,適應(yīng)度函數(shù)
代碼片段和文件信息
%?%
%編碼方式:?基本二進(jìn)制編碼
%Input:?????FitFunc:????Any?function
%???????????pCrossover:?probability?of?crossover?default?0.5
%???????????pMutation:??probability?of?mutation??default?0.04
%???????????GroupNum:???number?of?individuals?of?the?virtual?group?default?30
%???????????MaxIter:????maximum?iterations
%???????????MaxRepeat:??(optional)determine?the?convergence?standard?判斷收斂
%parent.fitness
%parent.chrom
function?Result?=?MyGA(FitFunc?pCrossover?pMutation?GroupNum?MaxIter?MaxRepeat)
????%Default?parameters
????if?nargin?6
????????MaxRepeat?=?10;
????????if?nargin?5
????????????MaxIter?=?1000;
????????????if?nargin?4
????????????????GroupNum?=?50;
????????????????if?nargin?3
????????????????????pMutation?=?0.04;
????????????????????if?nargin?2
????????????????????????pCrossover?=?0.5;
????????????????????end
????????????????end
????????????end
????????end
????end
????Result??=??[];
????epsilon?=??1e-5;
????iter????=??0;
????iRepeat?=??1;
????bit?????=??22;?????%precision
????thisMax?=??0;
???
????parent??=??InitGroup(GroupNum?FitFunc?bit);???%Generate?initial?population
????while?iter?????????children1?=?Crossover(parent?pCrossover/iter^0.1);??%Return?crossovered?chromes
????????children.chrom?=?[];
????????children.fitness?=?[];
????????children.chrom?=?Mutation([parent.chrom;?children1]?pMutation/iter^0.1);
????????children.fitness?=?CalcFit(children.chrom?FitFunc?bit);
????????children?=?select(children?GroupNum);
????????parent?=?children;
????????iter?=?iter?+?1;
????????%parent.chrom;
????????%[m?I]?=?max(parent.fitness)
????????if?(thisMax-max(parent.fitness))/max(parent.fitness)?????????????iRepeat?=?iRepeat?+?1;
????????else?
????????????iRepeat?=?1;
????????end
????????thisMax?=?max(parent.fitness);
????????disp(thisMax)
????????for?i?=?1:size(parent.chrom)
????????????if?parent.fitness(i)?==?thisMax
????????????????j?=?i;
????????????????plot(Decoding(parent.chrom(i:)bit)parent.fitness(i)‘go‘);
????????????end
????????end
????????Result?=?[Result;?thisMax];??
????end
????plot(Decoding(parent.chrom(j:)bit)parent.fitness(j)‘ro‘);
end
%Encoding?method:?普通二進(jìn)制編碼
function?parent?=?InitGroup(GroupNum?Fit
- 上一篇:圖像的高通濾波程序代碼
- 下一篇:matlab編寫的LBFGS優(yōu)化算法
評(píng)論
共有 條評(píng)論