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

📄 untitled6.m

📁 基于遗传算法的模糊指派
💻 M
字号:
clc
clear all
nind=40;B=[];
n=8;o=[];P=[];
pc=0.6;Q1=[];
pm=0.1;L=[];
A=[12 30 45 56 79 25 37 87;15 25 60 72.5 92.5 25 68.5 51.5;20 18 60 70 80 25 50 34;18 27 57 77.5 87 42 40 80;19 37.5 53 60 80 33 80 43.5;17.5 35 77 51.5 99 36 63.5 49.5;17 24 49 50 86 31 77 57;27 31 52 63 90 29 48.5 50];
A1=[1 2 0.5 1 0.6 1 0.9 2;8.33 75 33.33 18.75 18.75 8.33 114.08 24.08;400 324 3600 4900 6400 625 2500 11.56;2 0.8 3249 52.08 56.33 21.33 0.5 6400;361 52.08 1 3600 0.3 0.7 0.5 90.75;2.08 8.33 48 24.08 5.33 12 60.75 36.75;1 1 0.2 0.8 0.6 1 0.7 2;729 961 8.33 3969 0.8 0.8 24.08 2500];
%for h=1:20
chrom=create(nind,n);
tic
for x=1:100
    %chrom=create(nind,n);
    Newch2=[];
    Fitnv=rank(A,A1,chrom,nind,n);
    New=select('sus',chrom,Fitnv');
    cro=cros(nind,New,n,pc);
    mut=muta(nind,n,cro,pm);
    for v=1:2:nind-1
    Newch1=[mut(v:v+1,:);New(v:v+1,:)];
    W=rank(A,A1,Newch1,4,n);
    o=[];
       for j=1:4
          b=max(W);
          if W(1,j)==b
            W(1,j)=0;
            o=[o,j];
            H=size(o);
          end
          H=size(o);
          if H(1,2)==2 break
          end
      end
       if H(1,2)~=2 
          for j=1:4
          b=max(W);
          if W(1,j)==b
            W(1,j)=0;
            o=[o,j];
            H=size(o);
          end
          H=size(o);
          if H(1,2)==2 break
          end
          end
      end
      Newch2=[Newch2;Newch1(o,:)];
      end
    %mut=muta(nind,n+1,n,Newch2,pm);
    chrom=Newch2;
    Fitnv=rank(A,A1,chrom,nind,n);
   maxval(x)=max(Fitnv);
   minval(x)=min(Fitnv);
   avgval(x)=sum(Fitnv)/40;
end

    
x=1:100;
plot(x,maxval,'b-',x,minval,'r-',x,avgval,'k-')

%chrom=Newch2

Fitnv=rank(A,A1,chrom,nind,n);
l=max(Fitnv)
for i=1:nind
    if Fitnv(1,i)==l
        j=i;
        B=[B,j];
    end
end
Z=chrom(B,:)
%[m,n]=size(chrom(B,:));
%P=[];
%for d=1:m
    %p=0;
    %for e=1:n
        %p=p+A(e,Z(d,e));
        %end
    %P=[P,p];
    %end
%P;
%Q1=[Q1,P(1,1)];
%end
%Q1;
%min(Q1)
%1/(1+min(Q1))
%for d2=2:m
    %if Z(d2,:)==Z(1,:)
       %Z2=[Z(1,:);Z(d2+1:m,:)];
       
       %else  Z2=[Z(1,:);Z(d2:m,:)];
       %end
       %end
%Z2
toc;
t=toc


⌨️ 快捷键说明

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