Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Poszukiwanie minimum funkcji bledu metoda symulowanego wyzarzania.
- % Wybor nowego polozenia z rozkladem rownomiernym, akceptacja nastepuje z
- % pewnym rozkladem prawdopodobienstwa zaleznym od wielkosci zmniejszenia
- % bledu(dE) i temperatury(T):
- % h(dE,T) = 1/(1 + exp(dE/cT))
- % oraz pewnej stalej c. Jesli c mala dodatnia to algorytm redukuje sie
- % do szukania przypadkowego (akceptacja tylko modyfikacji zmniejszajacych blad),
- % jesli c duza to do bladzenia przypadkowego (poprawka nie zalezy od bledu)
- liczba_param = 2;
- liczba_cykli = 6000;
- N = liczba_param;
- Rozw = rand(1,N)*20-10; % rozw. poczatkowe
- T = 100; % pocz. krok iteracji
- Tmin = 0.03; % minimalny krok iteracji
- wT = 0.997; % wsp zminy kroku
- c = 0.1 % wsp. regulacji wplywu temperatury
- Emin = 10e40;
- Epop = 0;
- format long; % 15 miejsc znaczacych
- Droga = [Rozw];
- for cyk=1:liczba_cykli
- Rozw2 = [T*rand() T*rand()];
- %Rozw2 = ???; % nowe rozwiazanie (powinno byc uzaleznine od temperatury)
- E = fun10(Rozw2(1),Rozw2(2)); % wartosc funkcji
- dE = E - Epop; % roznica wartosi funkcji
- if rand < 1/(1+exp(dE/(c*T))) % warunek akceptacji
- Rozw = Rozw2;
- Epop = E;
- end
- if E < Emin % sprawdzenie czy jest rekord
- disp('Poprawiono minimum:')
- Emin = E
- disp('Dla rozwiazania:')
- Rozwmin = Rozw2
- Droga = [Droga ; Rozwmin];
- end
- T = T*wT; % nowa wartosc temperatury
- if T<Tmin
- T=Tmin;
- end
- end
- wykres_fun
- hold on
- plot(Droga(:,1)',Droga(:,2)');
- plot(Droga(:,1)',Droga(:,2)','ro');
- plot(Droga(end,1)',Droga(end,2)','gs');
- for i=1:length(Droga(:,1)')
- text(Droga(i,1)'+0.01, Droga(i,2)'+0.01, int2str(i), ...
- 'fontsize', 8);
- end
- hold off
Advertisement
Add Comment
Please, Sign In to add comment