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

📄 ga_bin.m

📁 在matlab环境下
💻 M
字号:
clear all
clc
c=50;          %初始种群
T=1;
p=randint(c,15,[0,1]);
gray=zeros(3,5);
bin=zeros(3,5);
dec=zeros(3,1);
S=zeros(c,1);
x=zeros(c,3);
temp=zeros(3,5);
while(T<400)
for i=1:c
    temp(1,:)=p(i,11:15);
    temp(2,:)=p(i,6:10);
    temp(3,:)=p(i,1:5);
    for j=1:3
        bin(j,1)=temp(j,1);            %将格雷码转化为二进制
        for k=2:5
            bin(j,k)=xor(bin(j,k-1),temp(j,k));
        end
        m=4;
        for q=1:5
            dec(j)=dec(j)+bin(j,q)*(2^m);
            m=m-1;
        end
    end
    x1=dec(1);x2=dec(2);x3=dec(3);
    x(i,:)=[x1 x2 x3];
    dec=zeros(3,1);
    S(i)=(x1-5)^2+(x2-10)^2+(x3-1)^2; %计算适应度
end
minf(T)=min(S);
temp1=0;
min_index=find(S==min(S));
temp1=p(min_index(1),:);
S(find(min(S)))=[];
p(min_index(1),:)=[];
max=(31-5)^2+(31-10)^2+(31-1)^2;
sel_p=0;                             %计算选择概率
temp2=0;
for i=1:c-1
    temp2(i)=max-S(i);
end
sel_p=temp2/sum(temp2);             %各种群的选择概率
grab=zeros(c-1,2);                    %产生赌盘算子
grab(1,1)=0;
grab(1,2)=sel_p(1);
for i=2:c-1
    grab(i,1)=grab(i-1,2);
    grab(i,2)=sel_p(i)+grab(i,1);
end
select=rand(1,c-1);
temp4=zeros(c-1,15);
for i=1:c-1
    [r,h]=find(select(i)>grab(:,1)&select(i)<=grab(:,2));
    temp4(i,:)=p(r,:);
end
p=temp4;
pc=0.8;                   %交叉概率
couple1=randperm(c-1);
couple=couple1(1:round(pc*c));
temp3=0;
for i=1:round(pc*c/2)
        cross_bit=randint(1,1,[1,15]);
        temp3=p(couple(2*i-1),cross_bit);
        p(couple(2*i-1),cross_bit)=p(couple(2*i),cross_bit);
        p(couple(2*i),cross_bit)=temp3;
end
pm=0.1;                  %变异概率
temp5=randperm(c-1);
vary=temp5(1:round(pm*(c-1)));
for i=1:round(pm*c)
    vary_bit=randint(1,1,[1,15]);
    p(vary(i),vary_bit)= ~p(vary(i),vary_bit);
end
temp6=zeros(c,15);
temp6(1,:)=temp1;
temp6(2:c,:)=p;
p=temp6;
T=T+1;
end
xx=1:1:T-1;
plot(xx,minf)
title('最小值收敛曲线')
disp('最小值:')
min=minf(T-1)
disp('最佳解为:')
x1=x(min_index,1)
x2=x(min_index,2)
x3=x(min_index,3)
      

⌨️ 快捷键说明

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