martedì 31 marzo 2015

SugarscapeJS - Agenti artificiali per società artificiali

Sugarscape è un modello multiagente di simulazione di società artificiali (per un dato valore di società), reso famoso dal libro Growing artificial societies: social science from the bottom up, scritto da Joshua M. Epstein e Robert Axtell nel 1996. Da allora, ha dato origine a una discreta quantità di programmi che emulavano, in forma più o meno completa, il progetto delineato in quello studio, e ancora continua a produrne.
SugarscapeJS, come il nome stesso dovrebbe suggerire, è una sua versione in JavaScript, realizzata da me, in cui cerco di inserire, a mano a mano che procedo col lavoro, il maggior numero possibile degli elementi proposti nello studio originale. Al momento ho incorporato quasi tutte le regole contenute nei capitoli due, tre e nella prima metà del quattro: mancano i prestiti, ossia la seconda metà del quarto capitolo, e le malattie, che occupano il capitolo cinque. Arriveranno anche loro.
Per chi non conosce il testo di riferimento, una breve presentazione della struttura di Sugarscape, che è distinto in tre componenti di base: gli agenti, l’ambiente in cui interagiscono tra loro e le regole in base alle quali interagiscono tra loro e con l’ambiente stesso.
Gli agenti sono gli abitanti della società artificiale. Di fatto, sono quadratini colorati che si muovono sullo schermo, ma voi potete immaginarli più o meno come preferite. Possiedono alcune proprietà, come età, sesso, durata massima della vita, campo visivo, metabolismo e così via: molte di queste proprietà possono essere regolate prima di avviare la simulazione, altre sono assegnate in modo pseudocasuale al momento della nascita. Hanno anche la capacità di muoversi nell’ambiente e interagire con altri agenti, ma di questo parlerò poi.
L’ambiente è una griglia di 50 x 50 caselle, su cui gli agenti vivono e si muovono. Una scacchiera, insomma. Ogni casella può ospitare un solo agente alla volta e possiede una quantità determinata di risorse, rinnovabili col tempo. L’ambiente può presentare una distribuzione delle risorse molto diversa, ma qui ho scelto, per il momento, la struttura più famosa e più spesso associata con Sugarscape, con le risorse concentrate in due “picchi” (o quattro, se si sceglie di usare una seconda risorsa). Le risorse sono zucchero (di base) e spezia (opzionale).
Le regole sono un insieme di comandi che determinano il modo in cui gli agenti si comportano. La regola di base per il movimento, ad esempio, prevede che ogni agente cerchi, all’interno del proprio campo visivo, la più vicina casella libera che contiene la maggiore quantità di risorse, che si muova per occupare quella casella e raccolga tutto il contenuto. Vi sono poi regole che determinano il modo in cui le risorse ricresceranno, il modo in cui l’agente interagisce con altri agenti, sia per la riproduzione, sia per il combattimento, sia anche per la “conversione” di chi appartiene a una cultura diversa, e altre regole ancora arriveranno, per commerciare e determinare come avvenga la trasmissione di malattie all’interno di Sugarscape: in molti casi, è possibile decidere quali regole applicare e quali ignorare, così da simulare ciò che vogliamo e osservare solo i risultati che ci interessano.
Sulla base di questi tre componenti, Sugarscape si ripropone di provare a costruire le dinamiche di una società “dal basso”, ossia impostando solo semplici regole generali e osservando poi il modo in cui si svolge l’interazione tra agenti e territorio, seguendo le suddette regole. Interazione che spesso è interessante, in effetti, e forse anche istruttiva, ma su questo punto non mi pronuncio. A ogni modo, vediamo le regole disponibili finora.
Ogni agente può vedere fino a una certa distanza, stabilita casualmente alla nascita, e ha bisogno di consumare a ogni turno una certa quantità di zucchero (e spezia, se usiamo due risorse) per mantenersi vivo: primo obiettivo è dunque la ricerca di zone con tanto zucchero, da raccogliere e consumare. E già questo produce un notevole effetto-formicaio nella simulazione, oltre a introdurre una selezione naturale che porta alla rapida estinzione di chi ha campo visivo scarso e metabolismo elevato. Se gli agenti morti non sono sostituiti, si arriva presto a uno stallo, che ci dice quale sia la capacità di portata per quell’ambiente.
Introducendo le stagioni, modifichiamo il modo in cui lo zucchero (e la spezia, ma ormai dovreste aver capito l’andazzo) è rigenerato nell’ambiente: se prima era uniforme su tutto il territorio, adesso l’ambiente è diviso in due zone, nord e sud, e in quelle due zone si alternano ogni X turni estate (rigenerazione massima delle risorse) e inverno (rigenerazione minima delle risorse). Gli agenti cominceranno a migrare in massa al cambiamento delle stagioni.
Già sulla base di questo, possiamo osservare come si distribuiscano le ricchezze tra gli agenti, ossia la quantità di zucchero posseduta da ognuno. O almeno, potremmo vederlo: in realtà, per adesso ho solo un grafico con l’indice Gini, ma in futuro introdurrò anche tabelle che mostrino in modo meno tecnico e più comprensibile la tendenza generale a una disparità sociale piuttosto accentuata.
Una vera interazione tra agenti compare solo col capitolo tre del libro. Per prima cosa, si può introdurre la riproduzione sessuale, come alternativa alla rigenerazione causale a ogni decesso: ogni agente in età fertile, e con un quantitativo minimo di risorse, a ogni turno cercherà tra i propri vicini un potenziale partner, che sia di sesso opposto, di età fertile, che abbia risorse e che non sia suo parente stretto (tecnicamente, Sugarscape non vieta l’incesto, nella sua formulazione originaria, ma io ho voluto introdurre questo limite, per renderlo più realistico e “umano”, così come il limite di una sola riproduzione per turno). Questa regola da sola cambia gli equilibri ambientali, portando a una continua oscillazione nel numero di agenti supportati. Possiamo poi introdurre anche l’eredità, ossia la possibilità che i figli ottengano una parte uguale delle risorse dei genitori, alla morte di questi: principale effetto sarà una tendenza ad accentuare le disparità sociali.
Dopo l’eredità, arriva l’ereditarietà. Qualche centinaio di turni ci mostra come, anche senza averla espressamente introdotta, la selezione naturale porta ad avere agenti con visione sempre migliore e un metabolismo che rapidamente crolla al minimo. Una tendenza che avevamo già visto anche in assenza di riproduzione, ma che va alle stelle quando la riproduzione è presente. Curiosamente, però, l’aumento della visione non è costante e di tanto in tanto si può invertire.
Ma una società non è solo sesso, nonostante YouPorn dimostri il contrario. Assieme alla possibilità di riproduzione sessuale, esistono anche due “culture” di base, indicate col colore rosso e blu. Sono di fatto una lista di numeri binari, la cui lunghezza è regolabile a piacimento, ma è meglio che sia sempre dispari: se prevalgono gli 1, il nostro agente apparterrà a una cultura; se prevalgono gli 0, apparterrà all’altra. Le culture non sono stabili e possono cambiare nel corso della simulazione, a seconda del modo in cui gli agenti interagiscono tra loro: le culture si intrecciano al momento della nascita di nuovi agenti, ma anche solo muoversi all’interno di Sugarscape porta gli agenti in contatti con altri agenti, in un continuo influenzarsi a vicenda. Se così vogliamo.
Dalla cultura alla guerra. Un’altra regola opzionale ci permette di decidere che le due culture non coesistano pacificamente in Sugarscape: se così vogliamo, rossi e blu cercheranno di sopraffarsi a vicenda, fino a che ne resterà uno solo, oppure fino a che non si raggiungerà un equilibrio da guerra fredda, con le due culture rinchiuse nelle proprie zone di influenza e in continuo contrasto lungo i confini.
Col capitolo quattro arriva una seconda risorse, che affianca lo zucchero: è la spezia. Grazie alla presenza di due risorse, gli agenti possono adesso commerciare, scambiando il surplus per ottenere i beni di cui hanno maggiore scarsità. In teoria. In pratica, il raddoppiamento delle risorse comporta anche un raddoppiamento delle possibilità di morire e spesso la nostra simulazione si chiuderà con l’estinzione totale degli agenti: quando non succede, però, otteniamo un passabile commercio.
Gli agenti, poi, sono divisi tra due categorie di commercianti: aggressivi e cauti. Un agente cauto scambia solo il proprio surplus, solo nella misura minima e punta a un profitto modesto, ma costante: tipica formica, per intenderci. Un agente aggressivo, invece, si butta negli scambi anche a rischio di perderci, non si ritira mai da una offerta e punta sempre al colpaccio. A volte gli riesce.
I prestiti tra gli agenti costituiscono la seconda parte del capitolo quattro, ma non li ho ancora implementati, proprio come non ho ancora implementato il capitolo cinque, dedicato a malattie e sistemi immunitari. Altra cosa che manca, presente nel capitolo due, è la produzione di inquinamento, che al momento ho escluso in quanto la formulazione data dal libro non è molto interessante e non aggiunge granché alla simulazione. Magari la riesumerò in futuro.
In breve, questo è SugarscapeJS. La velocità della simulazione varia molto a seconda del browser utilizzato, ma dovrebbe comunque funzionare su ogni browser decentemente moderno, anche se non è ottimizzato per dispositivi con schermi piccoli. Raccolta e produzione di dati e grafici avrà bisogno ancora di molto lavoro, ma la simulazione è già utilizzabile e fornisce alcuni risultati. Se si è di bocca buona, almeno.

venerdì 20 febbraio 2015

Modificare ebook con Calibre

Calibre è un programma gratuito e libero, già famoso come strumento per la conversione e in generale la gestione degli ebook, tanto da essere stato etichettato in più occasioni come lo iTunes degli ebook. Che questo sia da intendersi come un complimento o un insulto è aperto alla vostre interpretazioni e mi asterrò dal proporvi la mia, che propende per al seconda.
Etichette a parte, Calibre è usato soprattutto per convertire un ebook da un formato all’altro, nonché per fungere da biblioteca virtuale e, se si vuole, anche per trasferire testi dal computer a un qualsiasi lettore esterno, e viceversa. Le sue funzioni, però, non si esauriscono qui. Tra quelle introdotte più di recente (anche se quanto di recente dipende dall’ultima volta che lo avete aggiornato: non è che sia proprio una novità dell’ultima ora, ecco) vi è la possibilità di modificare ebook. Alcuni formati di ebook. E per “modificare” non intendo solo convertirli, ma proprio editarne il contenuto, come si può fare con un qualsiasi documento all’interno di un elaboratore di testi come Word o Writer.
La modifica di ebook all’interno di Calibre è disponibile soltanto per due formati, che sono poi anche quelli che ha più senso modificare con questo programma: EPUB e AZW3. Il primo formato dovrebbe essere noto a tutti ed è quello utilizzato dalla maggior parte dei dispositivi di lettura che non siano il Kindle. Il formato AZW3, invece, potrebbe suonare più esotico a molti, ma di fatto è una versione riveduta e corretta del MOBI, ossia il formato base per il suddetto Kindle.
La nuova funzione di modifica la trovate facilmente nella barra degli strumenti di Calibre ed è la penultima voce in fondo a destra:
Selezionate lo ebook da modificare, cliccate sulla icona e si aprirà la finestra di modifica:
Come potete vedere, non è poi molto diversa da quella di Sigil o da quella di un qualsiasi altro elaboratore id testi ridotto all’osso o quasi. Non aspettatevi funzioni speciali o particolari, dunque: è uno strumento che vi permette di modificare il codice di uno ebook, ma senza campanelli e lucine colorate. Almeno per adesso, poi in futuro si vedrà.
Non so quanti di voi lo vorranno usare per modificare un file EPUB, dato che Sigil permette già di fare la stessa cosa e in modo più completo (ebbene sì, è ancora più spartano ed essenziale di Sigil, che lo crediate oppure no), ma può essere utile per modifiche rapide e immediate, senza bisogno di uscire dal programma che state utilizzando. Ammesso che il programma che state utilizzando sia Calibre, ovviamente. Molto più interessante, invece, è la possibilità di modificare ebook per il Kindle.
Come ho detto, il secondo formato che potete modificare utilizzando questo strumento è lo AZW3. Il formato AZW3, anche se non proprio del tutto, è quasi completamente identico al MOBI. Da un certo punto di vista. Da un altro punto di vista è un MOBI arricchito, per permette di andare al di là di una grafica in bianco e nero e striminzita, che è la sola grafica concessa dal MOBI. Funziona col Kindle e la conversione dal MOBI è quasi indolore: molto spesso non si nota neppure la differenza, almeno sul piano grafico.
Cosa significa tutto questo? Significa che, se volete modificare uno ebook in formato MOBI, lo potete convertire prima in AZW3 e poi modificare all’interno di Calibre. Il che è più o meno come convertirlo in EPUB e poi modificarlo, d’accordo, ma la distanza tra i due formati è minore e molto probabilmente non avrete bisogno di una seconda conversione a lavori ultimati, per poter leggere il risultato sul vostro Kindle, dato che il Kindle apre senza problemi il formato AZW3. A meno che il vostro Kindle non sia alquanto datato, nel qual caso potrebbero anche esserci problemi.