Home    About me    Publications    Blog    Photo gallery
Some other old good stuff

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Archivio per la 'Università' Categoria

Trust Researchers

Segnalo con il post odierno un’iniziativa lanciata da Sabine Herlitschka, Olivier Küttel, Gülsün Sağlamer ed Erika Szendrak. Si tratta di una petizione attraverso la quale si chiede agli organismi preposti dell’Unione Europea di semplificare in maniera significativa le normative che regolano il finanziamento di progetti di ricerca, le quali rappresentano un ostacolo piuttosto serio che tutti i ricercatori devono affrontare nel momento in cui desiderano attingere a fondi europei. E, soprattutto, costringono a spendere piu’ tempo in management di quanto non si possa fare sulla ricerca vera e propria.

The only bush i'd trust

Il sito al quale e’ possibile visionare la petizione ed eventualmente firmarla e’ www.trust-researchers.eu. Qui di seguito i semplici punti nei quali essa e’ articolata.

Mutual Trust
Funding of research in Europe should be based on mutual trust and responsible partnering.

Focused on research
Research has to be funded according to the nature of research, meaning concentrated on output.

Consistency
The European Research Area (ERA) should benefit from a consistent vision shared by all actors for funding research throughout the different programmes that is avoiding all kinds of unnecessary technical and administrative details but instead promoting key funding principles based on an appropriate level of accountability.

Reliablility
Research and development is of utmost importance for Europe and its future oriented development. However, we need effective, reliable and stable funding principles to make it happen.

Risk taking
Research and innovation are risk taking activities. An appropriate level of tolerable risks is vital for success and should be supported by European research programmes.

We ask the European Council of Ministers and the Parliament to urgently simplify the financial and administrative provisions related to the Framework Programme and other European funding instruments considering their important leverage effect for the competitiveness of the European Research Area.

Losanna

Lausanne, Switzerland (landscape)

Lausanne (French pronunciation: [loˈzan], Ital. Losanna) is a city in Romandy, the French-speaking part of Switzerland, situated on the shores of Lake Geneva (French: Lac Léman)[1], and facing Évian-les-Bains (France) and with the Jura mountains to its north-west. Lausanne is located 62 km (39 mi) northeast of Geneva. It is the capital of the canton of Vaud and of the district of Lausanne. The headquarters of the International Olympic Committee are located in Lausanne and the IOC officially recognises the city as the Capitale Olympique,[2] and the headquarters of the Court of Arbitration for Sport. It lies in the middle of a wine region.

Come potete forse intuire dal carattere del post, c’e’ stata un’improvvisa accelerata nel processo decisionale riguardante il mio futuro. Si tratta pero’ del mio futuro pre-fine dottorato e non di quello post. A quanto pare, dopo rapido scambio di email intercorso oggi pomeriggio tra me, il mio supervisor ed un soggetto terzo, da maggio a settembre saro’ in quel di Losanna, a lavorare presso l’EPFL su qualche MAV in carne e ossa (o fibra di carbonio e viti, come preferiti).

Ora si tratta soltanto di metabolizzare un attimino la cosa… :)

Un giro su jobs.ac.uk

Visto che il mio PhD si sta indirizzando nelle sue fasi finali e’ giunto ufficialmente il momento di iniziare a guardarmi in torno per capire cosa faro’ da grande. O, meglio, da un po’ piu’ grande rispetto a quanto sono adesso. Rimanere in ambito accademico, infatti, significa cercarmi un contratto da post-doc da qualche parte del mondo. Contratti solitamente limitati a 2-3 anni in quanto a durata, ma con un buon salto di qualita’ da un punto di vista salariale rispetto alla borsa da dottorato.

PhDComics.com - Post hoc vs Post-Doc

Fermo restando che esistono valide alternative industriali (in particolare abbiamo buoni contatti con un’azienda di Bristol contractor del MoD) ed altre affascinanti sebbene un po’ piu’ inusuali (i lor signori hanno ricevuto e processato il mio curriculum qualche tempo fa), oggi mi sono scandagliato jobs.ac.uk per vedere che tipo di posizioni sono aperte qui in UK. Di seguito le inserzioni che ho “short-listato”:

  • University of Surrey, PostDoc su agent-based modeling di fenomeni economico/sociali nell’ambito del progetto ERIE (link);
  • University of Birmingham, Research fellow su un progetto di evolutionary computation (SEBASE project), con focus sullo studio dei tempi di ottimizzazione tramite EA, comparazione con algoritmi di ricerca tradizionali e studio dei panorami di fitness di problemi di ingegneria software (link);
  • University of Oxford, Research assistant sul progetto PreDiCT. La posizione ha un focus sullo studio, tramite modellazione matematica o computeristica, dei meccanismi che inducono aritmia cardiaca post-assunzione di un farmaco. Non esattamente il mio campo, ma Oxford e’ pur sempre Oxford (link);
  • Newcastle University, Research assistant presso lo Statistical Genetics Group, con compiti puramente da programmatore. Siamo ancora in ambito medico. L’advertisement dice infatti che the project will focus on the development and implementation of computational statistical methodology and software tools for the detection and characterisation of genetic factors in complex disease (link);
  • University of Liverpool, Postdoctoral researcher presso lo Agent ART group, per lavorare sul progetto IMPACT. Il focus e’ sull’agent-based modeling ed in particolare sullo studio della computational argumentation (link);
  • Cranfield University, Research fellow in forensic computing (per diventare una sorta di CSI dell’informatica presumo) (link);
  • Heriot Watt University, Research associate per il progetto SerenA (Serendipity Arena). Il tema di ricerca sembra molto interessante ed e’ riassunto cosi’ nell’advertisement: the aim is not merely to search for shared keywords, like existing systems, but to use state-of-the-art technology from automated reasoning and computational creativity to attempt to identify things that users did not know they needed to know, using more advanced search based on metaphor and analogy. SerenA will be implemented as a physical presence in the working environment, and via personal technology, such as smartphones. This will allow it, for example, to suggest that people who don’t know each other might find some value in meeting (perhaps because they share an interest in particular aspects of the academic world), or to suggest a paper omitted by keyword search in a particular e-journal (because it has connections with other things of interest to the user who is searching). (link).

Ok, direi che ho un po’ di email da spedire…

Papers -> BibDesk

In teoria avrei un po’ di articoli da postare anche oggi. Ma dopo una giornata spesa interamente di fronte a Papers e BibDesk, non voglio piu’ sentire parlare di pubblicazioni scientifiche. Almeno fino a domani.

Controllando e ricontrollando la correttezza di tutti i papers in archivio, mi sono accorto tra l’altro di un problemino relativo a Papers, del quale ho anche scritto sul loro forum. Trattasi del fatto che, oltre ai book chapters, il software non sia disegnato neppure per gestire libri. Esiste in teoria la possibilita’ di creare un nuovo record nel database specificando nel campo Type la voce Book (durante la conversione in BibTex l’entry corrispondente viene correttamente letta come un libro e non un articolo), ma non si possono comunque inserire ne’ la casa editrice, ne’ tantomeno gli eventuali editori. Questo costringe a dover agire manualmente sui file .bib esportati da Papers, per aggiungere le informazioni mancanti ogni qualvolta si procede con una esportazione. Speriamo che nei prossimi aggiornamenti del programma queste funzionalita’ mancanti vengano implementate. Anche la possibilita’ di poter distinguere tra journal articles e conference proceedings non farebbe poi cosi’ schifo. Ad ogni modo, l’importante per il momento e’ che sia riuscito ad aggiustare la mia bibliografia, che ora e’ pronta per essere inclusa nel lavoro che sto preparando per WCCI 2010 (tra parentesi, LaTeX non mi spaventa piu’ dopo che mi e’ stato segnalato questo sito). Se proprio siete cosi’ curiosi da voler vedere che cos’ho in archivio (naturalmente solo le entry bibliografiche e non i documenti veri e propri, dato che l’intero archivio oltrepassa allegramente i 300MB), potete scaricarla ad qui sotto.

Spulciando il forum di Papers, ad ogni modo, sono rimasto divertito da tutta l’attenzione che anche li’ si e’ sviluppata attorno al fenomeno iPad. Tutti gli utenti (e mi ci sono rapidamente accodato pure io) chiedono a gran voce una versione del software per la nuova piattaforma di Apple. E non hanno per niente torto. Papers per iPad potrebbe essere effettivamente una vera e propria killer app per l’utenza scientifica e spingere anche gli ultimi manipoli di irriducibili linuxiani a svoltare verso il Mac. Fondamentale a tal scopo la perfetta sincronizzazione col desktop (che diamo tuttavia per scontata) e la possibilita’ di evidenziare ed effettuare annotazioni sui documenti. Se il tutto poi venisse implementato a mo’ di cloud sarebbe un paradiso. Vedremo cosa combineranno quelli della Mekentosj nei prossimi mesi.

One more paragraph finished (PhDComics.com)

Sempre in tema di iPad, scopro che utilizzando l’SDK appena uscito, Citrix e’ gia’ riuscita a far girare Windows 7 sull’OS del nuovo dispositivo Apple, via XenDesktop e XenApp. Spero di cuore che vedremo a tempo debito anche una versione di Remote Desktop, nonche’ una del Microsoft Remote Connection girare sull’iPad.

iPad che, al contrario di un Mac classico, non avra’ bisogno di manutenzioni particolari. Per almeno un paio di mesi ancora pare pero’ che dovremo restare fedeli alla sana abitudine lanciare i nostri script di manutenzione periodica. Consiglio di dare un’occhiata a Maintidget, simpatico widget per la Dashboard che permette di effettuare tutti gli interventi di routine con un semplice clic del mouse, risparmiandoci di passare dal terminale.

Maintidget

Facciamo che anche per oggi e’ tutto ed io mi rimetto un po’ a lavorare? Ma si’, dai…

Anno nuovo (vita vecchia)

A giudicare da come siamo partiti, pare che il 2010 non si discostera’ poi cosi’ tanto dall’anno appena trascorso. Si inizia infatti con un po’ di burocrazia. Diploma supplement da preparare, logbook da aggiornare e, immancabile, il testo d’esame per il miliardesimo appello di Laboratorio II a UniMORE. Ormai drasticamente a corto di idee, ho dovuto optare per qualcosa di molto poco fantasioso. Ecco quindi il primo testo d’esame a carattere prettamente “teorico” che mi capita di scrivere.

Linked list

Specifiche del progetto da realizzare

Come tema d’esame, si richiede allo studente di scrivere un programma, in linguaggio C, in grado di implementare due diversi tipi di strutture dati astratte: liste lineari e code.

All’avvio del programma, attraverso un menu a scelta rapida l’utente dovra’ scegliere una tra le seguenti opzioni:

  1. Crea una nuova lista lineare
  2. Scorri e visualizza gli elementi contenuti all’interno della lista lineare
  3. Aggiungi un nuovo elemento all’interno della lista lineare
  4. Elimina un elemento contenuto all’interno della lista lineare
  5. Crea una nuova pila (stack)
  6. Scorri e visualizza gli elementi contenuti all’interno della pila
  7. Aggiungi un nuovo elemento all’interno della pila
  8. Elimina l’elemento di testa della pila
  9. Scegli la directory dove salvare il contenuto delle strutture dati
  10. Effettua il salvataggio delle strutture dati
  11. Esci dal software

L’utente dovra’ scegliere l’operazione da eseguire digitando il numero corrispondente e premendo il tasto INVIO. Si tenga presente che l’utente non dovra’ avere sempre accesso a tutte le funzionalita’ offerte dal programma. In particolare, la funzione 10 non sara’ attiva fino a quando l’utente non avra’ selezionato una directory valida (esistente e con privilegi di scrittura per l’utente corrente) attraverso la funzione 9. Come ovvio, non sara’ possibile accedere alle funzioni 2, 3 e 4 fintanto che una lista lineare non e’ stata creata. Allo stesso modo, le funzioni 6, 7 e 8 non saranno accessibili in assenza di una pila.

Ulteriori note

  • Il progetto dovra’ essere realizzato individualmente.
  • Il programma dovrà essere scritto in codice ANSI C standard, al fine di garantirne il più ampio livello di portabilità possibile. Non e’ ammesso, a meno che tale possibilità non sia esplicitata nel testo d’esame o nelle FAQ pubblicate su Dolly, l’utilizzo di comandi propri del sistema operativo in uso. Il programma dovra’ essere in grado di “girare” allo stesso modo su qualsiasi piattaforma.
  • Il programma dovra’ rispettare in maniera assolutamente rigorosa le specifiche illustrare in questo documento. Qualsiasi modifica rispetto allo schema ivi delineato ed apportata in maniera arbitraria verra’ considerata un errore. Per qualsiasi dubbio o chiarimento si prega di utilizzare il forum.
  • Il programma dovra’ essere adeguatamente commentato. Non abbiate paura di essere eccessivamente prolissi nei vostri commenti.
  • La leggibilita’ del codice puo’ essere migliorata distribuendo e raggruppando le varie funzioni in file di testo separati. Una buona scomposizione puo’ prevedere un file “principale” (contenente le variabili globali e le funzioni di gestione del menu di scelta rapida) ed altri due dedicati rispettivamente a contenere le funzioni deputate a gestire la lista lineare e la coda.
  • Sia la lista lineare che la pila dovranno contenere al loro interno esclusivamente valori interi.
  • La pila deve essere implementata mediante lista lineare.
  • Le funzioni di creazione della lista lineare e della coda devono poter funzionare senza che all’utente venga richiesto preventivamente quanti elementi tali strutture dovranno contenere.
  • Nel momento in cui viene richiamata la funzione numero 10 (salvataggio dati), il contenuto della lista lineare e della coda deve essere memorizzato all’interno di appositi e separati file di testo (contenuti nella directory specificata attraverso la funzione 9 del menu principale). La struttura di questi file di testo deve essere estremamente semplice: si consiglia di non scrivere altro che un valore per riga. I due file dovranno essere chiamati rispettivamente “lista.txt” e “pila.txt”.
  • La funzione di salvataggio non potra’ essere chiamata prima che siano state create una lista lineare o una pila. Nel caso in cui solo una delle due strutture dati sia stata definita, il programma dovra’ essere in grado di accorgersi dell’assenza di una di queste e conseguentemente creare un solo file di testo.

Letture per iniziare l’anno nuovo

Con l’inizio del 2010 e’ giunta l’ora di riemergere da questi dieci giorni di letargo/ozio/poker e quant’altro ed iniziare a riprendere un po’ in mano le redini della mia vita da un punto di vista lavorativo. Per farlo torniamo ad immergerci in qualche lettura interessante.

Girl reading a book, sit in front of a red door

Il primo articolo che propongo oggi e’ un paper ad opera di Honghoon Jang, Anjin Park e Keechul Jung presentato a DICTA 2008 (Digital Image Computing: Techniques and Applications), dal titolo (auto-esplicativo) Neural Network Implementation using CUDA and OpenMP. Di questi tempi, con tutto il gran parlare che si fa di multi-threading e programmazione parallela, non puo’ che essere una lettura interessante. Per chi volesse approfondire ulteriormente l’argomento, linko il sito ufficiale del progetto CUDA (guidato da nVidia) e quello di OpenMP.

In questi giorni ho anche avuto modo di dare un’occhiata, con calma, al CD contenente i proceedings di WIVACE 2009. L’ultimo giorno della conferenza si era tenuto in parallelo ad AISC 2009, sesto convegno dell’Associazione Italiana di Scienze Cognitive e cosi’ anche gli atti di questo evento sono finiti dentro al supporto ottico. Ne ho selezionati alcuni che mi sembrano particolarmente interessanti e che propongo qui di sotto.

Ok, questo e’ quanto. Buona lettura.

Research on Environmental Sensor Networks @ Arizona State University

Che bello avere un supervisor che pensa al tuo futuro. Arrivo in ufficio questa mattina e trovo una mail che mi ha girato, riguardante delle faculty positions disponibili presso la Arizona State University. E’ in particolare la School of Earth & Space Exploration, istituita nel 2006, che sta reclutando a piu’ non posso. Una delle figure che cercano e’ un esperto in Environmental Sensor Networks. Un qualcosa per il quale, con qualche opportuno accrocchio, potrei pure spacciarmi.

Arizona State University (welcome sign)

Per chiunque fosse interessato, qui sotto il bando.

Faculty Position in Environmental Sensor Networks

Established in 2006, the School of Earth and Space Exploration (SESE) is the focal point for earth and space science at Arizona State University, one of the largest and fastest growing institutions of higher learning in the United States. An essential part of the SESE mission is an effective integration of disciplines such as astrophysics, biogeochemistry, geology, geophysics, hydrology and engineering for scientific exploration.

Over the next two years, SESE will be hiring a large number of faculty – at a variety of ranks – in order to build its capacity for transdisciplinary research and education in earth and space science and engineering. (A full listing of current searches may be found at http://sese.asu.edu/opportunities.)

One priority for SESE is to welcome new faculty with interests in sensor networks and robotics. Specifically, we seek applicants who are interested in developing techniques for integrating large arrays of static and mobile sensors and robots to monitor physical, chemical, and biological processes that shape the evolution of Earth’s surface and near surface environments. Research interests could range from the development of control and distributed sensing algorithms to the field deployment of sensor networks and robots for environmental observations. A demonstrated track record in research, teaching and grantsmanship is preferred. Opportunities are available for joint appointments with other academic units within the College of Liberal Arts and Sciences and the Ira A. Fulton Schools of Engineering.

Applications should include: 1) a cover letter that includes a description of the applicant’s research and teaching interests, 2) a current CV, and 3) the names, addresses and telephone numbers of three references. Inquiries and applications must be addressed to Kip Hodges, Director, School of Earth and Space Exploration, and submitted electronically to sesenewfac@asu.edu.
Submissions in pdf format are preferred.

ASU is an equal opportunity/affirmative action employer that actively seeks diversity among applicants and promotes a diverse workforce.

Automi cellulari e credo politico: una strana relazione

Puntuale come una tassa da pagare, ecco affacciarsi all’orizzonte il centoventinovesimo appello del corso di Laboratorio II per l’anno accademico 2008/09. Riusciranno i nostri adorati studenti, con cosi’ pochi tentativi a loro disposizione, a passare l’esame? Vedremo. A corto di idee ho malamente riciclato un testo d’esame scritto a suo tempo da un mio professore, previo riadattamento ai miei scopi. Se siete curiosi o addirittura voleste cimentarvi nella prova, qui di seguito trovate il tutto.

Elezioni (vignetta di un uomo che infila la scheda elettorale nell'urna)

Specifiche del progetto da realizzare

Come tema d’esame, si richiede allo studente di scrivere un programma, in linguaggio C, in grado di implementare una versione semplificata dell’automa cellulare originariamente sviluppato da Alves e colleghi (Alves, S.G., Oliveira Neto, N.M. & Martins, M.L., Electoral surveys’ influence on the voting processes: a cellular automata model, Physica A, Vol. 316, pp. 601-614, 2002).

L’automa cellulare in questione si basa su una matrice quadrata (lattice), in cui ogni cella e’ occupata da un individuo. Ciascun individuo e’ caratterizzato da un proprio credo politico, espresso come 0 o 1. Il modello si sviluppa su scala temporale discreta per un certo numero di iterazioni. Ad ogni iterazione, per via dell’effetto della “pressione sociale”, ciascun individuo aggiorna il proprio credo politico sulla base di quello che e’ il credo delle persone che vivono attorno a lui. Le persone aventi influenza sul credo politico di un certo individuo sono quelle definite nel contesto del suo intorno. L’intorno di un individuo e’ costituito dai conspecifici che occupano le 8 celle attorno a lui. Se ad esempio un individuo e’ posizionato in una cella di coordinate (x, y), il suo intorno sara’ costituito dagli individui nelle celle {(x-1, y-1), (x, y-1), (x+1, y-1), (x-1, y), (x+1, y), (x-1, y+1), (x, y+1), (x+1, y+1)}. L’ambiente di riferimento e’ da intendersi toroidale, cosicche’ tutti gli individui possono contare su un intorno avente la stessa dimensione. Ad ogni iterazione, se tra i vicini di un certo individuo ve ne e’ un numero uguale o superiore ad un valore di soglia prefissato aventi credo 1, allora anche l’individuo in questione diventera’ (o rimarra’) un sostenitore dell’idea 1. In caso contrario, diventera’ (o rimarra’) sostenitore dell’idea 0.

All’avvio del programma, attraverso un menu a scelta rapida l’utente dovra’ scegliere una tra le seguenti opzioni:

1. Avvia una nuova simulazione
2. Scegli la directory nella quale salvare i risultati
3. Esci dal programma

L’utente dovra’ scegliere l’operazione da eseguire digitando il numero corrispondente e premendo il tasto INVIO. Si tenga presente che l’utente non dovra’ avere sempre accesso a tutte le funzionalita’ offerte dal programma. In particolare, la funzione 1 non sara’ attiva fino a quando l’utente non avra’ selezionato una directory valida (esistente e con privilegi di scrittura per l’utente corrente) attraverso la funzione 2.

Ulteriori note

  • Il progetto dovra’ essere realizzato individualmente. • Il programma dovrà essere scritto in codice ANSI C standard, al fine di garantirne il più ampio livello di portabilità possibile. Non e’ ammesso, a meno che tale possibilità non sia esplicitata nel testo d’esame o nelle FAQ pubblicate su Dolly, l’utilizzo di comandi propri del sistema operativo in uso. Il programma dovra’ essere in grado di “girare” allo stesso modo su qualsiasi piattaforma.
  • Il programma dovra’ essere adeguatamente commentato. Non abbiate paura di essere eccessivamente prolissi nei vostri commenti.
  • Il programma dovra’ rispettare in maniera assolutamente rigorosa le specifiche illustrare in questo documento. Qualsiasi modifica rispetto allo schema ivi delineato ed apportata in maniera arbitraria verra’ considerata un errore. Per qualsiasi dubbio o chiarimento si prega di utilizzare il forum.
  • L’ambiente di riferimento deve essere inteso come una matrice di valori interi. Ogni cella avra’ valore 0 o 1 a seconda del credo politico dell’individuo che la abita.
  • All’avvio del programma, ogni cella sara’ occupata con probabilita’ 0.5 da un individuo con credo politico 0. Con la medesima probabilita’ la cella sara’ occupata da un individuo con credo politico 1.
    Il programma dovra’ visualizzare a schermo lo stato corrente della matrice ad ogni iterazione, passando automaticamente dall’una alla successiva, ma lasciando all’utente tempo sufficiente per osservare i cambiamenti in atto.
  • Il programma dovra’ appoggiarsi ad un file esterno, chiamato parametri.dat (contenuto nella stessa directory nella quale sono memorizzati i sorgenti del software), nel quale saranno specificati tutti i dettagli della simulazione. Il file in questione (ovviamente creato come plain text, senza alcun tipo di formattazione) dovra’ essere composto da sei righe. Nelle righe del file verranno specificati rispettivamente: il numero di righe dell’ambiente/matrice di riferimento, il numero di colonne, il valore di soglia da utilizzare per definire le nuove credenze politiche degli individui, il tempo di attesa (in millisecondi) tra la visualizzazione di due stati successivi della matrice, il comportamento da adottare in caso di uguaglianza con il valore del soglia.
  • Al termine di ogni iterazione, il programma deve salvare alcune statistiche in appositi e separati file di testo (contenuti nella directory specificata attraverso la funzione 2 del menu principale). Queste statistiche sono: numero di sostenitori dell’idea 0, numero di sostenitori dell’idea 1, percentuale di sostenitore dell’idea 0 sul totale, percentuale di sostenitori dell’idea 1 sul totale. La struttura di questi files di testo deve essere estremamente semplice: si consiglia di scrivere semplicemente un valore per riga. Al termine del programma, in un file a parte dovra’ essere anche salvato lo stato finale dell’ambiente/matrice di riferimento.
  • Lo studente dovra’ provare diverse condizioni sperimentali ed allegare al proprio software i risultati ottenuti da ciascuna di esse. Tali condizioni sono:
    • matrice 50×50, 100 iterazioni, valore di soglia=4, l’individuo diventa/rimane sostenitore di 1 se il valore di soglia viene raggiunto;
    • matrice 50×50, 100 iterazioni, valore di soglia=4, l’individuo diventa/rimane sostenitore di 0 se il valore di soglia viene raggiunto;
    • matrice 50×50, 100 iterazioni, valore di soglia=3, l’individuo diventa/rimane sostenitore di 1 se il valore di soglia viene raggiunto;
    • matrice 100×100, 1000 iterazioni, valore di soglia=4, l’individuo diventa/rimane sostenitore di 1 se il valore di soglia viene raggiunto.

MAVs in copertina

Il mio articolo per Neural Networks e’ ufficialmente in stampa. Il PDF definitivo e’ gia’ pronto, ma visibile al link http://dx.doi.org/10.1016/j.neunet.2009.06.032 di Science Direct soltanto attraverso sottoscrizione. Appena possibile, naturalmente, provvedero’ a metterne una copia a disposizione qui sul sito. Nel frattempo, grazie ad una email arrivatami da quelli della Elsevier, ho scoperto che to commemorate your publication, you can now order printed author copies of the journal issue featuring your article, a unique Certificate of Publication, and/or customized full-color posters featuring your article. Per farlo e’ sufficiente puntare il browser all’indirizzo https://authororders.elsevier.com e riempire a piacimento il carrello. Tra le cose interessanti che e’ possibile acquistare, oltre alle ristampe dell’articolo o dell’intera rivista, vi e’ un certificato, gia’ incorniciato, che (per definizione) certifica la pubblicazione del proprio articolo su Neural Networks. Cosi’ come un poster, che riproduce la prima pagina dell’articolo, le informazioni bibliografiche e la copertina del journal, cosi’ come nell’esempio qui sotto.

Elsevier's Neural Networks - example of a poster celebrating a publication

Si tratta di due cose un po’ insolite, ma sicuramente simpatiche. E delle quali approfittero’. Giusto per celebrare la mia prima pubblicazione su rivista. Nella speranza che questo shopping diventi una piacevole abitudine…

A volte ritornano…

Parlo dello Sugarscape, il famoso modello sviluppato a suo tempo da Joshua M. Epstein e Robert Axtell, accuratamente descritto nel loro celebre libro Growing Artificial Societies: Social Science from the Bottom Up (divertente, tra l’altro, la recensione estremamente critica pubblicata su Amazon da un tizio, il quale si perde in una strampalata analogia con gli atomi che interagiscono tra loro dando vita ad esempio ad un pendolo, tralasciando quel sottotitolo “Social Science” presente nel volume). Dopo averci speso innumerevoli ore ai tempi della specialistica, ho deciso che e’ bene che anche gli studenti di Laboratorio II facciano lo stesso. E cosi’ e’ proprio allo Sugarscape che ho dedicato il testo per l’appello del prossimo 9 settembre.

Sugarscape (black and green gradations)

Specifiche del progetto da realizzare

Come tema d’esame, si richiede allo studente di scrivere un programma, in linguaggio C, in grado di implementare una versione semplificata del modello Sugarscape originariamente sviluppato da Epstein ed Axtell (Epstein, J.M. & Axtell, R., Growing Artificial Societies, MIT Press, 1996).

Il modello Sugarscape e’ un sistema multi-agente simulato via software, all’interno del quale vive e si sviluppa una vera e propria societa’ artificiale composta da individui (agenti) che interagiscono con l’ambiente seguendo semplici regole di interazione locale. Come ampiamente dimostrato da Epstein ed Axtell, nonche’ da innumerevoli studi che ne sono conseguiti, anche da modelli semplici come questo possono emergere numerosi fenomeni interessanti. Nel caso specifico, una delle cose che si potra’ studiare e’ la “capacita’ di carico” dell’ambiente (il quale puo’ essere considerato una sorta di nicchia ecologica) all’interno del quale vivono gli agenti.

L’ambiente dove la simulazione si sviluppa e’ lo Sugarscape, una griglia bi-dimensionale di dimensione 50×50 (2,500 celle totali). Ciascuna di queste celle, identificate dalle loro coordinate x, y, e’ caratterizzata da un livello corrente di zucchero ed una capacita’ massima di zucchero che questa cella e’ in grado di contenere al suo interno (entrambi i valori interi e compresi tra 1 e 4). La figura riprodotta qui sotto mostra come la capacita’ massima delle varie celle sia distribuita nell’ambiente.

Sugarscape (numerical view of the carrying capacity for all the cells)

Un certo numero di agenti vive all’interno di questo ambiente, ha un proprio metabolismo che lo porta a consumare ad ogni time-step (il modello si sviluppa infatti su una scala di tempo discreta) un certo ammontare di riserve energetiche, le quali assumono un certo valore all’inizio della simulazione e possono poi essere ricostituite raccogliendo zucchero dall’ambiente. Il metabolismo e’ diverso da agente ad agente e corrisponde all’ammontare di zucchero consumato ad ogni time-step. Ciascun agente e’ inoltre dotato di un particolare sistema sensoriale (strettamente legato a quello motorio) che lo informa dell’ammontare di zucchero presente nelle celle che circondano quella all’interno del quale si trova. Ciascun agente puo’ “vedere” le celle disposte in direzione dei quattro punti cardinali (nord, sud, est, ovest) fino ad una certa distanza. Se ad esempio un certo agente si trova nella cella di coordinate x, y ed ha un range visivo pari a 2, sara’ in grado di misurare l’ammontare di zucchero presente nelle celle di coordinate: x+1, y; x+2, y; x-1, y; x-2, y; x, y+1; x, y+2; x, y-1; x, y-2. Una volta raccolte queste informazioni, l’agente si muovera’ direttamente nella cella contenente la maggior quantita’ di zucchero. Nel caso in cui due o piu’ celle sulle quali e’ possibile muoversi contengano lo stesso ammontare di cibo, l’agente muovera’ sulla prima di quelle individuate. Ogni agente occupa lo spazio di una singola cella e non possono mai esservi due agenti all’interno della stessa cella.

Ad ogni time-step, tutti gli agenti svolgono le loro azioni in sequenza (tale sequenza e’ pero’ casuale ad ogni iterazione del modello). Ciascuno di essi si guarda attorno, sceglie la direzione nella quale muoversi, si sposta e raccoglie infine tutto lo zucchero eventualmente presente nella cella in cui si e’ mosso (e non da quelle che ha eventualmente solo attraversato). L’ambiente e’ toroidale. Questo significa che un agente che fuoriesce da uno dei bordi dell’ambiente riapparira’ dal lato opposto. La percezione sensoriale degli agenti deve tenere in considerazione tale caratteristica dell’ambiente. Quando tutti gli agenti hanno effettuato la loro azione, lo zucchero presente nell’ambiente si rigenera. Ciascuna cella aumenta di un’unita’ la quantita di zucchero presente al suo interno, a patto che non venga superata la sua capacita’ massima. Se in un dato momento le riserve energetiche di un agente raggiungono un valore minore o uguale a zero, l’agente muore ed e’ rimosso dall’ambiente.

All’avvio del programma, attraverso un menu a scelta rapida l’utente dovra’ scegliere una tra le seguenti opzioni:

  1. Avvia una nuova simulazione
  2. Scegli la directory dove salvare i risultati
  3. Esci dal software

L’utente dovra’ scegliere l’operazione da eseguire digitando il numero corrispondente e premendo il tasto INVIO. Si tenga presente che l’utente non dovra’ avere sempre accesso a tutte le funzionalita’ offerte dal programma. In particolare, la funzione 1 non sara’ attiva fino a quando l’utente non avra’ selezionato una directory valida (esistente e con privilegi di scrittura per l’utente corrente) attraverso la funzione 2.

Ulteriori note

  • Il progetto dovra’ essere realizzato individualmente.
  • Il programma dovrà essere scritto in codice ANSI C standard, al fine di garantirne il più ampio livello di portabilità possibile. Non e’ ammesso, a meno che tale possibilità non sia esplicitata nel testo d’esame o nelle FAQ pubblicate su Dolly, l’utilizzo di comandi propri del sistema operativo in uso. Il programma dovra’ essere in grado di “girare” allo stesso modo su qualsiasi piattaforma.
  • Il programma dovra’ essere adeguatamente commentato. Non abbiate paura di essere eccessivamente prolissi nei vostri commenti.
  • Il programma dovra’ rispettare in maniera assolutamente rigorosa le specifiche illustrare in questo documento. Qualsiasi modifica rispetto allo schema ivi delineato ed apportata in maniera arbitraria verra’ considerata un errore. Per qualsiasi dubbio o chiarimento si prega di utilizzare il forum.
  • La simulazione si sviluppa in 500 iterazioni. Per iterazione si intende il movimento di tutti gli agenti e la conseguente ricrescita dello zucchero.
  • La simulazione ha inizio con tutte le celle dell’ambiente contenenti un livello di zucchero pari alla loro capacita’ massima.
  • All’inizio della simulazione vengono introdotti nell’ambiente 400 agenti, distribuiti in maniera casuale.
  • Il metabolismo degli agenti e’ un valore discreto diffuso in maniera uniforme nella popolazione tra i valori 1 e 4 (100 agenti avranno metabolismo pari a 1, 100 metabolismo 2, ecc…). Stessa cosa vale per il range visivo.
  • Ciascun agente inizia la simulazione con una riserva di zucchero pari a 10 unita’.
  • Non c’e’ limite all’ammontare di zucchero che un agente puo’ raccogliere e conservare.
  • L’ordine di ricerca delle celle da parte degli agenti non ha importanza. Questo deve pero’ essere omogeneo per tutti gli agenti.
  • Quando l’agente si muove, prima raccoglie lo zucchero presente nella cella nella quale si e’ spostato e soltanto al termine di questa operazione detrae dalle riserve l’ammontare di zucchero pari al proprio metabolismo.
  • Al termine di ogni iterazione, il programma deve salvare alcune statistiche in appositi e separati file di testo (contenuti nella directory specificata attraverso la funzione 2 del menu principale). Queste statistiche sono: numero di agenti vivi, media del metabolismo degli agenti vivi, media del range visivo degli agenti vivi, quantita’ totale di zucchero presente nell’ambiente. La struttura di questi files di testo deve essere estremamente semplice: si consiglia di scrivere semplicemente un valore per riga.

Pagina Successiva »