Projekt 4
Strona: | SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych |
Kurs: | Integracja Technik Sztucznej Inteligencji |
Książka: | Projekt 4 |
Wydrukowane przez użytkownika: | Gość |
Data: | sobota, 11 października 2025, 17:50 |
Opis
Strojenie
wybranych parametrów regulatora rozmytego przy wykorzystaniu algorytmów
genetycznych
1. Zadanie
Celem zadania jest dobór nastaw regulatora rozmytego przy wykorzystaniu jednego z algorytmów inteligencji masowej. Można zatem częściowo skorzystać z opracowanych rozwiązań w projekcie 1 i projekcie 2.
2. Realizacja
Należy wykonać następujące kroki:
- Zaprojektować strukturę rozmytego układu regulacji. Dostosować strukturę układu regulacji tak, aby umożliwiała strojenie (dobór) nastaw wybranych parametrów.
- Ocenić jakość działania układu regulacji dla wartości domyślnych nastaw. Należy wybrać minimum dwa wskaźniki jakości regulacji, najlepiej takie same jak w projekcie 1. Należy pamiętać o akceptowalnym przebiegu sygnału sterującego.
- Zaimplementować jeden z algorytmów inteligencji masowej.
- Określić odpowiednią funkcję celu.
- Sparametryzować algorytm i przeprowadzić proces doboru parametrów regulatora.
- Ocenić jakość działania układu regulacji dla nowych (optymalnych) parametrów.
- Porównać otrzymane rezultaty z tymi z projekcie 2 i skomentować wyniki.
3. Założenia
- Optymalizację powinna uwzględniać pracę w możliwie całym zakresie. Wymaga to odpowiedniej rozbudowy funkcji wyznaczającej wskaźniki jakości regulacji.
- Ocenić jakość regulacji możliwie w całym zakresie zmienności
PV
, czyli dla wartości przyjętych jako punkt pracy oraz dla wartości skrajnych.
4. Uwagi
- Można wykorzystać implementację rozmytego układu regulacji z projektu 2.
- Można skorzystać z implementacji algorytmu inteligencji masowej zastosowanego w projekcie 1.
5. Przykłady
W przykładzie wykorzystano elementy opracowane i przygotowane do realizacji projektu 1 i projektu 2.
Wykorzystany w projekcie 2 regulator rozmyty pozwala bezpośrednio na modyfikację parametrów ke
, kde
oraz kdCV
, które zostały zdefiniowane jako parametry bloku regulatora rozmytego oraz udostępnione jako zmienne wejściowe symulatora. Zdecydowano się na optymalizację parametru ke
oraz kdCV
.
Wykorzystano tę samą implementację algorytmu genetycznego co w projekcie 1. Zmodyfikowano funkcję celu, tak aby uwzględnić oba dostrajane pareametry.
def fitness_func(ga_instance, solution, solution_idx):
# Symulacja
system.in_var_val('ke', solution[0])
system.in_var_val('kdCV', solution[1])
proc_vars = system.simulate(tend, 'control')
# Wyznaczenie wskaźników oceny jakości regulacji
eval = calculate_quality_indicators(dt, proc_vars['t'], sp, proc_vars['e'])
fitness1 = 1.0 / (eval['st'] + 0.000001)
fitness2 = 1.0 / (eval['ISE'] + 0.000001)
progress_bar(solution_idx + 1, sol_per_pop, 1)
print(f" Step: {solution_idx + 1} Solution: kp={solution[0]} Eval - st: {eval['st']}, ISE: {eval['ISE']}")
return [fitness1, fitness2]
Zmodyfikowano także parametry algorytmu genetycznego tak, aby uwzględnić oba strojone parametry:
# Parametry AG
num_generations = 100
num_parents_mating = 10
sol_per_pop = 20
# dostrajne będą parametry: ke, kdCV
num_genes = 2
init_range_low = 0.01
init_range_high = 10
Najpierw dokonano oceny jakości regulacji dla struktury i parametrów modelu rozmytego z projektu 2.

Następnie dokonano oceny jakości regulacji dla parametrów modelu rozmytego dobranego w wyniku prowadzonej optymalizacji. Jak widać, uzyskano lepsze rezultaty, chociaż cały czas pozostało wiele do poprawienia.

ke
, kdCV
wyznaczonej przez algorytm genetyczny