Metody Monte Carlo


Algorytm Simulated Annealing (Symulowane Wyżarzanie)

Algorytm był dostępny w bibliotece scipy do wersji 0.14 (scipy.optimize.anneal). W wersjach nowszych został zastąpiony przez algorytm basin-hopping (scipy.optimize.basinhopping).

Zadania - Python

Na podstawie dokumentacji scipy rozwiąż następujące zadania:

Zadanie 1

Wygeneruj funkcję sinc(lub inaczej zwana funkcją Sa), która dostępna jest w bibliotece numpy. Funkcja powinna zawierać conajmniej 100 próbek w przedziale [-20, 20]. Wyświetl funkcję za pomocą biblioteki matplotlib.pyplot. Jak widzisz funkcja posiada maksimum globalne w punkcie x=0. Zmień funkcję aby lokalne maksimum znajdowało się w punkcie x=5. Następnie dokonaj optymalizacji wygenerowanej funkcji używając algorytmu basin-hopping. Jako punkt początkowy przyjmij zero. Zinterpretuj otrzymane wyniki, wyświetl jej na bazowym wykresie.

Zadanie 2

Używając metod Monte Carlo, oblicz wartość liczby PI.Spróbuj graficznie przedstawić rozwiązanie problemu. Podpowiedź: https://academo.org/demos/estimating-pi-monte-carlo/

Zadanie 3

Na podstawie poprzednich zajęć, używając algorytmów genetycznych wyszukaj minimum dla funkcji Rastrigina. Funkcja ta jest jedną z funkcji testowych. Znajdź funkcję oraz wyświetl jej wykres powierzchniowy. Dla czytelności spróbuj również uzyskać wykres konturowy - po to by zobaczyć lokalne minima i globalne minimum.
Obszar wyszukiwania ogranicz do punktu [-5.12, 5.12].
Następnie wyszukaj minimum tej funkcji wiedząc, że rozmiar populacji wynosi 100. Co oznacza rozmiar populacji ?

Do algorytmów ewolucyjnych w bibliotece scipy służy polecenie optimize.differential_evolution. Jest ono dostępne od wersji 0.15, w starszych wersjach biblioteki algorytmy ewolucyjne były jako osobny pakiet biblioteki scipy (scipy.ga).