kamilosxd678

[SEM4][labSI] Wyżarzanie

May 13th, 2013
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.98 KB | None | 0 0
  1. % Poszukiwanie minimum funkcji bledu metoda symulowanego wyzarzania.
  2. % Wybor nowego polozenia z rozkladem rownomiernym, akceptacja nastepuje z
  3. % pewnym rozkladem prawdopodobienstwa zaleznym od wielkosci zmniejszenia
  4. % bledu(dE) i temperatury(T):
  5. %   h(dE,T) = 1/(1 + exp(dE/cT))
  6. % oraz pewnej stalej c. Jesli c mala dodatnia to algorytm redukuje sie
  7. % do szukania przypadkowego (akceptacja tylko modyfikacji zmniejszajacych blad),
  8. % jesli c duza to do bladzenia przypadkowego (poprawka nie zalezy od bledu)
  9.  
  10. liczba_param = 2;
  11. liczba_cykli = 6000;
  12. N = liczba_param;
  13. Rozw = rand(1,N)*20-10;                 % rozw. poczatkowe
  14. T = 100;                                 % pocz. krok iteracji
  15. Tmin = 0.03;                              % minimalny krok iteracji
  16. wT = 0.997;                                % wsp zminy kroku
  17. c = 0.1                                 % wsp. regulacji wplywu temperatury
  18. Emin = 10e40;
  19. Epop = 0;
  20. format long;                            % 15 miejsc znaczacych
  21. Droga = [Rozw];
  22. for cyk=1:liczba_cykli
  23.    Rozw2 = [T*rand() T*rand()];
  24.    %Rozw2 = ???;                          % nowe rozwiazanie (powinno byc uzaleznine od temperatury)
  25.  
  26.    E = fun10(Rozw2(1),Rozw2(2));        % wartosc funkcji
  27.    
  28.    dE = E - Epop;                       % roznica wartosi funkcji
  29.    if rand < 1/(1+exp(dE/(c*T)))        % warunek akceptacji
  30.       Rozw = Rozw2;    
  31.       Epop = E;
  32.    end
  33.    
  34.    if E < Emin                          % sprawdzenie czy jest rekord
  35.       disp('Poprawiono minimum:')
  36.       Emin = E
  37.       disp('Dla rozwiazania:')
  38.       Rozwmin = Rozw2  
  39.       Droga = [Droga ; Rozwmin];
  40.    end
  41.    
  42.    T = T*wT;                            % nowa wartosc temperatury
  43.    if T<Tmin
  44.       T=Tmin;
  45.    end
  46. end
  47.  
  48. wykres_fun
  49. hold on
  50. plot(Droga(:,1)',Droga(:,2)');
  51. plot(Droga(:,1)',Droga(:,2)','ro');
  52. plot(Droga(end,1)',Droga(end,2)','gs');
  53.  
  54. for i=1:length(Droga(:,1)')
  55.     text(Droga(i,1)'+0.01, Droga(i,2)'+0.01, int2str(i), ...
  56.     'fontsize', 8);
  57. end
  58. hold off
Advertisement
Add Comment
Please, Sign In to add comment