Omawianym procesem jest reaktor fermentacji drożdży (Saccharomyces cerevisiae) [Ł14a, Ł08] schematycznie przedstawiony na rys. 12. Drożdże są powszechnie stosowane w różnych gałęziach przemysłu spożywczego: w piekarnictwie, w browarnictwie, w winiarstwie oraz w gorzelnictwie. Z punktu widzenia algorytmu regulacji reaktor fermentacji jest procesem jednowymiarowym: zmienną wejściową jest natężenie przepływu chłodziwa \(F_{\mathrm{ag}}\), zmienną wyjściową jest temperatura w reaktorze \(T_{\mathrm{r}}\).
Model fizykalny procesu fermentacji jest dość złożony$$ \begin{align} \frac{\mathrm{d}V(t)}{\mathrm{d}t}&=F_{\mathrm{i}}(t)-F_{\mathrm{e}}(t)\nonumber\\ % \frac{\mathrm{d}c_{\mathrm{X}}(t)}{\mathrm{d}t}&=\mu_{\mathrm{X}}(t) c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}}+c_{\mathrm{S}}(t)}\exp (-K_{\mathrm{P}} c_{\mathrm{P}}(t))-\frac{F_{\mathrm{e}}(t)}{V(t)}c_{\mathrm{X}}(t)\nonumber\\ % \frac{\mathrm{d}c_{\mathrm{P}}(t)}{\mathrm{d}t}&=\mu_{\mathrm{P}} c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}_1}+c_{\mathrm{S}}(t)}\exp (-K_{\mathrm{P}_1} c_{\mathrm{P}}(t))-\frac{F_{\mathrm{e}}(t)}{V(t)}c_{\mathrm{P}}(t)\nonumber\\ % % %cs - wersja 1 \frac{\mathrm{d}c_{\mathrm{S}}(t)}{\mathrm{d}t}&= -\frac{1}{R_{\mathrm{SX}}}\mu_{\mathrm{X}}(t) c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}}+c_{\mathrm{S}}(t)} \exp (-K_{\mathrm{P}} c_{\mathrm{P}}(t))\nonumber\\ % &\quad \, -\frac{1}{R_{\mathrm{SP}}}\mu_{\mathrm{P}} c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}_1}+c_{\mathrm{S}}(t)} \exp (-K_{\mathrm{P}_1}c_{\mathrm{P}}(t))+\frac{F_{\mathrm{i}}(t)}{V(t)}c_{\mathrm{S,in}}(t)-\frac{F_{\mathrm{e}}(t)}{V(t)}c_{\mathrm{S}}(t)\nonumber\\ % % %cs - wersja 2 %\frac{\mathrm{d}c_{\mathrm{S}}(t)}{\mathrm{d}t}&= -\frac{1}{R_{\mathrm{SX}}}\mu_{\mathrm{X}}(t) c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}}+c_{\mathrm{S}}(t)} \exp (-K_{\mathrm{P}} c_{\mathrm{P}}(t))\nonumber\\ %% %&\quad \, -\frac{1}{R_{\mathrm{SP}}}\mu_{\mathrm{P}} c_{\mathrm{X}}(t) \frac{c_{\mathrm{S}}(t)}{K_{\mathrm{S}_1}+c_{\mathrm{S}}(t)} \exp (-K_{\mathrm{P}_1}c_{\mathrm{P}}(t))\nonumber\\ %% %&\quad \, +\frac{F_{\mathrm{i}}(t)}{V(t)}c_{\mathrm{S,in}}(t)-\frac{F_{\mathrm{e}}(t)}{V(t)}c_{\mathrm{S}}(t)\nonumber\\ % % \frac{\mathrm{d}c_{\mathrm{O}_2}(t)}{\mathrm{d}t}&= (k_{\mathrm{la}})(t)(c_{\mathrm{O}_2}^*(t)-c_{\mathrm{O}_2}(t))-r_{\mathrm{O}_2}(t)-\frac{F_{\mathrm{e}}(t)}{V(t)}c_{\mathrm{O}_2}(t)\nonumber\\ % \frac{\mathrm{d}T_{\mathrm{r}}(t)}{\mathrm{d}t}&= \frac{F_{\mathrm{i}}(t)}{V(t)}(T_{\mathrm{in}}(t)+273)-\frac{F_{\mathrm{e}}(t)}{V(t)}(T_{\mathrm{r}}(t)+273)+\frac{r_{\mathrm{O}_2}(t)\triangle H_{\mathrm{r}}}{32\rho_{\mathrm{r}}C_{\mathrm{heat,r}}}\nonumber\\ % &\quad \, -\frac{K_{\mathrm{T}}A_{\mathrm{T}}(T_{\mathrm{r}}(t)-T_{\mathrm{ag}}(t))}{V\rho_{\mathrm{r}}C_{\mathrm{heat,r}}}\nonumber\\ % \frac{\mathrm{d}T_{\mathrm{ag}}(t)}{\mathrm{d}t}&= \frac{F_{\mathrm{ag}}(t)}{V_{\mathrm{j}}}(T_{\mathrm{in,ag}}(t)-T_{\mathrm{ag}}(t))+\frac{K_{\mathrm{T}}A_{\mathrm{T}}(T_{\mathrm{r}}(t)-T_{\mathrm{ag}}(t))}{V_j\rho_{\mathrm{ag}}C_{\mathrm{heat,ag}}} \nonumber \end{align}$$ $$ \begin{align} c_{\mathrm{O}_2}^*(t)&=(14{,}6-0{,}3943T_{\mathrm{r}}(t)+0{,}007714T_{\mathrm{r}}^2(t)-0{,}0000646T_{\mathrm{r}}^3(t))\times\nonumber\\ & \quad \times 10^{-\sum (H_iI_i)(t)}\nonumber\\ (H_iI_i)(t)&=0{,}5H_{\mathrm{Na}}\frac{m_{\mathrm{NaCl}}}{M_{\mathrm{NaCl}}} \frac{M_{\mathrm{Na}}}{V(t)}+2H_{\mathrm{Ca}}\frac{m_{\mathrm{CaCO_3}}}{M_{\mathrm{CaCO_3}}} \frac{M_{\mathrm{Ca}}}{V(t)}+2H_{\mathrm{Mg}}\frac{m_{\mathrm{MgCl_2}}}{M_{\mathrm{MgCl_2}}} \frac{M_{\mathrm{Mg}}}{V(t)}\nonumber\\ %\noalign{\smallskip}% &\quad +0{,}5H_{\mathrm{Cl}}\left( \frac{m_{\mathrm{NaCl}}}{M_{\mathrm{NaCl}}}+2\frac{m_{\mathrm{MgCl_2}}}{M_{\mathrm{MgCl_2}}} \right) \frac{M_{\mathrm{Cl}}}{V(t)}+2H_{\mathrm{CO_3}}\frac{m_{\mathrm{CaCO_3}}}{M_{\mathrm{CaCO_3}}} \frac{M_{\mathrm{CO_3}}}{V(t)}\nonumber\\ &\quad +0{,}5H_{\mathrm{H}}10^{-\mathrm{pH}(t)}+0{,}5H_{\mathrm{OH}}10^{-(14-\mathrm{pH}(t))}\nonumber\\ (k_{\mathrm{la}})(t)&=(k_{\mathrm{la}})_01{,}024^{T_{\mathrm{r}}(t)-20}\nonumber\\ r_{\mathrm{O}_2}(t)&=\mu_{\mathrm{O}_2}\frac{1}{Y_{\mathrm{O}_2}}c_{\mathrm{X}}(t)\frac{c_{\mathrm{O}_2}(t)}{K_{\mathrm{O}_2}+c_{\mathrm{O}_2}(t)}\nonumber\\ \mu_{\mathrm{X}}(t)&=A_1\exp \left ( -\frac{E_{\mathrm{a}_1}}{R(T_{\mathrm{r}}(t)+273)} \right )-A_2\exp \left ( -\frac{E_{\mathrm{a}_2}}{R(T_{\mathrm{r}}(t)+273)} \right) \nonumber \end{align}$$ i ma wiele parametrów $$\begin{equation} \begin{array} [l]{lll} A_1=9{,}5\cdot 10^{8} & (k_{\mathrm{la}})_0=38 \ 1/\mathrm{h} & M_{\mathrm{Mg}}=24 \ \mathrm{g/mol}\\ A_2=2{,}55\cdot 10^{33} & K_{\mathrm{O}_2}=8{,}86 \ \mathrm{mg/l} & M_{\mathrm{MgCl_2}}=95 \ \mathrm{g/mol}\\ A_{\mathrm{T}}=1 \ \mathrm{m}^2 & K_{\mathrm{P}}=0{,}139 \ \mathrm{g/l} & M_{\mathrm{Na}}=23 \ \mathrm{g/mol}\\ C_{\mathrm{heat,ag}}=4{,}18 \ \mathrm{J}/(\mathrm{g} \cdot \mathrm{K}) & K_{\mathrm{P}_1}=0{,}07 \ \mathrm{g/l} & M_{\mathrm{NaCl}}=58{,}5 \ \mathrm{g/mol}\\ C_{\mathrm{heat,r}}=4{,}18 \ \mathrm{J}/(\mathrm{g} \cdot \mathrm{K}) & K_{\mathrm{S}}=1{,}03 \ \mathrm{g/l} & R=8{,}31 \ \mathrm{J}/ (\mathrm{mol} \cdot \mathrm{K})\\ E_{\mathrm{a}_1}=55000 \ \mathrm{J/mol} & K_{\mathrm{S}_1}=1{,}68 \ \mathrm{g/l} & R_{\mathrm{SP}}=0{,}435\\ E_{\mathrm{a}_2}=220000 \ \mathrm{J/mol} & K_{\mathrm{T}}=3{,}6 \cdot 10^5 \ \mathrm{J}/(\mathrm{h} \cdot \mathrm{m}^2 \cdot \mathrm{K}) & R_{\mathrm{SX}}=0{,}607\\ H_{\mathrm{Ca}}=-0{,}303 & m_{\mathrm{CaCO_3}}=100 \ \mathrm{g} & V_{\mathrm{j}}=50 \ \mathrm{l}\\ H_{\mathrm{Cl}}=0{,}844 & m_{\mathrm{MgCl_2}}=100 \ \mathrm{g} & Y_{\mathrm{O}_2}=0{,}97 \ \mathrm{mg/mg}\\ H_{\mathrm{CO_3}}=0{,}485 & m_{\mathrm{NaCl}}=500 \ \mathrm{g} & \triangle H_{\mathrm{r}}=518 \ \mathrm{kJ/mol \ \mathrm{O}_2}\\ H_{\mathrm{H}}=-0{,}774 & M_{\mathrm{Ca}}=40 \ \mathrm{g/mol} & \mu_{\mathrm{O}_2}=0{,}5 \ 1/\mathrm{h}\\ H_{\mathrm{Mg}}=-0{,}314 & M_{\mathrm{CaCO_3}}=90 \ \mathrm{g/mol} & \mu_{\mathrm{P}}=1{,}79 \ 1/\mathrm{h}\\ H_{\mathrm{Na}}=-0{,}550 & M_{\mathrm{Cl}}=35{,}5 \ \mathrm{g/mol} & \rho_{\mathrm{ag}}=1000 \ \mathrm{g/l}\\ H_{\mathrm{OH}}=0{,}941 & M_{\mathrm{CO_3}}=60 \ \mathrm{g/mol} & \rho_{\mathrm{r}}=1080 \ \mathrm{g/l} \end{array} \nonumber \end{equation}$$ W nominalnym punkcie pracy reaktora fermentacji wartości zmiennych są następujące \begin{equation} \begin{array} {ll} c_{\mathrm{O_2}}=3{,}106953 \ \mathrm{mg/l} & F_{\mathrm{i}}=51 \ \mathrm{l/h}\nonumber\\ c_{\mathrm{P}}=12{,}515241 \ \mathrm{g/l} & \mathrm{pH}=6\nonumber\\ c_{\mathrm{S}}=29{,}738924 \ \mathrm{g/l} & T_{\mathrm{ag}}=27{,}053939 \ ^{\circ}\mathrm{C}\nonumber\\ c_{\mathrm{S,in}}=60 \ \mathrm{g/l} & T_{\mathrm{in}}=25 \ ^{\circ}\mathrm{C}\nonumber\\ c_{\mathrm{X}}=0{,}904677 \ \mathrm{g/l} & T_{\mathrm{in,ag}}=15 \ ^{\circ}\mathrm{C}\nonumber\\ F_{\mathrm{ag}}=18 \ \mathrm{l/h} & T_{\mathrm{r}}=29{,}573212 \ ^{\circ}\mathrm{C}\nonumber\\ F_{\mathrm{e}}=51 \ \mathrm{l/h} & V=1000 \ \mathrm{l}\nonumber \end{array} \end{equation}
W czasie badań fizykalny model procesu jest traktowany jako „rzeczywisty” (symulowany) proces, natomiast w algorytmach regulacji predykcyjnej stosuje się modele empiryczne. Aby zapewnić dobrą generalizację modelu należy wykorzystać trzy zbiory danych [O06, R96]:
Optymalizacja parametrów modelu (uczenie) odbywa się przy wykorzystaniu zbioru danych uczących (błąd modelu jest minimalizowany dla tego zbioru). Dodatkowo, w każdej iteracji algorytmu uczącego oblicza się wartość błędu dla danych weryfikujących. Gdy błąd ten zaczyna rosnąć, uczenie przerywa się. Zapobiega to „przeuczeniu” modelu (dopasowaniu do danych uczących). Wybór konkretnego modelu spośród kilku różniących się architekturą lub początkowymi wartościami parametrów odbywa się wyłącznie na podstawie błędu dla zbioru danych weryfikujących. Na końcu procesu identyfikacji, aby niezależnie sprawdzić wybrany model, oblicza się błąd dla zbioru danych testowych.
Na rys. 13 przedstawiono trzy zbiory danych wykorzystywane w trakcie identyfikacji modeli empirycznych reaktora fermentacji. Wszystkie zbiory zawierają po 4000 próbek. Zostały one otrzymane w wyniku symulacji modelu fizykalnego. Do sygnału wyjściowego dodano szum, który imituje niedokładność pomiaru.
Po przeprowadzeniu uczenia wielu różnych struktur modeli neuronowych, wybrano model perceptronowy o dynamice drugiego rzędu $$\begin{equation} y(k)=f(u(k-1),u(k-2),y(k-1),y(k-2))\label{w_reaktor1_mod_nlin} \end{equation}$$ Model neuronowy zawiera trzy neurony ukryte o funkcji aktywacji tangensa hiperbolicznego. Ponieważ zakresy zmienności sygnału wejściowego i sygnału wyjściowego procesu są różne, na potrzeby modelowania zmienne te zostały przeskalowane: \(u=0{,}01(F_{\mathrm{ag}}-F_{\mathrm{ag,nom}})\), \(y=0{,}1(T_r-T_{\mathrm{r,nom}})\), gdzie wielkości \(F_{\mathrm{ag,nom}}=18\) l/h, \(T_{\mathrm{r,nom}}=29{,}573212 \ ^{\circ}\mathrm{C}\) odpowiadają nominalnemu punktowi pracy. Model neuronowy jest bardzo dokładny, dla zbioru danych weryfikujących jego błąd wynosi \(1{,}8273\cdot 10^{-1}\). Wyznaczono również model liniowy drugiego rzędu $$\begin{equation} y(k)=b_1u(k-1)+b_2u(k-2)-a_1y(k-1)-a_2y(k-2)\label{w_reaktor1_mod_lin} \end{equation}$$ Model liniowy ma te same argumenty (wejścia) co model neuronowy. Niestety, na skutek nieliniowości procesu model liniowy jest bardzo niedokładny, jego błąd dla zbioru danych weryfikujących wynosi \(7{,}7787\cdot 10^1\). Na rys. 14 przedstawiono wyjście modelu neuronowego i modelu liniowego dla zbioru danych weryfikujących.
W układzie regulacji reaktora fermentacji zastosowano następujące algorytmy regulacji predykcyjnej:
Wszystkie algorytmy mają takie same parametry: \(N=10\), \(N_{\mathrm{u}}=3\), \(\lambda=1{,}5\) (zostały one dobrane eksperymentalnie). Przyjęto ograniczenia wartości sygnału sterującego: \(F_{\mathrm{ag}}^{\min}=0 \ \mathrm{l/h}\), \(F_{\mathrm{ag}}^{\max}=200 \ \mathrm{l/h}\). W każdej iteracji algorytmów GPC i NPL rozwiązuje się zadanie optymalizacji kwadratowej (zastosowano metodę ograniczeń aktywnych), do rozwiązania zadania optymalizacji nieliniowej w algorytmie NO zastosowano sekwencyjne programowanie kwadratowe.
Sprawdzono działanie wszystkich trzech algorytmów regulacji przy skokowej zmianie wartości zadanej o \(\pm0{,}5 \ ^{\circ}\mathrm{C}\) w chwili \(k=1\). Wyniki symulacji przedstawiono na rys. 15. W obu przypadkach algorytm liniowy pracuje bardzo wolno. Spowodowane to jest nieadekwatnością liniowego modelu procesu. Oba algorytmy nieliniowe pracują dużo szybciej, przeregulowanie jest znacznie mniejsze. Co więcej, przebiegi uzyskane w suboptymalnym algorytmie NPL są praktycznie takie same jak w złożonym obliczeniowo algorytmie NO. Inne wyniki symulacji reaktora fermentacji (dla innych trajektorii zadanych, zakłóceń, również w obecności szumu i zakłóceń) podano w pracach [Ł14a, Ł08], porównano również złożoność obliczeniową algorytmów NPL i NO.
Poprzednia strona: 3. Sieci neuronowe w regulacji predykcyjnej | Następna strona: 5. Przykład 2: modelowanie i regulacja predykcyjna reaktora neutralizacji |