Advertisement
ForeverStrong

ProgramGłówny

Feb 2nd, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.27 KB | None | 0 0
  1. clear all
  2. clc
  3. disp('Już liczę poczekaj chwileczkę')
  4. %% Definicja granic zmiennych
  5. dg=-5.12; , gg=5.12;, krok=0.01;
  6. %% Definicja zbioru niewadomych
  7. x1  =   dg:krok:gg;
  8. x2  =   dg:krok:gg;
  9. %%  Definicje potrzebne do obsługi
  10. max     =   10000; % maxymalna ilośc pokoleń
  11. sigma   =   0.03^2; % prawdopodobieństwo początkowe
  12. s       =   length(x1); % granice losowania osobnika poczatkowego
  13. v       =   0; %zmiennne do debugowania
  14. z       =   0; %zmienne do debugowania
  15. licznikudanych  =   0; % counter do metody 1/5
  16.  
  17. %% losownie osbników poczatkowych
  18. a1  =   randi(s,1);
  19. a2  =   randi(s,1);
  20.  
  21. %%  operacje ewolucyjne
  22. for i=1:max
  23.   p1    =   randn();  
  24.   p2    =   randn();
  25.   e1    =   p1*sigmap; %parametrt do mutacji
  26.   e2    =   p2*sigmap; %parametrt do mutacji
  27.  
  28.     if i == 1
  29.         Yos1(i+1,:) =   x1(:,a1); % wpisanie osobników poczatkowych do procesu
  30.         Yos2(i+1,:) =   x2(:,a2); % wpisanie osobników poczatkowych do procesu
  31.     end
  32.    
  33.     if i>=2 % Proces mutacji
  34.         Yos1(i,:)   =   Yos1(i-1,:)+e1;
  35.         Yos2(i,:)   =   Yos2(i-1,:)+e2;
  36.     end
  37.         O(i,:)      =   licz(Yos1(i,:),Yos2(i,:)); %wartość funkcji
  38.     if i > 2
  39.         if  O(i-1,:) > O(i,:) %funkcja oceny
  40.             licznikudanych=licznikudanych+1; % inkrementacja countera
  41.         else
  42.          Yos1(i,:)  =   Yos1(i-1,:); % pominięcie procesu mutacji
  43.          Yos2(i,:)  =   Yos2(i-1,:); % gdy ocena nie spełnia założeń
  44.         end
  45.     end
  46.  
  47.   w     =   (i/licznikudanych);
  48.  
  49.     if licznikudanych > 0 %funkcja aktualizacji sigmy
  50.  
  51.         if  w < 0.2
  52.             sigmap  =   (1/0.82)*sigmap; % aktualizacja prawdopodobnieństwa
  53.             v       =    v+1; % debug ilości użytego warunku
  54.         end
  55.  
  56.         if w > 0.2
  57.             sigmap  =   0.82*sigmap; % aktualizacja prawdopodobnieństwa
  58.             z=z+1;              % debug ilości użytego warunku
  59.         end
  60.     end
  61.  
  62.             pkt1    =   Yos1(i,:); % wynik pkt1
  63.             pkt2    =   Yos2(i,:); % wynik pk2
  64.             oooo(i,:)   =  i;    % wynik ilośc generacji
  65. end
  66. %% Opracowywanie wyników
  67. rysuj;
  68. %% Wyświetlenie wyników
  69. disp('minimum funkcji można spodziewać sie w okolicach:')
  70. disp(pkt1)
  71. disp(pkt2)
  72. disp('Gdzie wartośc funkcji wynosi')
  73. disp(O(max,:))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement