Questo mio articolo è diverso da tutti quelli che ho scritto finora. Non troverete formule, algoritmi o altre stregonerie mind-blowing. Voglio invece parlare di un tema a cui tengo: le metaeuristiche. Quell’arte di cercare in maniera non intuitiva soluzioni abbastanza buone, quando l'ottimo è un miraggio. E voglio farlo con un approccio non tecnico, ma umano e riflessivo. È un elogio del (quasi) ottimo: dell'esplorare senza la pretesa di dominare, del migliorare passo dopo passo, accettando un po' di incertezza lungo la strada.

Perché, diciamocelo: senza incertezze e senza mistero... che vita sarebbe? Varrebbe davvero la pena vivere un'esistenza in cui sappiamo per filo e per segno cosa accadrà, senza mai doverci mettere alla prova per raggiungere i nostri obiettivi? Questo in fondo ci porta a un'altra domanda: vale davvero la pena vivere solo per raggiungere i nostri obiettivi? Forse la vita vale quando c'è il mistero. Quando l'incertezza è tale da costringerci a guardarci intorno, a divergere, a cambiare rotta per poi ritrovarci quasi per caso esattamente nel punto in cui volevamo essere, senza che ce lo aspettassimo del tutto.

La Scienza Del Compromesso

Viviamo in un mondo che ci spinge costantemente verso l'ottimo. A scuola, al lavoro, nei progetti e perfino nelle relazioni: tutto sembra misurato in base a quanto ci avviciniamo a un ideale di perfezione. Eppure, se ci pensiamo bene la maggior parte delle scelte che facciamo ogni giorno sono compromessi. Non ottimali, non perfette, ma funzionano e ci permettono di andare avanti.

Ora so cosa starete pensando: “sarai tu ad accontentarti!”, ma pensaci. Quando apri il tuo bel Google Maps e scegli il percorso più veloce invece di quello panoramico. Quando mangi qualcosa al volo perché devi tornare a lavorare, anche se ti saresti scofanato volentieri un manicaretto ma hey, chi ha tempo di prepararlo?

Chiamateli come vi pare ma io li definisco compromessi ergo accontentarsi. Che, badate bene, non è sbagliato. Non demonizziamo il termine accontentarsi perché è proprio il compromesso a renderci umanamente ricchi.

Hai scelto Maps perché vuoi passare dieci minuti in più con il tuo ragazzo o la tua ragazza. Cosa c’è di brutto in questo? Hai mangiato qualcosa al volo perché non hai tempo di preparare il pranzo che avresti voluto, ma diamine... finita la giornata hai un nido caldo e accogliente proprio grazie a quel piccolo sacrificio.

Allora, dove sta il limite in tutto questo? Quando abbiamo iniziato a odiare il termine accontentarsi? Beh, forse quando il compromesso supera di gran lunga la nostra volontà e la libertà di essere. Quando il compromesso arriva a snaturarci. Ma udite udite: questo non è compromesso. Questo è prostrarsi. E mi auguro che non dobbiate mai farlo anche se, ahimè, mi tocca aprire la finestra a novembre per far uscire un augurio vano.

Dal Compromesso Umano A Quello Computazionale

Le metaeuristiche nascono proprio da questo: dal riconoscere che la perfezione nei sistemi complessi, è spesso un'illusione. Che fai quando ricerchi l'ottimo di qualcosa e non sai da dove cominciare? Esplori, provi, sbagli e migliori. È così che funziona una metaeuristica: accetta l'incertezza ma sceglie comunque di muoversi. Si concede il lusso dell'errore perché sa che ogni tentativo, anche fallito, può rivelare un'informazione utile. Il segreto del suo successo? L'esplorazione. È questo che le rende così umane. O meglio così naturali. Sì, perché la maggior parte degli algoritmi metaeuristici prende ispirazione proprio dalla natura: da come gli animali cercano il cibo, da come comunicano tra loro o persino da come corteggiano individui della loro stessa specie.

Perché dai, diciamocelo: diamo il meglio di noi quando si tratta di mangiare e quando si tratta di corteggiare. Per il resto, torniamo a essere i soliti bifolchi.

Volete esempi? Bene.

L’Ant Colony Optimization nasce proprio osservando le formiche: ognuna lascia una traccia chimica lungo il cammino, e più un percorso viene seguito più diventa “attraente” per le altre. Alla fine tra le centinaia di strade percorse senza mappe né supervisione, la colonia trova quella migliore per raggiungere il cibo.

Il Firefly Algorithm invece si ispira alle lucciole. Quelle più luminose attirano le altre e l'intero meccanismo è, in fondo, un gigantesco rito di corteggiamento. Anche qui, niente perfezione, solo desiderio. Un'attrazione che muove che guida che fa avvicinare e cambiare percorso.

Ma non è finita qua. Ci sono algoritmi metaeuristici ispirati a qualsiasi cosa: gli algoritmi genetici si rifanno alla teoria evolutiva di Darwin, l’Artificial Immune System al funzionamento del sistema immunitario. Addirittura ne esiste uno ispirato alla fisica dei buchi neri. Insomma ce n'è per tutti i gusti. Sono tantissimi e (quasi) tutti loro come giá detto, hanno una cosa in comune: sono ispirati alla natura.

Perché la natura che ci circonda in maniera del tutto spontanea tende ad avvicinarsi asintoticamente al meglio possibile.

Se siete curiosi di sapere quante sono (e non sono neanche sicuro che siano riportate tutte), date una occhiata qui.

Ma torniamo a noi. Perché parliamo di “quasi ottimo”?

Perché nessuno di questi metodi è sviluppato per raggiungere in maniera certa la soluzione ottima a un problema. Spesso ci riesce. A volte no. Noi siamo protetti dal nostro sistema immunitario: funziona e funziona bene. Ma questo vuol dire che non ci ammaliamo mai? Va da sé che non è così. Eppure ci accontentiamo, proprio come facciamo quando usiamo gli algoritmi metaeuristici. Se troviamo la soluzione ottima siamo tutti felici. Ma davvero ci serve? Magari per risolvere un problema non è necessario avere l’ottimo: basta qualcosa che ci si avvicini. E non pensate che questa sia un'idea aliena, vi basta leggere il paragrafo successivo per capire il perché.

Il Perché Del Quasi Ottimo

Se state leggendo questo articolo state usando un PC o uno smartphone. Nel vostro dispositivo c'è un processore che schedula i processi, cioè decide quale eseguire prima. Potreste eseguire un algoritmo “ottimo“ come lo Shortest Job First (SJF) ma no, il vostro processore se ne frega e usa (ad esempio) un Round Robin (RR). Ma c'è un motivo. Il SJF richiede in anticipo di conoscere quanto durerà un processo. Cosa che ovviamente non può sapere. Ed eccovi dimostrato come l’ottimo non solo non è sempre necessario, ma a volte non è nemmeno perseguibile. Eppure se state ancora leggendo, anche un algoritmo non ottimo come il RR sta funzionando egregiamente.

Altro esempio. Torniamo a Google Maps. Qui parliamo di ricerca di un percorso, ma con una differenza fondamentale rispetto alle metaeuristiche: Maps non vuole un "quasi ottimo". Maps vuole il miglior percorso possibile. Il problema è che i percorsi possibili sono enormi: milioni di combinazioni, molte senza alcun senso.

E allora cosa fa? Prima ancora di cercare l'ottimo, fa qualcosa di profondamente umano: semplifica il mondo. Scarta tutto ciò che è assurdo (tipo andare da Milano a Torino passando per Roma) e restringe la ricerca solo ai percorsi "plausibili". Sono le famose euristiche: piccole scorciatoie che permettono al computer di dire:

Questa strada non ha senso, non la considero nemmeno. Questa invece ha una logica, continuo a cercare.

Solo dopo aver ridotto l'universo delle possibilità, può finalmente tentare di calcolare il vero ottimo. Ed è proprio in questo contrasto che le metaeuristiche brillano. Maps si affida alle euristiche per rendere l'ottimo calcolabile. Le metaeuristiche, invece, nascono quando l'ottimo non è un obiettivo realistico: quando il problema è talmente complesso, incerto o vasto che l'unica cosa sensata da fare è muoversi, farsi guidare dall'esplorazione, e accettare un risultato "abbastanza buono". E qui c'è una lezione sottilissima, ma enorme: non sempre ha senso guardare a tutto ciò che è possibile fare. Se ci preoccupiamo di ogni strada, di ogni esito, di ogni deviazione teorica, rischiamo di non partire mai. A volte il modo migliore per avvicinarsi all'ottimo, in un algoritmo come nella vita, è proprio smettere di voler prevedere ogni possibilità e fare quell'unico passo che ci mette in cammino.

Maps semplifica per arrivare all'ottimo. Le metaeuristiche accettano l'incertezza per avvicinarsi al "quasi ottimo". Sono due facce della stessa medaglia: come affrontiamo l'infinito quando non possiamo vederlo tutto.

Si lo so, ho parlato di metaeuristiche (o meglio dell'idea che c'è dietro), mentre poco fa vi ho nominato le euristiche. C'è differenza? Assolutamente si. L’euristica è il singolo metodo pratico per trovare una buona soluzione mentre la metaeuristica è l’approccio che guida l'euristica per esplorare meglio le possibilità. In pratica la metaeuristica usa le euristiche per orientarsi nel labirinto delle soluzioni.

Dati questi esempi, quando è necessario usare delle metaeuristiche?

Quando il problema è talmente complesso da rendere impraticabile una ricerca esaustiva o un algoritmo deterministico. Quando dobbiamo esplorare spazi di soluzione enormi evitando di restare intrappolati in ottimi locali (cioè in soluzioni che sembrano ottime, ma non lo sono davvero) e vogliamo trovare soluzioni quasi ottimali in tempi ragionevoli pur non conoscendo in anticipo la struttura del problema.

Conclusioni

Alla fine, le metaeuristiche non sono solo algoritmi. Sono un modo di guardare al mondo. Un promemoria che ci ricorda che la ricerca dell’ottimo non sempre coincide con la ricerca del senso. Nel codice come nella vita a volte non serve arrivare perfettamente al traguardo. Serve muoversi, esplorare, imparare dai tentativi e, quando capita, sapersi accontentare con intelligenza. Le metaeuristiche ci insegnano che la perfezione è una direzione, non una destinazione. Che non c’è fallimento nello sbagliare ma solo informazione in più per scegliere meglio la prossima volta. Che bisogna fare quel passetto nel buio che ci porta al (quasi) ottimo. Ribadisco che questo non è e non vuole essere un articolo tecnico. Se avete letto fino qui e non avete capito cosa è una metaeuristica, è perché di fatto non l'ho detto. Ma ci sará tempo e modo per essere tecnici, per il momento mi basta che abbiate colto la filosofia e il dualismo che c'è dietro. Detto questo concludo dicendo che spero di avervi ispirato curiositá sulle metaeuristiche e portato a riflettere sul valore di ogni passo incerto e di ogni compromesso che ogni giorno della vostra vita fate.

Alla Prossima.


Consigliati

Riferimenti

Pubblicato

Argomento

Tra Codice E Vita

Tags

Contatti