Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Strategia risolutiva per problema apparentemente banale

Analisi, geometria, algebra, topologia...

Moderatori: Foto UtenteDirtyDeeds, Foto UtenteIanero, Foto UtentePietroBaima

0
voti

[1] Strategia risolutiva per problema apparentemente banale

Messaggioda Foto Utenteboiler » 31 ott 2018, 18:22

Ciao a tutti

Ho un problema che possiamo modellare come la miscelazione di acqua a due differenti temperature per ottenere un certo flusso ad una certa temperatura.

Schematicamente:


Ho una riserva infinita di acqua calda (diciamo 100°C) e acqua fredda (diciamo 0°C).
Ho inoltre 5 rubinetti con i quali posso regolare il flusso.
L'obbiettivo è ottenere in uscita una portata e una temperatura ben definite (per esempio 0.5 l/min a 4°C).

I rubinetti hanno una portata limitata sia in basso che in alto. Possono però essere chiusi completamente.
Per esempio il rubinetto 1 può fornire o 0 l/min o qualsiasi valore tra 0.0006 e 0.03 l/m.

A valle dei rubinetti 1 e 2 si forma una miscela che viene poi controllata dal rubinetto 3. La somma del flusso di 1 e 2 deve sempre essere maggiore al flusso impostato in 3. Miscela in eccesso viene smaltita attraverso il troppopieno.

Valgono tutte le semplificazioni del caso (miscelazione perfetta e istantanea, capacità termica del sistema nulla...)

Se mettessimo una persona con un minimo di pazienza davanti a questo sistema, sarebbe in grado in poco tempo di impostare i flussi per ottenere il risultato desiderato in uscita.

Ma come affrontare il problema se a risolverlo deve essere un computer?

La prima idea che mi è venuta è di cercare di ottenere il flusso usando solo 4 e 5.
Se ci riesco, bene. Altrimenti entra in gioco 3.

Già solo questo passaggio porta però ad un'esplosione delle possibilità: il flusso richiesto in ognuno dei due rubinetti può essere
a) troppo basso
b) accettabile
c) troppo alto
Sono 9 possibili combinazioni, di cui una (accettabile e accettabile) risolve il problema. Tutte le altre 8 necessitano di una correzione dei flussi impostati e l'intervento del rubinetto 3 (di conseguenza anche di 1 e 2).
E qui abbiamo 1, 2 e 3 che possono assumere gli stati a), b) o c). Sono 27 possibilità, che vanno moltiplicate con 8 e portano a 216 possibilità. Se mi metto a programmarlo in modo classico mi diventa una giungla ingestibie di if-else if- else if-...-else.

Stavo quindi pensando ad un approccio di backtracking, ma non sono sicuro che sia poi tanto piú facile.

Ammetto che mi è anche passato per la testa di calcolare una look-up table, ma non è proprio elegante e tenendo conto delle caratteristiche dei "rubinetti" veri, verrebbe una LUT di 2.4 terabytes °#^

Idee?

Boiler
Avatar utente
Foto Utenteboiler
14,1k 4 7 13
G.Master EY
G.Master EY
 
Messaggi: 2374
Iscritto il: 9 nov 2011, 12:27

1
voti

[2] Re: Strategia risolutiva per problema apparentemente banale

Messaggioda Foto Utentebrabus » 31 ott 2018, 18:31

Io inizierei semplificando drasticamente le cose e imponendo lo stesso comando alle coppie di rubinetti 1-5 e 2-4. In questo modo la temperatura e la portata a valle di 4-5 e a monte del troppo pieno saranno sempre le stesse.

Per basse portate, tieni 3 chiuso e regoli solo con 4 e 5.
Qualora la portata totale richiesta fosse superiore a quella erogabile dai soli 4 e 5 (ossia quando uno dei due è già impostato alla portata massima), inizi ad aprire il 3.
Alberto.
Avatar utente
Foto Utentebrabus
17,0k 3 11 13
G.Master EY
G.Master EY
 
Messaggi: 2356
Iscritto il: 26 gen 2009, 15:16

2
voti

[3] Re: Strategia risolutiva per problema apparentemente banale

Messaggioda Foto Utentearkeo2001 » 31 ott 2018, 18:33

Mi pare un problema di programmazione lineare; il metodo del simplesso è per esempio implementato nelle routines di Numerical Recipes e i sorgenti sono credo anche online. Quindi su un normale PC non dovresti avere problemi a cavartela. Chiaramente se sei su un micro la vedo dura anche se fino a un certo punto, ricordo che il sorgente C son poche decine di righe e forse ci sta dentro senza troppo penare.

Se invece cerchi una soluzione più analitica (e credo ci sia una specializzazione del metodo in un caso come questo) alzo le mani, mi sembra che te la cavi molto meglio di me e allora mi metto in finestra a seguire il topic.

EDIT: nel frattempo l'ho trovato eccolo qua. Il listato della routine con tutti i commenti necessari è alla fine del PDF:

http://www.it.uom.gr/teaching/linearalgebra/NumericalRecipiesInC/c10-8.pdf
Avatar utente
Foto Utentearkeo2001
400 3 6
Frequentatore
Frequentatore
 
Messaggi: 261
Iscritto il: 1 ago 2012, 9:12

1
voti

[4] Re: Strategia risolutiva per problema apparentemente banale

Messaggioda Foto Utenteboiler » 1 nov 2018, 1:29

Foto Utentebrabus, non posso. Ho omesso un dettaglio importante. I rubinetti hanno portate diverse e un motivo c'è: Se voglio ottenere acqua a -per esempio- 99.8°C, usando la miscelazione diretta non ce la faccio. La portata minima del rubinetto 4 è eccessiva.
Se invece a monte del rubinetto 3 mi preparo una miscela a 95°C, posso miscelarla con l'acqua a 100°C per ottenere i 99.8°C.

Foto Utentearkeo2001, ho dato un'occhiata veloce. Sembra proprio essere quello che mi serve. Mille grazie! :ok:
Domani me lo studio piú approfonditamente.

Comunque la potenza di calcolo non è un limite. Non è previsto di far lavorare il sistema su un microcontroller.

Boiler
Avatar utente
Foto Utenteboiler
14,1k 4 7 13
G.Master EY
G.Master EY
 
Messaggi: 2374
Iscritto il: 9 nov 2011, 12:27


Torna a Matematica generale

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti