Ciao a tutti,

sto cercando di far fruttare questo periodo di "fermo obbligato" nel migliore dei modi (cioè imparando qualcosa di nuovo).

Non si tratta di un esercizio scolastico nè di lavoro ma solo della volontà di instaurare un dialogo aperto a tutti basato su un aspetto computativo rilevante quanto affascinante.

Mi farebbe piacere ottenere una buona partecipazione in merito al non banale argomento la cui coronazione d'intenti potrebbe essere la pubblicazione di un blog proprio qui su masterdrive (non importa a firma di chi, non ho velleità di magnificenza).

LINEE GUIDA:

Ovviamente, resta inteso, non si possono pretendere eccessive esemplificazioni, tuttavia preferirei che il discorso restasse abbastanza "potabile" e che piuttosto che esporre gli interventi in formule (pur sempre utili), lo si facesse più sotto forma di liste d'azioni o flowchart.

Quindi... niente codice (almeno non nell'esposizione delle varie risoluzioni) e poche formulone (semmai quelle più importanti e rappresentative prima della spiegazione delle stesse).

ESPOSIZIONE:

Ordunque, veniamo a noi:

Stavo leggendo un paper sull'intelligenza artificiale (quella che impara da sola facendo uso di un training set), dove ,nello specifico, si faceva riferimento proprio ad alcune peculiarità tipiche dell'insetto politicone relativamente il suo "modus operandi" di ricerca del nutrimento.

Per cui:

Immaginando un'area ben definita sotto forma di griglia o array di nrighe e ncolonne con n tendente ad un numero sufficientemente alto, possiamo definire le seguenti regole all'interno della suddetta area:

1) La presenza di un emettitore di CO2;
2) La presenza di un rilevatore mobile di CO2 (abbastanza tipicamente "la zanzara");
3) La presenza di vento di intensità e direzione variabili;
4) La possibilità che il vento trasporti quantitativi anche irrisori di CO2 che diminuiscono con l'aumentare della distanza dall'emettitore (dispersione)e in maniera inversamente proporzionale all'intensità del vento all'interno della cella (la quantità non può aumentare, solo diminuire).

Per quanto riguarda l'emettitore:

1) Probabile mobilità (non determinante);
2) Emissione costante di CO2.

Per quanto riguarda il vento:

1) Possibiltà di esprimere la direzione negli quattro versi canonici e i relativi intermedi (N, NE, E, SE, S, etc.);
2) Possibilità di diramarsi seguendo direzioni contigue compatibili con quelle delle celle adiacenti pur ammettendo piccole perturbazioni;
3) Capacità di disperdere la concentrazione di CO2 fino allo 0.

Per quanto riguarda la zanzara:

1) Capacità di rilevare la quantità di CO2 presente nella cella occupata e nelle celle adiacenti;
2) Predisposizione a volare controvento per minimizzare gli spostamenti fino al ritrovamento dell'emettitore (anche in obliquo).

ALTRO:

Potremmo inserire la variabilità del vento e l'irradiazione di calore da parte dell'emettitore in una zona contigua ragionevolmente piccola a contenuto di calore scalare variabilmente alla direzione del vento ma... restiamo sul semplice.

IMPLEMENTAZIONE DI UN ALGORITMO DI VALUTAZIONE:

Nell'implementazione di un algoritmo di valutazione potremmo implementare le seguenti azioni:

1) La zanzara vola random fino a quando non rileva la presenza di CO2 nella sua cella;
2) Se rileva la presenza di CO2 valuta la direzione del vento della sua cella e, dando priorità alle celle contigue con direzione del vento compatibile con la propria, seleziona quella con maggiore concentrazione di CO2 e maggiore intensità della forza del vento preferendo, tra queste, a parità di condizioni, quella con la direzione del vento uguale alla propria oppure, in secondo luogo, quella col valore di CO2 e di C più alto;
3) Se non trova celle con CO2 si sposta nella prima casella trovata con differenza minima relativa fra direzione del vento della casella di provenienza e quella di probabile destinazione (calcolo del valore C) e poi riprende a volare random;
4) Continua ad iterare finchè non si ritrova nella stessa casella dell'emettitore.

RAPPRESENTAZIONE DEI VALORI NELLE CELLE:

Direzione del vento: interi da 0 a 7;
Quantitativo di CO2: valore a tre decimali da 0 (assente) a 1 (massimo).
Intensità del vento: valore a tre decimali da 0.001 (minimo) a 1 (massimo).

ASSOCIAZIONE DI UN RANK PER LA GENERAZIONE DI UN SET DI DATI DI TRAINING:

RANK = Quantità di CO2 * (C + Intensità del vento).
Dove C rappresenta la differenza espressa in decimali a due cifre per multipli di 0.25 fra la direzione del vento della cella occupata dalla zanzara e quella delle celle adiacenti.

CALCOLO DEL FATTORE C:

C viene così calcolato (anche tramite l'utilizzo di tabelle):

Esempi:

Direzione del vento nella cella occupata: N
Direzione del vento nella cella contigua: NE
Valore di C: 1

Direzione del vento nella cella occupata: N
Direzione del vento nella cella contigua: NE
Valore di C: 0.75

Direzione del vento nella cella occupata: N
Direzione del vento nella cella contigua: E
Valore di C: 0.50

Direzione del vento nella cella occupata: N
Direzione del vento nella cella contigua: SE
Valore di C: 0.25

Direzione del vento nella cella occupata: N
Direzione del vento nella cella contigua: S
Valore di C: 0

etc. per entrambi i quadranti.

Un rank più alto rappresenta una scelta migliore.

STABILIRE IL CONTROVENTO:

Si valuta la direzione del vento della cella attuale e di quella di probabile destinazione moltiplicato per il valore C e tenendo conto, per quest'ultima, della concentrazione di CO2 e spostandosi in maniera contraria alla direzione del vento nelle due celle.

INFORMAZIONI AUSILIARIE:

A quanto pare uno dei problemi principali legati al training è quello dell'overfitting ossia quando le predizioni effettuate sui valori di input tendano ad adattarsi a caratteristiche che sono specifiche solo del training set.

Si preferisce, se possibile (in modo da affrontare il problema in maniera un po' più completa), l'utilizzo di una funzione di cross-validation per la verifica della capacità di generalizzazione dell'algoritmo.

RICHIESTA DI RISOLUZIONE:

Costruire un algoritmo che valuti il set di dati di training per imparare a generalizzare e ad effettuare la scelta migliore senza fare uso dell'algoritmo di valutazione da me esposto.

NOTA PER I MODERATORI (MA ANCHE PER GLI ALTRI):

Data la particolarità dell'argomento chiedo, se possibile e se siete tutti d'accordo, di non considerare vecchio il post fino a quando non venga risolta la richiesta.