FAQ ver.1.4 - 13-gen-2012
- D: Io non ho mai scritto un robot ? È difficile ? Cosa devo fare ?
R: Affatto, scrivere un robot non è difficile. Il manuale di Crobots (in inglese), i documenti e il tutorial forniscono le basi per costruire un valido robot. Centinaia di sorgenti di robot sono disponibili per attingere ulteriori informazioni.
- D: Posso scrivere i robot in un altro linguaggio di programmazione diverso
dal C (Pascal, C++, BASIC) ?
R: No. Crobots accetta soltanto un subset dell'ANSI C.
- D: Posso usare Crobots32 (Pascal Robots o altri cloni) per testare i miei
robot?
R: No, non conviene, non sono compatibili (neanche Crobots32) con Crobots.
- D: Esiste un'interfaccia grafica per Crobots ?
R: Per la visualizzazione del match no: per le piattaforme Ms-DOS/Linux non esiste e comunque non serve. Crobots per Amiga ha un'interfaccia grafica molto carina ma il compilatore non è 100% compatibile con l'originale Ms-DOS/Linux.
- D: Esiste Crobots per Windows9x/NT oppure OS/2 ?
R: Sì. Crobots esiste compilato anche per Windows32. Crobots Ms-DOS può girare in una finestra Ms-DOS di Windows 9x o in una virtual machine box di NT od OS/2, ma è più lento.
- D: Posso far girare Crobots su altri sistemi operativi ?
R: Crobots può girare senza problemi in qualsiasi sistema operativo che abbia il supporto o l'emulazione x86 Ms-DOS o Linux. Ora esistono anche i binari per HP-UX, Solaris, IBM AIX, Playstation e Mac OS X.
- D: Quale versione di Linux può far girare crobots ?
R: Qualsiasi! In linea (clicca qui) si trovano i binari.
- D: Ci sono differenze fra le varie versioni precompilate di Crobots ?
R: Non sono state riscontrate differenze evidenti fra le diverse versioni. La versione Linux è quella "ufficiale". Le uniche differenze riguardano le versioni a 32-bit e 64-bit che compilano i sorgenti dei robot creando file binari incompatibili: i binari (.ro) compilati con la versione a 32-bit non funzionano con Crobots a 64-bit e viceversa.
- D: Quali sono i robot migliori con cui misurarsi per i benchmark ?
R: Di default si usano i robot giunti in finale nell'ultimo torneo ufficiale disputato, o quelli della finale del torneo con tutti i robot scritti dal '91 ad oggi.
- D: Come faccio ad analizzare tutti i log di crobots ?
R: In linea, nella pagina principale dei download, sono disponibili le utilities usate per l'analisi dei log di crobots, realizzate da Simone Ascheri e Michelangelo Messina.
- D: Che cosa devo fare per testare il mio robot?
R: Alla pagina Tutorial è sono descritte alcune metodologie. Si può utilizzare un file batch creato con CRUtils od usare Torneo configurando opportunamente il file 'torneo.rob' oppure sfruttare il client Java in accoppiata con un database MySQL. Tutte le utility sono in linea a questo link.
- D: Come va configurato il programma Torneo per i test del mio robot ?
R: La maggior parte delle risposte si trovano nel file README allegato nel pacchetto Torneo, reperibile nella pagina iniziale del sito Crobots. Prendiamo come esempio il torneo 1991-1998; se il nostro robot si chiama pippo.r e sta nella directory test/ e tutti gli altri robot del 1991-1998 sono nella directory torneo9198/, un possibile 'torneo.rob' (per Linux!) è questo:
----------------- inizio file 'torneo.rob ------------- 24 5 test/pippo.r torneo9198/goblin.r torneo9198/\!.r torneo9198/1\&1.r torneo9198/ai1.r torneo9198/arale.r torneo9198/bartali.r torneo9198/colossus.r torneo9198/coppi.r torneo9198/diabolik.r torneo9198/fable.r torneo9198/freedom.r torneo9198/goldrake.r torneo9198/gundam.r torneo9198/kill\!.r torneo9198/ncmplt.r torneo9198/rudolf.r torneo9198/rudolf_2.r torneo9198/rudolf_3.r torneo9198/son-goku.r torneo9198/sottolin.r torneo9198/stay.r torneo9198/tornado.r torneo9198/vision.r L=1 T O M=10% C=aggiorna.sh ----------------- fine file 'torneo.rob' -------------
Con queste opzioni vengono calcolati tutti e soli gli incontri del nostro robot da testare (pippo.r), con 5 ripetizioni per ogni quartetto e seguendo l'ordine dei robot inseriti nella lista. Per il calcolo dei punteggi viene richiamato lo script 'aggiorna.sh' che conterrà i comandi da impartire a Count per aggiornare la classifica. La classifica viene aggiornata con una frequenza del 10%. Se vogliamo seguire il comportamento completo del nostro robot e del campione 1991-1998 goblin.r è necessario cambiare L=1 con L=2. Per eseguire un torneo completo eliminare L=1 e O. Per il test Torneo9198 face2face è necessario cambiare il numero di ripetizioni da 5 a 100 ed usare l'opzione "-f" del programma Torneo, oppure usare l'opzione "-a=xxx" che esegue xxx incontri per il face2face e a seguire il torneo 4vs4. - D: Come calcolo il numero di ripetizioni degli scontri (da inserire in
'torneo.rob') ?
R: Bisogna stabilire quanti incontri vogliamo far disputare ad ogni coppia distinta di robot (che si incontrera` nel 4 contro 4, di volta in volta); se per esempio questo numero è TOT, la formula generale è :
TOT ------- (prendendo l'intero appena superiore) (N-2) C 2
Dove N è il numero di robot da testare e l'operatore nCr restituisce il numero di combinazioni di 'n' elementi presi 'r' per volta. Es: 1000 incontri per coppia, 24 robot totali1000 1000 ---------- = ------ = 4.329 , per cui si usa 5 (24 - 2) C 2 231
Per il face2face il numero di incontri per coppia è uguale, naturalmente, al numero di ripetizioni. - D: Quanti test devo fare per ottenere risultati attendibili?
R: La varianza dei risultati, espressa in punti percentuali dell'efficienza del robot testato è, con un fattore di ripetizione pari a 5 e 24 robot totali (tornei standard 1998, 1991-1998), circa 1-1.5%; se si ottengono miglioramenti o peggiormanti fuori di quell'intervallo si è ragionevolmente sicuri dei risultati, altrimenti è consigliabile ripetere i test oppure usare un numero maggiore di ripetizioni oppure fidarsi :-)
- D: La versione Linux del compilatore Crobots, nel match singolo, va troppo veloce. Come fare?
R: È un problema noto e finché non sarà disponibile una patch, l'unico work-around è quello di utilizzare la versione del compilatore Crobots per MS-DOS in una finestra dell'emulatore DOSBox, disponibile per tutte le distribuzioni Linux.