gas.m

来自「使用遗传算法实现关于函数极值问题的求解」· M 代码 · 共 49 行

M
49
字号
function [ok]=gas(popsize,lchrom,pcross,pmutation,maxgen)
% solve the max value of f(x)=x^2 in [0 31] by using GAs,

ok=0;
%%%%%%%%%%%% define variables
popsize=4;         % popular size
lchrom=5;          % length of chromosome
pcross=0.8;
pmutation=0.05;
maxgen=20;         % max generation
%%%%%%%%%%%%% initial variables
oldpop=inital(popsize,lchrom)
newpop=zeros(popsize,lchrom);
bestever=zeros(maxgen,1);
bestsite=zeros(maxgen,1);
sumfit=0;
% maxfit=0;
% maxsite=0;
fitness=zeros(popsize,1);
[value10]=b2d(oldpop)
[sumfit,bestever(1),bestsite(1),fitness]=cfitness(value10,lchrom);

%%%%%%%%%%%%%%%%%%%%%% GAs Operation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for gen=1:maxgen

	for m=1:popsize
	mate(m)=select(fitness,sumfit);
	end

	newpop=oldpop(mate,:)

	for m=1:2:popsize
        [newpop(m,:),newpop(m+1,:)]=cross(newpop(mate(m),:),newpop(mate(m+1),:),pcross,lchrom)

	end
        x=randint(1,popsize)
            
        newpop(x,:)=mutation(newpop(x,:),pmutation,lchrom)
        

    [value10]=b2d(newpop)
    [sumfit,bestever(gen),bestsite(gen),fitness]=cfitness(value10,lchrom)
    oldpop=newpop
end
x=[1:gen];
figure
plot(x,bestsite)
title('函数f(x)=x^2在[0 31]的最大值')
ok=1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?