Projekt 4
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