Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. clear,clc;
  2. numcykle=1000; % pocet cyklov hladania
  3. lpop=500; % velkost populacie - kolko retazcov naraz testujem
  4. psub = 5; %pocet subpopulacii
  5. migr = 50; %pocet generacii, po ktorych nastane migracia
  6.  
  7. minFit = -10.^11;
  8. Space=[ones(1,5)*(0);ones(1,5)*10000000]; % rozsah prvkov v retazci
  9.  
  10.  
  11. Pop = zeros(lpop/psub,5,psub);
  12. Fit = zeros(lpop/psub,psub);
  13. for i=1:psub
  14. Pop(:,:,i)=genrpop((lpop/psub),Space);
  15. end
  16.  
  17. grafFit=zeros(1,numcykle);
  18. for j=1:numcykle
  19. for i=1:psub
  20. for x=1:lpop/psub
  21. Fit(x,i)=0.04*Pop(x,1,i) + 0.07*Pop(x,2,i) + 0.11*Pop(x,3,i) + 0.06*Pop(x,4,i) + 0.05*Pop(x,5,i);
  22. end
  23.  
  24. for i=1:psub
  25. for x=1:lpop/psub
  26. a = (Pop(x,1,i) + Pop(x,2,i) + Pop(x,3,i) + Pop(x,4,i) + Pop(x,5,i));
  27. if a > 10000000
  28. Fit(x,i) = Fit(x,i) - (a - 10000000);
  29. end
  30.  
  31. a = (Pop(x,1,i) + Pop(x,2,i));
  32. if a > 2500000
  33. Fit(x,i) = Fit(x,i) - (a - 2500000);
  34. end
  35.  
  36. a = (-Pop(x,4,i) + Pop(x,5,i));
  37. if a > 0
  38. Fit(x,i) = Fit(x,i) - a;
  39. end
  40.  
  41. a = (-0.5*Pop(x,1,i) - 0.5*Pop(x,2,i) + 0.5*Pop(x,3,i) + 0.5*Pop(x,4,i) - 0.5*Pop(x,5,i));
  42. if a > 0
  43. Fit(x,i) = Fit(x,i) - a;
  44. end
  45. end
  46. BestSub(i,:)=selbest(Pop(:,:,i),Fit(:,i)*(-1),1);
  47. FitSub(i)=0.04*BestSub(i,1) + 0.07*BestSub(i,2) + 0.11*BestSub(i,3) + 0.06*BestSub(i,4) + 0.05*BestSub(i,5);
  48. GrafSub(j,i)=FitSub(i);
  49. %x = (lpop/psub-10)/2;
  50. Best=selbest(Pop(:,:,i),Fit(:,i)*(-1),lpop/psub*0.15);
  51. Work=selrand(Pop(:,:,i),Fit(:,i)*(-1),(lpop/psub*0.7));
  52. Work = [Work;Best];
  53. Work=crossov(Work,4,0);
  54. Work=mutx(Work,0.1,Space);
  55. Work=muta(Work,0.3,ones(1,5)*100000,Space);
  56. Pop(:,:,i)= [Best;Work];
  57.  
  58. %disp(Pop(:,:,i));
  59. end
  60.  
  61. if mod(numcykle,migr)
  62. for i=1:psub-1
  63. Best=selbest(Pop(:,:,i),Fit(:,i)*(-1),1);
  64. Rand=selrand(Pop(:,:,i+1),Fit(:,i)*(-1),1);
  65.  
  66. Pop(end,:,i)= [];
  67. Pop(:,:,i) = [Pop(:,:,i);Rand];
  68.  
  69. Pop(end,:,i+1) = [];
  70. Pop(:,:,i+1) = [Pop(:,:,i+1);Best];
  71. end
  72. Best=selbest(Pop(:,:,i+1),Fit(:,i)*(-1),1);
  73. Rand=selrand(Pop(:,:,1),Fit(:,i)*(-1),1);
  74.  
  75. Pop(end,:,1) = [];
  76. Pop(:,:,1) = [Pop(:,:,1);Best];
  77.  
  78. Pop(end,:,i+1) = [];
  79. Pop(:,:,i+1) = [Pop(:,:,i+1);Rand];
  80. end
  81. end
  82. BestOne=selbest(BestSub(:,:),FitSub(:)*(-1),1);
  83. GrafFit(j)=0.04*BestOne(1) + 0.07*BestOne(2) + 0.11*BestOne(3) + 0.06*BestOne(4) + 0.05*BestOne(5);
  84.  
  85.  
  86.  
  87. end
  88.  
  89.  
  90. disp(BestOne);
  91. for b=1 : psub
  92. plot(GrafSub(b,:));
  93. hold on;
  94. end
  95. %plot(GrafFit);
  96. %hold on;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement