[Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 05/04/2023, 11:34

Salve ragazzi devo fare un progetto di dimanica e controllo non lineare. Devo controllare un sistema non lineare con vari tipologia di controllo e avevo intenzione di fare un modello con il DeepMPC. Avete da consigliarmi qualche modello non lineare da controllare? E avete da passarmi qualche materiale di DeepMPC? Preferibilemte qualche modello non lineare con al massimo 3 variabili di stato? Anche script di matlab toolbox da consigliare ecc...?
Non posso portare questi modelli perchè bannati:
• brusselator,
• chemostato,
• oscillatore di Van der Pol,
• modello di FitzHugh-Nagumo,
• modello preda-predatore (Lotka-Volterra),
• levitatore magnetico.
• pendolo planare
MrChopin
Junior Member
Junior Member
 
Messaggio: 84 di 184
Iscritto il: 14/10/2016, 16:54

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda ingres » 05/04/2023, 13:12

In rete puoi trovare modelli di reali apparati da controllare di vario tipo e natura. Di seguito ne riporto alcuni che, magari ancora un pò semplificati, possono essere un buono spunto.

1) Modello di un reattore di fermentazione
https://www.aidic.it/cet/16/50/029.pdf

2) Modello di un CSTR
https://en.wikipedia.org/wiki/Continuou ... nk_reactor

3) Modello temperatura vapore surriscaldato di un power plant
https://www.researchgate.net/publicatio ... ower_Plant

4) Turbina Eolica
https://www.osti.gov/etdeweb/servlets/purl/20675096
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 723 di 1752
Iscritto il: 30/10/2022, 11:45

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 06/04/2023, 10:37

ingres ha scritto:In rete puoi trovare modelli di reali apparati da controllare di vario tipo e natura. Di seguito ne riporto alcuni che, magari ancora un pò semplificati, possono essere un buono spunto.
....
2) Modello di un CSTR
https://en.wikipedia.org/wiki/Continuou ... nk_reactor


Eh lo so! Stavo provando a fare da due giorni il CSTR, perchè c'erano tool e materiale di matlab su DeepMPC di cui ero molto interessato soprattutto per il campo BCI attivo, e utilizzando il tool e il materiale di matalab avrei modo di confrontare i miei risultati con quelli matlab per capire se sono giusti o meno.
Ma sto impazzendo perchè non riesco a trovare i punti di equilibrio perchè le equazioni del sistema sono un casino. Sai darmi una mano per qualche comando che posso usare ho provato di tutto.

Immagine

Queste sono le equazioni del sistema.
$ { ( (dC_A(t))/dt=F/V(C_(Af)(t)-C_A(t))-k_0e^(-E/(RT(t)))C_A(t) ),( (dT(t))/dt=F/V(T_f(t)-T(t))-(DeltaH)/(rhoC_p)k_0e^(-E/(RT(t)))C_A(t)-(UA)/(rhoC_p)(T(t)-T_c(t)) ):} $

Soggetto ai seguenti vincoli:

$ { ( 0<=C_A(t)<=10),( 298<=T(t)<=800 ):} $

Dove:
1) $C_A$: è la concentrazione del reagente $A$ misurato in $(kmol)/m^3$ ho considerato che la disponibilità di reagente per questa reazione chimita sia compreso tra le $0$ e le $10(kmol)/m^3$
2) $T$: è la temperatura del reattore CSTR che ho considerato compresa tra i $298 K$ altrimenti in natura non avvengono che io sappia reazioni chimiche e $800K$ (a $1000k$ è la temperatura del plasma quindi penso che questo sia un range fattibile)
3) $C_(Af)$: è la concentrazione del reagente $A$ che inserisco dall'esterno, misurato in $(kmol)/m^3$ ho considerato che la disponibilità di reagente per questa reazione chimica sia compreso tra le $0$ e le $10$ $(kmol)/m^3$ che sarebbe legato all'ingresso $u_1$ della figura che potrei fissare ad un massimo di $10(kmol)/m^3$
4) $T_(f)$: è la temperature del bocchettone dove inserisco il fluido che definisce la temperatura del reagente che sarebbe legato all'ingresso $u_2$ che posso fissare a $298K$
5) $T_(c)$: è la temperature del bocchettone dove inserisco il fluido che definisce la temperatura del reagente che sarebbe legato all'ingresso $u_3$ che posso far variare per raffredare per scambio termico il reattore CSTR

Mi sono basato su queste due fonti:
https://it.mathworks.com/help/mpc/gs/cstr-model.html
https://www.rpi.edu/dept/chem-eng/WWW/faculty/bequette/education/links_mods/cstr/

Tutto bello tutto giusto ma non riesco a fare l'analisi delle fasi ne tanto meno riesco a trovare la soluzione di queste equazioni per trovare i punti di equilibrio:

$ { ( F/V(C_(Af)(t)-C_A(t))-k_0e^(-E/(RT(t)))C_A(t)=0),( F/V(T_f(t)-T(t))-(DeltaH)/(rhoC_p)k_0e^(-E/(RT(t)))C_A(t)-(UA)/(rhoC_p)(T(t)-T_c(t))=0 ):} $

Soggetto ai seguenti vincoli:

$ { ( 0<=C_A(t)<=10),( 298<=T(t)<=800 ):} $

ho usato questi comandi Matlab:

Codice:
F = 1; % Tasso di flusso volumetrico m^3/h
V = 1; % Volume reattore m^3
R = 1.985875; % Costante dei gas ideali di Boltzmann kcal/(kmol·K)
dH = 5960; % Entalpia kcal/kmol   
E = 11843; % Energia di Reazione kcal/kmol   
k= 34930800; % Costante non termica 1/h
rho_cp = 500; % Densita moltiplicata per la capacità termica
UA = 150; % Scambio termico alla superficie
T_f = 300; % Temperatura del flusso di alimentazione in ingresso K
C_af=10; % Concentrazione del reagente A nel flusso di alimentazione in ingresso, misurata in kmol/m^3
T_c = 292;

a=F/V;
b=E/R;
c=dH*k/(rho_cp);
d=UA/(V*rho_cp);
syms x_1 x_2
equ1= (a)*(C_af-x_1)-x_1*k*exp(-(b/x_2)) ==0;
equ2= (a)*(T_f-x_2)-(c)*x_1*k*exp(-(b/x_2))-(d)*(x_2) ==0;
equ3= x_1 >=0;
equ4= x_2 >=298;
equ5= x_1 <=10;
equ6= x_2 <=800;

set_equ=[equ1, equ2, equ4, equ5, equ6];
[x_1 x_2]=vpasolve(set_equ,[x_1,x_2])

OR

[x_1 x_2]=solve(set_equ,[x_1,x_2])


Come la metto metto il risultato è lo stesso:

Immagine

Niente. E per non parlare di pplane8 che va a casaccio che una volta mi caccia un punto di equilibrio altre volte no capisco le variazione parametriche possono far cambiare la topologia dei punti di equilibrio ma non capisco che errori faccio.

Una volta mi esce questo:
Immagine

Una volta mi esce questo

Immagine
MrChopin
Junior Member
Junior Member
 
Messaggio: 86 di 184
Iscritto il: 14/10/2016, 16:54

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 06/04/2023, 11:14

ingres ha scritto:In rete puoi trovare modelli di reali apparati da controllare di vario tipo e natura. Di seguito ne riporto alcuni che, magari ancora un pò semplificati, possono essere un buono spunto.

1) Modello di un reattore di fermentazione
https://www.aidic.it/cet/16/50/029.pdf

2) Modello di un CSTR
https://en.wikipedia.org/wiki/Continuou ... nk_reactor

3) Modello temperatura vapore surriscaldato di un power plant
https://www.researchgate.net/publicatio ... ower_Plant

4) Turbina Eolica
https://www.osti.gov/etdeweb/servlets/purl/20675096


Ma penso per i motivi di cui sopra mi arrendo al fatto che non ce la farò mai a risolvere quelle equazioni perchè non credo che siano risolvibili e quindi che ne pensi di questo modello?

https://it.mathworks.com/help/deeplearn ... ulink.html

Immagine
MrChopin
Junior Member
Junior Member
 
Messaggio: 87 di 184
Iscritto il: 14/10/2016, 16:54

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda ingres » 06/04/2023, 12:14

Ti dovessi dire mi sembra che manchi un T_c nella seconda equazione.

Comunque miei suggerimenti

1) Usa tranquillamente un modello più semplice. Il secondo modello di CSTR che hai individuato va altrettanto bene per lo scopo che ti proponi.

2) Il problema di non riuscire a trovare un punto di equilibrio dipende da tanti fattori. Scartate le situazioni banali di errori nel modello, può essere un problema che si parte troppo da lontano oppure delle limitazioni eccessive sugli ingressi oppure un'instabilità propria del modello, ecc.
Se i tool falliscono e si vuole proprio addivenire ad una soluzione, solitamente conviene impostare anche il problema del controllo in modo semplificato, individuando le variabili da controlllare e mettendo qualche semplice PID come controllore per generare le azioni di comando ovvero gli ingressi esterni al modello, lasciando agli stessi, almeno inizialmente, un range ampio di variazione.
Si decidono dei set realistici e guadagni cautelativi per i PID e quindi si attiva la simulazione e si vede se si riesce a convergere ad una situazione di regime, che è il punto di equilibrio cercato.

Fammi sapere se sei riuscito ad andare avanti :D
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 733 di 1752
Iscritto il: 30/10/2022, 11:45

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 06/04/2023, 16:10

ingres ha scritto:Ti dovessi dire mi sembra che manchi un T_c nella seconda equazione.

Comunque miei suggerimenti

1) Usa tranquillamente un modello più semplice. Il secondo modello di CSTR che hai individuato va altrettanto bene per lo scopo che ti proponi.

2) Il problema di non riuscire a trovare un punto di equilibrio dipende da tanti fattori. Scartate le situazioni banali di errori nel modello, può essere un problema che si parte troppo da lontano oppure delle limitazioni eccessive sugli ingressi oppure un'instabilità propria del modello, ecc.
Se i tool falliscono e si vuole proprio addivenire ad una soluzione, solitamente conviene impostare anche il problema del controllo in modo semplificato, individuando le variabili da controlllare e mettendo qualche semplice PID come controllore per generare le azioni di comando ovvero gli ingressi esterni al modello, lasciando agli stessi, almeno inizialmente, un range ampio di variazione.
Si decidono dei set realistici e guadagni cautelativi per i PID e quindi si attiva la simulazione e si vede se si riesce a convergere ad una situazione di regime, che è il punto di equilibrio cercato.

Fammi sapere se sei riuscito ad andare avanti :D


Ti faccio fare due risate ho chiesto a chatgpt usando una vpn mi ha stampato questo codice:

Codice:
% Definizione delle variabili simboliche
syms x_1 x_2

% Definizione dei parametri noti
a = 1; % valore noto di a
C_af = 0.5; % valore noto di C_af
T_f = 400; % valore noto di T_f
k = 0.1; % valore noto di k
b = 0.2; % valore noto di b
c = 0.3; % valore noto di c
d = 0.4; % valore noto di d

% Definizione delle equazioni
equ1 = a*(C_af - x_1) - x_1*k*exp(-b/x_2);
equ2 = a*(T_f - x_2) - c*x_1*k*exp(-b/x_2) - d*x_2;
equ3 = x_1 >= 0;
equ4 = x_2 >= 298;
equ5 = x_1 <= 10;
equ6 = x_2 <= 800;

% Definizione della funzione di obiettivo
fun = @(x) double([isAlways(equ1); isAlways(equ2); isAlways(equ3); isAlways(equ4); isAlways(equ5); isAlways(equ6)]);

% Risoluzione del sistema di equazioni
x0 = [0; 400]; % punto iniziale della soluzione
sol = fsolve(fun, x0);

% Estrazione dei risultati
x_1_sol = sol(1);
x_2_sol = sol(2);

% Stampa dei risultati
fprintf('Risultati:\n');
fprintf('x_1: %.4f\n', x_1_sol);
fprintf('x_2: %.4f\n', x_2_sol);


Usa fsolve per risolverla ma come risultato mi esce che il punto di equilibrio stia a x1=0 ovvero assenza del concetrato A e x2 tempeuratura a 400K gli ho fatto fare anche il codice matlab per il DeepMPC (Spolier non funziona)
MrChopin
Junior Member
Junior Member
 
Messaggio: 88 di 184
Iscritto il: 14/10/2016, 16:54

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda ingres » 06/04/2023, 16:42

Che sono gli stessi valori che mi sembra assuma come punto iniziale di innesco per il calcolo.
Alla fine non è stato in grado di trovare la soluzione e ha mantenuto i valori iniziali.

Comunque CA = 9.5 e T=293.57 risulterebbero essere i valori di equilibrio. Prova a ricontrollare le equazioni e a rilassare il vincolo inferiore su T.
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 737 di 1752
Iscritto il: 30/10/2022, 11:45

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 06/04/2023, 17:46

ingres ha scritto: Comunque CA = 9.5 e T=293.57 risulterebbero essere i valori di equilibrio. Prova a ricontrollare le equazioni e a rilassare il vincolo inferiore su T.


Mi puoi passare lo script per favore al meno capisco l'errore magari mi perdo in un bicchiere d'acqua
MrChopin
Junior Member
Junior Member
 
Messaggio: 89 di 184
Iscritto il: 14/10/2016, 16:54

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda ingres » 06/04/2023, 17:54

Non ho in questo momento a disposizione Matlab, quindi ho banalmente riscritto le equazioni in Excel e usato il relativo Solver.

Ma se prendi le equazioni che hai già scritto in Matlab, controlli bene la seconda equazione (come ti ho detto mi sembra che manchi la sottrazione con T_c) e anzichè imporre che T>298 imponi T>290, con qualunque solver di Matlab secondo me arrivi al risultato.

Prova e sappimi dire.
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 738 di 1752
Iscritto il: 30/10/2022, 11:45

Re: [Generico] Consigli di sistemi non lineari da studiare e controllare

Messaggioda MrChopin » 06/04/2023, 18:53

ingres ha scritto:Non ho in questo momento a disposizione Matlab, quindi ho banalmente riscritto le equazioni in Excel e usato il relativo Solver.

Ma se prendi le equazioni che hai già scritto in Matlab, controlli bene la seconda equazione (come ti ho detto mi sembra che manchi la sottrazione con T_c) e anzichè imporre che T>298 imponi T>290, con qualunque solver di Matlab secondo me arrivi al risultato.

Prova e sappimi dire.


L'ho fatto ma non mi trovo con te mi trovo che
Codice:
x_1 =9.999999809301705435983268588863
x_2 = 169.6907474353380559633941211231

e purtroppo non ha senso questa soluzione perchè 170K sono -113 gradi e non ha senso una reazione chimica a quella temperature. Ma qua secondo me è una questione parametrica perchè secondo me cambia in base ai parametri. Mi passi i tuoi?
MrChopin
Junior Member
Junior Member
 
Messaggio: 90 di 184
Iscritto il: 14/10/2016, 16:54

Prossimo

Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite