Magazine Informatica

Robocode, intelligenza artificiale in Java

Creato il 25 aprile 2012 da Hnikarr

Presenterò oggi un progetto open-source piuttosto particolare, ossia Robocode. La sua particolarità risiede nel fatto che, a seconda dei punti di vista, può essere considerato un gioco, uno strumento didattico per insegnare la programmazione in Java, oppure un ambiente per la ricerca nel campo dell’intelligenza artificiale. Può anche essere considerato una gran perdita di tempo, volendo, ma questo è un altro paio di maniche. Vediamo prima di tutto cosa sia Robocode in concreto.
Robocode, intelligenza artificiale in Java Robocode è un campo di battaglia per robot virtuali. All’interno di un’arena, vari robot a forma di carro armato combattono tra loro, seguendo le strategie e i sistemi di combattimento che sono stati programmati nel loro “cervello”, fino a che non ne resterà soltanto uno. Fin qui, nulla di strano e nulla di particolarmente originale. Ciò che distingue Robocode da un qualsiasi altro videogioco è il fatto che il cervello dei robot è interamente programmabile dai giocatori. Anzi, i giocatori devono programmare il cervello del proprio robot, se vogliono che sia in grado di mostrare un minimo di intelligenza nelle sue azioni. L’elemento didattico del gioco è proprio qui: imparare a progettare il comportamento del robot, sperimentando e applicando le più comuni strategie di intelligenza artificiale, oppure qualsiasi altra soluzione che a voi sembrerà adatta allo scopo. Un gioco per nerd come pochi altri, insomma. Con l’installazione, Robocode fornisce già tutto il necessario per lo sviluppo e l’utilizzo dei robot: l’arena in cui farli combattere, una serie di robot di prova da studiare e vivisezionare, un semplice editor per modificare i robot e produrne di nuovi. La struttura di base dei robot è uguale per tutti ed è molto semplice: un corpo, un cannone e un radar, di cui è soltanto possibile modificare il colore, a seconda dei propri gusti. A fare la differenza è il cervello ed è questa la parte su cui i giocatori sono chiamati a lavorare, estendendo una delle due classi di base, cioè Robot e AdvancedRobot, e poi dedicandosi alle porzioni di codice che ne determinano le azioni. Robocode, intelligenza artificiale in Java
Robocode nacque all'inizio del millennio come strumento per imparare a programmare in Java, sviluppato da Matthew Nelson per conto della IBM, ma poi il suo campo di azione si è allargato di parecchio. Per prima cosa, è diventato un progetto open-source e disponibile a tutti; dal semplice apprendimento della programmazione in Java si è poi spostato sempre più verso lo studio delle intelligenze artificiali; infine, dalle versioni più recenti si è aperto anche al mondo .NET Framework, rendendo possibile programmare i propri robot anche in linguaggi come C#, VB.NET e tutto il resto della famiglia. Il suo valore didattico, però, non è mai venuto a mancare, tanto è vero che compare nei programmi di diversi corsi universitari (e no, non sto scherzando), come semplice e divertente strumento per testare “sul campo” diverse strategie tipiche delle intelligenze artificiali, come algoritmi genetici, reti neurali, svariati tipi di algoritmi di ricerca e così via. In breve, Robocode fornisce un ambiente completo quanto basta per testare “in azione” varie soluzioni per il controllo automatico. Ed è anche piuttosto divertente, per gli amanti del genere. Dopo aver programmato il proprio robot, è possibile metterlo alla prova in battaglie sia contro i robot pre-programmati (che sono parecchio stupidi, per cui non offrono una grande sfida), sia contro altri robot realizzati da noi stessi, sia infine contro i robot programmati da altri utenti. Esistono infatti diversi siti dove è possibile caricare i propri robot, una volta ultimati, e scaricare i robot pubblicati da altri utenti, come ad esempio Robocode Repository: una sorta di biblioteca dei robot, dove è possibile aggiungere i propri robot e scaricare i robot altrui, liberamente. Per chi è agli inizi, scaricare robot realizzati da altri utenti è anche un buon modo per “studiare” le tecniche più comuni e confrontarsi con le soluzioni proposte da altri, per risolvere gli stessi problemi. E il problema fondamentale, in Robocode, è sconfiggere tutti i nemici, sopravvivendo: questo significa studiare tecniche per muoversi, localizzare gli avversari, reagire ai colpi subiti (o evitare i colpi) e attaccare i nemici. Per i più avanzati, poi, esistono anche vari tipi di tornei robotici, a cui potete far partecipare le vostre AI: alcuni si possono trovare indicati verso la fine della home, sul sito ufficiale di Robocode. Robocode è un programma multipiattaforma e teoricamente può funzionare su qualsiasi sistema operativo, purché sia presente una Java Virtual Machine. Chi poi volesse utilizzare anche un linguaggio .NET per la programmazione, invece del Java, avrà ovviamente bisogno anche del relativo ambiente di sviluppo, ma la JVM resta necessaria per chiunque, dato che il nucleo di Robocode è realizzato in questo linguaggio. L’editor per la modifica e la creazione di robot è sufficiente, ma anche molto rudimentale: diciamo che è l’equivalente di un Blocco Note, come livello di complessità. È comunque possibile sviluppare i propri robot in un ambiente diverso, come ad esempio Eclipse, che pare essere il preferito all’interno dei programmatori di Robocode, almeno a giudicare dal numero di guide disponibili. Per guide, tutorial e altro, il primo sito di riferimento è il sito stesso di Robocode, che nella sua homepage propone una lista di link utili. Tra questi, la RoboWiki è di certo la più utile, con una serie di guide e informazioni sulla struttura dei robot, come modificarli, quali porzioni di codice toccare e quali lasciare così come sono, eccetera eccetera.

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :