clear all clc disp('Już liczę poczekaj chwileczkę') %% Definicja granic zmiennych dg=-5.12; , gg=5.12;, krok=0.01; %% Definicja zbioru niewadomych x1 = dg:krok:gg; x2 = dg:krok:gg; %% Definicje potrzebne do obsługi max = 10000; % maxymalna ilośc pokoleń sigma = 0.03^2; % prawdopodobieństwo początkowe s = length(x1); % granice losowania osobnika poczatkowego v = 0; %zmiennne do debugowania z = 0; %zmienne do debugowania licznikudanych = 0; % counter do metody 1/5 %% losownie osbników poczatkowych a1 = randi(s,1); a2 = randi(s,1); %% operacje ewolucyjne for i=1:max p1 = randn(); p2 = randn(); e1 = p1*sigmap; %parametrt do mutacji e2 = p2*sigmap; %parametrt do mutacji if i == 1 Yos1(i+1,:) = x1(:,a1); % wpisanie osobników poczatkowych do procesu Yos2(i+1,:) = x2(:,a2); % wpisanie osobników poczatkowych do procesu end if i>=2 % Proces mutacji Yos1(i,:) = Yos1(i-1,:)+e1; Yos2(i,:) = Yos2(i-1,:)+e2; end O(i,:) = licz(Yos1(i,:),Yos2(i,:)); %wartość funkcji if i > 2 if O(i-1,:) > O(i,:) %funkcja oceny licznikudanych=licznikudanych+1; % inkrementacja countera else Yos1(i,:) = Yos1(i-1,:); % pominięcie procesu mutacji Yos2(i,:) = Yos2(i-1,:); % gdy ocena nie spełnia założeń end end w = (i/licznikudanych); if licznikudanych > 0 %funkcja aktualizacji sigmy if w < 0.2 sigmap = (1/0.82)*sigmap; % aktualizacja prawdopodobnieństwa v = v+1; % debug ilości użytego warunku end if w > 0.2 sigmap = 0.82*sigmap; % aktualizacja prawdopodobnieństwa z=z+1; % debug ilości użytego warunku end end pkt1 = Yos1(i,:); % wynik pkt1 pkt2 = Yos2(i,:); % wynik pk2 oooo(i,:) = i; % wynik ilośc generacji end %% Opracowywanie wyników rysuj; %% Wyświetlenie wyników disp('minimum funkcji można spodziewać sie w okolicach:') disp(pkt1) disp(pkt2) disp('Gdzie wartośc funkcji wynosi') disp(O(max,:))