Advertisement
Ostu

Untitled

Dec 10th, 2021
1,685
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.28 KB | None | 0 0
  1. % funkcja z losowaniem
  2. % binP - binarna nastawa P po losowaniu
  3. % binI - jak wyzej ale dla I
  4. % binD - jak wyzej dla dla D
  5. % WSZYSTKIE OSOBNIKI MAJA 8 BITOW!!! (wlasny warunek odgorny)
  6.  
  7. function PID=PopulacjaStart(ileOs)
  8. % IO - ilosc osobnikow
  9. % wiersz posiada 3 elementy - wynika to z faktu ze mamy trzy nastawy (nasze
  10. % P, I oraz D)
  11.  
  12. % nasze osobniki beda losowane
  13. min=0.1;
  14. max=1;
  15. LOS=(max-min).*rand(ileOs,3)+min;
  16.  
  17.  
  18. % musimy przypisac kazdemu wierszowi nastawe
  19. Pl=LOS(:,1);
  20. Il=LOS(:,2);
  21. Dl=LOS(:,3);
  22.  
  23. PIDl=[Pl,Il,Dl];
  24.  
  25. % przed zmiana na wartosci binarne zaokraglamy nasze nastawy do dwoch
  26. % miejsc po przecinku, lecz najpierw zwiekszamy je dwukrotnie
  27. PIDl=2*PIDl;
  28.  
  29. % zapis nastaw
  30. P=PIDl(:,1);
  31. I=PIDl(:,2);
  32. D=PIDl(:,3);
  33.  
  34.  
  35.  
  36. rPID=round(PIDl,2);
  37. % aby dokonac zamiany na wartosci binarne musimy zwiekszyc wartosci
  38. stoPID=rPID*100;
  39.  
  40. % zamiana wartosci regulatora na wartosci binarne
  41. % odgornie narzucamy liczbe bitow wynoszaca 8
  42. % wynika to z faktu ze na takich "bawilismy sie" piszac ten algorytm
  43. % genetyczny, dlatego najlatwiej nam na nich operowac
  44. binP=dec2bin(int32(stoPID(:,1)),8);
  45. binI=dec2bin(int32(stoPID(:,2)),8);
  46. binD=dec2bin(int32(stoPID(:,3)),8);
  47.  
  48. binnas=[string(binP), string(binI), (binD)];
  49.  
  50. binPID = char(binnas);
  51. PID= [P I D]
  52. %out= [P I D]
  53. end
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement