Simulazione: Introduciamo gli Agenti

Ciao, buon giorno o buona sera.

Nel primo post abbiamo dato una semplice definizione linguistica di Simulazione.

In questo, invece, andremo un po’ più a fondo nel mare della simulazione,  soffermandoci sulle scienze, in particolar modo sulle scienze logico-informatiche, un rapido sguardo al “cosa serva”, credo sia necessario.

Come ben sappiamo, comprendiamo, impariamo decisamente meglio (se non quasi esclusivamente) tramite esempi. Quindi perché non fare altrettanto?

Bene, cominciamo.

In ambito scientifico, o comunque di ricerca in generale, una simulazione, semplicisticamente, ha lo scopo di verificare delle teorie. In particolar modo, in questo caso, le teorie vengono “modellizzate”. Cosa vuol dire?

Vuol dire che una certa idea riguardo un certo ambito viene “compressa” con dei formalismi specifici (il più delle volte formalismi logico-matematici). Si cerca quindi di creare un modello.

Per una rapida definizione di “modello” ti invito a guardare questo post.

Una volta costruito il modello si cominciano i test. Per meglio comprendere ti basti pensare ad una galleria del vento. Sì quella per i test aerodinamici. La si usa per i veicoli, sia terrestri che aerei.

Galleria del vento Red Bull Racing

 

Per comodità pensiamo ad un’auto da formula 1. I tecnici, gli ingegneri hanno trovato un nuovo design per un spoiler; lo disegnano con l’aiuto di un software CAD, creano cioè il modello digitale; poi, tramite software specifici, lo testano (i simulatori).

Uno spoiler disegnato al CAD con il software SolidWorks

Et voilà la prima simulazione informatica. Fatto ciò, lo costruiscono in miniatura e lo portano nella galleria. Ecco, quella miniatura è, in questo caso, il modello fisico. Una volta in galleria fanno i test necessari a stabilire se l’idea, se la teoria (o meglio teorie) sia valida, ovvero controllano se i dati della simulazione informatica siano consistenti, siano coerenti con la realtà. Quel che viene dopo sono conseguenze basate ovviamente sul rapporto costi/risultati.

Poco fa ho scritto che la simulazione viene usata per verificare delle idee, teorie, delle ipotesi insomma. Potreste dirmi che per questo motivo facciamo sperimentazioni. Ed è verissimo. La simulazione in sé è un esperimento (ti invito a leggere il primo post cliccando qui). Tuttavia non in tutti i campi è conveniente partire “in quarta” sperimentando sul campo. Per questo motivo si utilizzano i modelli. Di nuovo il tutto è guidato dai costi. Tornando all’esempio dello spoiler per la deportanza (qui puoi trovare una spiegazione di portanza e deportanza, a metà pagina troverai anche una simulazione di un profilo alare) di un’auto da formula 1, sarebbe troppo costoso realizzare un prototipo diretto da montare sull’auto prima della simulazione al pc. Inoltre sarebbe sciocco perché se qualcosa non dovesse andare correttamente, se i calcoli non fossero corretti, il prototipo montato sull’auto potrebbe causare danni alla vettura e, di conseguenza, potrebbe causare danni al pilota. Oltre agli aspetti di sicurezza (in questo caso) ci sarebbe l’enorme spreco di tempo, materiali, risorse e quindi di danaro.

Quindi per effettuare una simulazione al pc occorre partire dall’ipotesi per creare poi un modello e verificarne l’esattezza tramite simulatori. E come possono i simulatori far ciò?

Bè esistono i così detti motori a regole (qui puoi trovare una spiegazione tratta dall’università di Bergamo) e sistemi esperti. Si tratta di sistemi su base informatica: sono librerie per determinati software o direttamente software. Sono sistemi che vincolano il modello (inserito) con  regole, delle leggi (nel caso di prima, leggi fisiche) e, tramite funzioni più o meno complesse, il simulatore testa il modello.

Tuttavia il modello non è sempre uno “spoiler”. Anzi. Spesso il modello è una pluralità di entità. Il che implica una pluralità crescente di regole e vincoli. Quindi non sempre è possibile lavorare sul “singolo”. Pensiamo ad esempio ad uno stormo di uccelli. Se volessimo simulare il volo di uno stormo, non potremmo certo modellizzare un unico volatile: occorre quindi crearne un numero maggiore. In questo caso è necessario ridurre la complessità del modello “unico” (no, non c’entra il ministero delle finanze e la dichiarazione dei redditi) “spacchettandolo”, frazionandolo in un insieme di modelli più piccoli, ognuno con le proprie caratteristiche (non è detto che siano identiche per tutti) e regole. Uno dei modi per far ciò è stato quello di introdurre il concetto di agente. E’ difficile dare una definizione di agente; questo perché ce ne sono moltissime. In questo caso utilizzeremo la definizione fornita dal testo “Artificial Intelligent: A modern Approach” by Stuart J. Russell and Peter Norvig, nel quale troviamo “An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through actuators”, ovvero qualcosa che può esser visto come un’entità in grado di percepire il proprio ambiente attraverso sensori ed agire nello stesso ambiente tramite attuatori. Questa definizione ha una valenza decisamente fisica, ma come detto prima, “basta” modellizzare il tutto per avere il proprio agente “informatico”.

 

Uno dei volumi del libro citato. Ti lascio il link per un eventuale acquisto: Ecco

Nel prossimo post parleremo delle categorie di agenti e riprenderemo brevemente il nostro stormo introducendo i così detti “Boids”.

Agente Smith tratto dalla trilogia di “The Matrix” dei fratelli Wachowski

 

Per ora dal mare della simulazione è tutto.

Ti aspetto al prossimo post.

Ciao

Andrea

 

Fonti

  • http://www00.unibg.it/dati/corsi/9012/13842-B1_1_Sistemi%20a%20regole_V13.pdf
  • https://www.warnerbros.com/matrix#
  • https://www.amazon.it/Artificial-Intelligence-Modern-Approach-Global/dp/1292153962/ref=sr_1_1?ie=UTF8&qid=1516796070&sr=8-1&keywords=artificial+intelligence+a+modern+approach+3rd+edition
  • https://it.wikipedia.org/wiki/Red_Bull_Racing
  • http://www.treccani.it/
  • http://www.solidworks.it/
  • https://it.wikipedia.org/wiki/CAD