⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genetic.m

📁 遗传算法的原代码
💻 M
字号:
function [xo,fo] = genetic(f,x0,l,u,Np,Nb,Pc,Pm,eta,kmax)%遗传算法主程序N=length(x0)if nargin < 10,kmax=100;endif nargin < 9|eta > 1|eta <=0,eta=1;endif nargin < 8,Pm=0.01;endif nargin < 7,Pc=0.5;endif nargin < 6,Nb=8*ones(1,N);endif nargin < 5,Np=10;endNNb=sum(Nb);xo=x0(:)';l=l(:)';u=u(:)';fo=feval(f,xo);x(1,:)=xo;for n=2:Np,x(n,:)=l+rand(size(x0)).*(u-l);endP=gen_encode(x,Nb,l,u);for k=1:kmax    x=gen_decode(P,Nb,l,u);    for n=1:Np,fx(n)=feval(f,x(n,:));end    [fxb,nb]=min(fx)    if fxb < fo,fo=fxb;xo=x(nb,:);end    fx1=max(fxb)-fx;    fxm=fx1(nb);    if fxm<eps, return;end    for n=1:Np        x(n,:)=x(n,:)+eta*(fxm-fx1(n))/fxm*(x(nb,:)-x(n,:));    end    P=gen_encode(x,Nb,l,u);    is=shuffle([1:Np]);    for n=1:2:Np-1        if rand < Pc            P(is(n:n+1),:)=crossover(P(is(n:n+1),:),Nb);        end    end    P=mutation(P,Nb,Pm);end    

⌨️ 快捷键说明

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