|
¾ßÌåµÄ³ÌÐò´úÂëÈçÏ£º
clc;
clear;
CC=200;
CCC=120;
%º¯Êý¶¨Òå
x1=single(3*(-1+2*rand(1,CC)));
x2=single(3*(-1+2*rand(1,CC)));
f1=0.5*(x1.^2+x2.^2)+sin(x1.^2+x2.^2);
f2=((3*x1-2*x2+4).^2)/8+((x1-x2+1).^2)/27+15;
f3=1./(x1.^2+x2.^2+1)-1.1*exp(-x1.^2-x2.^2);
%±äÁ¿¶¨Òå
u=CC;
pc=0.8;
pm=0.01;
cigema=0.0125;
E=0;
P=0;
A=[x1',x2',f1',f2',f3'];
xx=randi([1,CC]);
C=A(xx,:);
D=[x1',x2',A(:,3)./C(3),A(:,4)./C(4),A(:,5)./C(5),abs(A(:,3)./C(3))+abs(A(:,4)./C(4))+abs(A(:,5)./C(5))];
DD=D;
[E,P]=min(D(:,6));
a=D(P,3);
b=D(P,4);
c=D(P,5);
j=1;
F=[];
F(j,:)=D(P,:);
j=j+1;
D(P,:)=[];
i=1;
m=size(D,1);
mm=1;
count=0;
K=zeros(1,m);
KK=[];
KKK=[];
EE=[];
t=1;
gen=0;
FF=zeros(CCC,7);
while(gen<100)
%ÎÊÌâ³öÔÚÕâÁ½¸öwhileÑ»·ÖÐ
while(1)
for i=1:m
if(((D(i,3)<a)&&(D(i,4)<b)&&(D(i,5)<c))||...
((D(i,3)>a)&&(D(i,4)<b)&&(D(i,5)<c))||...
((D(i,3)<a)&&(D(i,4)>b)&&(D(i,5)<c))||...
((D(i,3)<a)&&(D(i,4)<b)&&(D(i,5)>c)))%||...
%((D(i,3)>a)&&(D(i,4)>b)&&(D(i,5)<c))||...
%((D(i,3)>a)&&(D(i,4)<b)&&(D(i,5)>c))||...
%((D(i,3)>a)&&(D(i,4)>b)&&(D(i,5)<c)))
F(j,:)=D(i,:);
K(i)=1;
j=j+1;
end
end
for i=1:m
if K(i)~=1
EE(t,:)=D(i,:);
t=t+1;
end
end
D(1:t-1,:)=EE(1:t-1,:);
D(t:m,:)=[];
K=zeros(1,t-1);
t=1;
F(j,:)=0;
KK(j)=1;
j=j+1;
[E,P]=min(D(:,6));
F(j,:)=D(P,:);
a=D(P,3);
b=D(P,4);
c=D(P,5);
D(P,:)=[];
m=size(D,1);
K=[K,zeros(1)];
j=j+1;
if m==0
% F(j,:)=0;
% KK(j)=1;
% j=j+1;
% F(j,:)=D(1,:);
break;
end
end
m=size(F,1);
mm=size(KK,2);
for i=1:mm
if KK(i)==1
KKK(1:i-t,:)=F(t:i-1,:);
KKK=sortrows(KKK,6);
F(t:i-1,:)=KKK(1:i-t,:);
KKK=[];
t=i+1;
end
end
KKK(t:m,:)=F(t:m,:);
KKK=sortrows(KKK,6);
F(t:i,:)=KKK(t:i,:);
%·ÖÅäÊÊÓ¦¶È ×îСµÄÖµÊÊÓ¦¶ÈΪ0.9 ×î´óµÄÖµÊÊÓ¦¶ÈΪ0.1
KKKK=zeros(m,1);
count=0.8/(CC-1);
t=0;
for i=1:m
if F(i,:)==0
t=t+1;
else
KKKK(i)=0.9-count*(i-1-t);
end
end
F=[F,KKKK];
F(find(sum(abs(F'))==0),:)=[];
m=size(F,1);
count=1;
while(1)
t=0.1+0.8*rand(1);
for mm=1:m
if F(mm,7)>t
FF(count,:)=F(mm,:);
count=count+1;
if(count>CCC)
break;
end
end
end
if(count>CCC)
break;
end
end
%ÔÓ½»
for m=1:20
if (rand(1)<0.8)
RR=randperm(10);
RRR=zeros(3,7);
RRR(1,1)=FF(RR(1),1)+FF(RR(2),1);
RRR(1,2)=FF(RR(1),2)+FF(RR(2),2);
RRR(2,1)=1.5*FF(RR(1),1)-0.5*FF(RR(2),1);
RRR(2,2)=1.5*FF(RR(1),2)-0.5*FF(RR(2),2);
RRR(3,1)=1.5*FF(RR(2),1)-0.5*FF(RR(1),1);
RRR(3,2)=1.5*FF(RR(2),2)-0.5*FF(RR(1),2);
for i=1:3
RRR(i,3)=(0.5*(RRR(i,1)^2+RRR(i,2)^2)+sin(RRR(i,1)^2+RRR(i,2)^2))/C(3);
RRR(i,4)=(((3*RRR(i,1)-2*RRR(i,2)+4)^2)/8+((RRR(i,1)-RRR(i,2)+1)^2)/27+15)/C(4);
RRR(i,5)=(1/(RRR(i,1)^2+RRR(i,2)^2+1)-1.1*exp(-(RRR(i,1)^2-(RRR(i,2)^2))))/C(5);
RRR(i,6)=abs(RRR(i,3))+abs(RRR(i,4))+abs(RRR(i,5));
RRR(i,7)=0;
end
RRR=sortrows(RRR,6);
FF(RR(1),:)=RRR(1,:);
FF(RR(2),:)=RRR(2,:);
end
end
%±äÒì
for m=1:10
if rand(1)<0.01
MM=randperm(10);
MMM=zeros(1,7);
MMM(1,:)=FF(MM(1),:);
t=rand(1)>0.5;
if t==0
[~,P]=max(FF(:,6));
MMM(1,1)=FF(MM(1),1)+(FF(MM(1),1)-FF(P,1))*rand(1);
MMM(1,2)=FF(MM(1),2)+(FF(MM(1),2)-FF(P,2))*rand(1);
else
[~,P]=min(FF(:,6));
MMM(1,1)=MMM(1,1)+(MMM(1,1)-FF(P,1))*rand(1);
MMM(1,2)=MMM(1,2)+(MMM(1,2)-FF(P,2))*rand(1);
end
MMM(1,3)=(0.5*(MMM(1,1)^2+MMM(1,2)^2)+sin(MMM(1,1)^2+MMM(1,2)^2))/C(3);
MMM(1,4)=(((3*MMM(1,1)-2*MMM(1,2)+4)^2)/8+((MMM(1,1)-MMM(1,2)+1)^2)/27+15)/C(4);
MMM(1,5)=(1/(MMM(1,1)^2+MMM(1,2)^2+1)-1.1*exp(-(MMM(1,1)^2-(MMM(1,2)^2))))/C(5);
MMM(1,6)=abs(MMM(1,3))+abs(MMM(1,4))+abs(MMM(1,5));
MMM(1,7)=0;
FF(MM(1),:)=MMM(1,:);
end
end
t=randperm(10);
t(2)=t(1)+4;
%D=zeros(1:CC-1,:);
D=[FF(:,1:6); F(t(1):t(2),1:6)];
[E,P]=min(D(:,6));
a=D(P,3);
b=D(P,4);
c=D(P,5);
j=1;
F=[];
F(j,:)=D(P,:);
j=j+1;
i=1;
m=size(D,1);
mm=1;
count=0;
K=zeros(1,m);
KK=[];
KKK=[];
EE=[];
t=1;
gen=gen+1;
end
Y1=FF(:,3).*C(3);
Y2=FF(:,4).*C(4);
Y3=FF(:,5).*C(5);
Y=[Y1 Y2 Y3];
plot3(Y1,Y2,Y3,'*');
xlim([0 10]);
ylim([0 60]);
zlim([-0.1 0.3]) |
|