Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all
- clc;
- numcykle=1000; % pocet cyklov hladania
- pocet_retazcov=90; % velkost populacie - kolko retazcov naraz testujem
- pokuta=10^10;
- Space=[-10 -10 -10 -10 -10 -10 -10 ; 10 10 10 10 10 10 10]; % rozsah prvkov v retazci
- Pop=genrpop(pocet_retazcov,Space);
- for i=1:numcykle
- for x=1:pocet_retazcov
- Fit(x)=(Pop(x,1)-10)^2 + 5*((Pop(x,2)-12)^2) + Pop(x,3)^4 + 3*((Pop(x,4)-11)^2) + 10*(Pop(x,5)^6)+7*(Pop(x,6)^2) + Pop(x,7)^4 - 4*(Pop(x,6)*Pop(x,7))-10*Pop(x,6)-8*Pop(x,7);
- end
- for x=1:pocet_retazcov
- a=0;
- if (127-(2*Pop(x,1)^2)-3*Pop(x,2)^4-Pop(x,3)-4*(Pop(x,4)^2)-5*Pop(x,5))<0
- a=a+1;
- end
- if (282-7*Pop(x,1)-3*Pop(x,2)-10*(Pop(x,3)^2)-Pop(x,4)+Pop(x,5))<0
- a=a+1;
- end
- if (196-23*Pop(x,1)-(Pop(x,2))^2-6*(Pop(x,6)^2)+8*Pop(x,7)<0)
- a=a+1;
- end
- if ((-4*(Pop(x,1)^2))-Pop(x,2)^2+(3*Pop(x,1)*Pop(x,2))-2*(Pop(x,3)^2)-5*Pop(x,6)+11*Pop(x,7) < 0)
- a=a+1;
- end
- if a~=0
- Fit(x)=Fit(x) + pokuta;
- end
- end
- BestOne=selbest(Pop,Fit,1);
- grafFit(i)=(BestOne(1)-10)^2 + 5*((BestOne(2)-12)^2) + BestOne(3)^4 + 3*((BestOne(4)-11)^2) + 10*(BestOne(5)^6)+7*(BestOne(6)^2) +BestOne(7)^4 - (4*BestOne(6)*BestOne(7))-10*BestOne(6)-8*BestOne(7);
- Best=selbest(Pop,Fit,[10 10 5 3 2]);
- Work=seltourn(Pop,Fit,30);
- Work = [Work;Best];
- Work=crossov(Work,4,1);
- Work=mutx(Work,0.1,Space);
- Work=muta(Work,0.1,ones(1,7)*10,Space);
- Pop=[Best;Work];
- end
- disp(BestOne);
- plot(grafFit);
- axis([0 numcykle 0 2500]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement