Cosa sono gli algoritmi e come vengono utilizzati nell'ingegneria dell’Automazione

31 Maggio 2024
Tutti hanno sentito parlare del cosiddetto "Algoritmo di Google" e di altri algoritmi dei social media utilizzati per trovare i contenuti più interessanti per ogni persona. Ma cosa significa in realtà? Come funziona e cosa succede all'interno del suo computer?
Working at a computer

Tutti hanno sentito parlare del cosiddetto "Algoritmo di Google" e di altri algoritmi dei social media utilizzati per trovare i contenuti più interessanti per ogni persona. Questi algoritmi (Google, Facebook, Tik Tok, ecc.) si comportano come un bibliotecario virtuale che seleziona le cose migliori da vedere o leggere. Questo bibliotecario intelligente sa quali libri avete letto in passato, sa quale libro state scegliendo ora e ha alcune informazioni sulle novità che vi interesseranno in futuro. Grazie a queste conoscenze può consigliarvi i libri, le riviste e i video che probabilmente vi interesseranno. 

Un algoritmo è, in generale, un insieme di istruzioni o regole passo-passo per risolvere un problema o eseguire un compito. Secondo questa semplice definizione, una ricetta in un libro di cucina è un algoritmo, così come un processo aziendale, un programma software o un diagramma di flusso.

I matematici e gli ingegneri pensano generalmente a un algoritmo come a un insieme di passaggi logici chiaramente definiti in un processo per calcolare qualcosa. Gli algoritmi sono utilizzati in molti campi, come l'informatica, la matematica e la vita quotidiana, per rendere più efficienti i processi e le attività.

Semplici esempi di algoritmi

Un algoritmo molto semplice consiste nel calcolare S, la somma di due numeri, X e Y.

  Avvio del processo:

  Sommare X e Y per calcolare S (cioè X+Y = S)

  Arresto del processo.

Un esempio più sofisticato è un algoritmo utilizzato per scoprire se un dato numero (N) è un primo:

  Avvio del processo:

  Dividere il numero (N) per 2, quindi

  Dividere il numero (N) per 3, quindi

  ... continuare il processo, finché alla fine...

  Dividere il numero (N) per N-1

  Se nessuno di questi calcoli dà come risultato un numero intero, allora N è primo.

  Arresto del processo.

(Nota: in pratica, calcolare solo fino a √N)

Un altro tipo di algoritmo è un'affermazione logica, come "se qualcosa è vero, allora esegui il compito A"; e "se quella cosa è falsa, allora esegui il compito B". Ad esempio: "se sei colpevole, andrai in prigione"; e "se sei innocente, sarai libero".

  Avvio del processo:

  È colpevole?

  SI: La persona va in prigione

  NO: La persona è libera

  Arresto del processo.

L'uso degli algoritmi nell'ingegneria del controllo

Immagine
lady changing a thermostat

Vediamo l'uso degli algoritmi nell'ingegneria del controllo, a partire dal controllo "on/off".

Ad esempio, la temperatura ambiente può essere controllata da un termostato utilizzando un semplice algoritmo di controllo on/off:

  • Se la stanza è troppo calda, spegnere il riscaldamento.
  • Se la stanza è troppo fredda,  accendere il riscaldamento.

Questo tipo di controllo è simile all'algoritmo "vai in prigione": Se A è vero, allora fai X; se B è vero, allora fai Y, come descritto sopra. Si chiama algoritmo di controllo "on/off" perché il riscaldamento (in questo caso) è completamente acceso o completamente spento finché non viene raggiunto lo stato desiderato (temperatura).

Algoritmo di controllo proporzionale

Un altro semplice algoritmo è chiamato controllo proporzionale, utilizzato, ad esempio, nel controllo automatico della velocità di un veicolo (cruise control) mediante l'apertura e la chiusura dell'acceleratore:

Immagine
graph showing error
Proportional control algorithm
  • Se la velocità effettiva è troppo bassa, aprire parzialmente l'acceleratore; e
  • Se la velocità effettiva è troppo alta, chiudere parzialmente l'acceleratore.

La differenza tra la velocità desiderata e quella effettiva è chiamata errore (ε), come mostrato a destra. Questo errore (ε) varia al variare della velocità effettiva nel tempo. Naturalmente è pari a zero quando la velocità effettiva è uguale alla velocità desiderata.

 

Immagine
Working of the speed controller
The actual speed at any time is fed back to the speed controller.

La velocità effettiva in qualsiasi momento viene trasmessa al regolatore di velocità (come mostrato a sinistra), che calcola la differenza (errore ε) tra la velocità effettiva e la velocità desiderata e apre l'acceleratore in "proporzione" all'entità di questo errore (ε): se l'errore è grande, apre molto l'acceleratore; se l'errore è piccolo, apre poco l'acceleratore.

Gli algoritmi di controllo proporzionale, che aumentano o diminuiscono l'input di un sistema (in questo caso il veicolo) in proporzione all'errore, funzionano bene in molti casi. Tuttavia, possono presentarsi delle sfide che richiedono un algoritmo di controllo più sofisticato. Ad esempio, con un algoritmo di controllo proporzionale, possono verificarsi forti oscillazioni, o overshoots, prima di convergere sulla velocità desiderata. Può anche verificarsi un errore a lungo termine, o offset, tra la velocità desiderata e quella effettiva, che non scompare mai.

Immagine
Speed control with P (Proportional) algorithm
Controllo della velocità con algoritmo P (proporzionale).

Controllo con algoritmo PID

In alcuni sistemi di controllo questi problemi sono significativi ed è necessario un algoritmo più sofisticato, chiamato algoritmo PID (Proporzionale, Integrale, Differenziale). Senza entrare nel merito della matematica, l'algoritmo PID si comporta come il bibliotecario virtuale, in quanto considera lo stato presente, passato e futuro di un sistema. 

 

La parte "proporzionale" dell'algoritmo rappresenta il presente: il regolatore apre l’acceleratore in proporzione all'errore presente, cioè in proporzione alla differenza attuale tra la velocità effettiva e la velocità desiderata.

La parte "integrale" dell'algoritmo risponde in base al passato: somma gli errori del passato ed effettua ulteriori piccoli aggiustamenti nell'apertura dell’acceleratore, in modo che l'uscita converga esattamente sulla velocità desiderata, senza alcun errore finale di offset.

La parte "differenziale" dell'algoritmo rappresenta il futuro: cerca di capire se l'errore sta cambiando così velocemente da portare il sistema a superare il valore di uscita desiderato, e quindi effettua le corrispondenti regolazioni aggiuntive dell'apertura dell’acceleratore. 

Qui (nella figura seguente), vediamo il risultato del controllo della velocità con un algoritmo PID. Non ci sono grandi oscillazioni o sovraoscillazioni. La velocità converge verso la velocità desiderata, in modo preciso e regolare, senza alcun errore di offset finale. 

Speed control with PID algorithm.  (Proportional, Integral, Differential)
Controllo della velocità con algoritmo PID.  (Proporzionale, Integrale, Differenziale).

Esistono altri algoritmi, molto più sofisticati, che si applicano a situazioni complesse, come il controllo di un braccio robotico in una fabbrica, dove ci sono più uscite da controllare; o sistemi per i quali non esiste un'uscita corretta, come gli algoritmi dei social media, dove si punta solo a una buona soluzione.

 

By Jonathan Copley