Dalla versione 3 di SoL è stata introdotta la gestione delle valutazioni dei giocatori secondo il sistema Glicko, primariamente per permettere di eliminare la componente casuale nella generazione degli accoppiamenti per il primo turno nei tornei importanti.
In poche parole, la valutazione dei giocatori calcolata con questo sistema rappresenta la probabilità di vittoria reciproca: un giocatore con valutazione 2200 molto probabilmente vincerà scontrandosi con un giocatore con una valutazione 1700.
Quando un torneo viene associato a una certa valutazione Glicko, la generazione dei turni viene effettuata tenendo conto della valutazione corrente di ciascun giocatore.
Ogni valutazione è identificata da una descrizione univoca, cioè non è possibile inserire due diverse valutazioni con la medesima descrizione.
Il livello stabilisce in sostanza l’importanza della valutazione e la sua attendibilità. Quando in un torneo associato a una certa valutazione viene stabilita la valutazione di ciascun concorrente, viene usata la più recente nella valutazione di riferimento oppure in una a livello uguale o superiore.
Il tau è il coefficiente primario per pilotare il calcolo della valutazione nell’algoritmo Glicko2.
La valutazione, la deviazione e la volatilità sono i valori di default della valutazione per un giocatori che partecipi per la prima volta a un torneo associato alla valutazione.
Importante
Questi valori risultano modificabili solo dall’amministratore del sistema: di norma non devono essere modificati, se non da chi sa come e perché farlo, oppure per fare esperimenti.
In ogni caso, modificando questi valori rende necessario il ricalcolo della valutazione.
Le valutazioni storiche possono essere caricate con lo strumento a linea di comando soladmin load-historical-rating che accetta le seguenti opzioni e richiede due parametri posizionali, rispettivamente il file di configurazione e un URL del file contenente le valutazioni:
--date | Data fittizia, di default 1900-01-01 |
--deviation | Valore della deviazione, per default 100, oppure una formula per calcolarla a partire da altri campi |
--volatility | Valore della volatilità, di default 0.006, oppure una formula per calcolarla a partire da altri campi |
--rate | Formula per calcolare la valutazione del giocatore, se il valore nel file necessita qualche correzione |
--description | Descrizione della valutazione |
--map | Specifica una corrispondenza tra il nome del campo interno (SoL) e quello esterno |
--encoding | Codifica del file CSV, di default UTF-8 |
--tsv | Specifica che i campi sono separati da TAB, non da virgole |
--dry-run | Mostra solo il risultato, non caricare i dati nel database |
Il file contenente i dati può essere specificato sia con un URL tipo http://sito.it/percorso/dati.txt oppure come file:///tmp/locale.txt se risiede sul filesystem locale.
Il testo specificato può contenere o dei campi separati da virgole oppure campi separati dal carattere TAB (se viene specificata l’opzione --tsv). Se non viene specificato diversamente con l’opzione --encoding viene assunta la codifica UTF-8.
La prima riga del file è considerata come intestazione che specifica i nomi delle singole colonne mentre ciascuna riga rimanente contiene la valutazione di un singolo giocatore.
Ogni riga deve contenere almeno i campi firstname, lastname e nickname che identificano univocamente un particolare giocatore e opzionalmente i campi sex e club, rispettivamente il suo sesso e il club per cui gioca. Ovviamente ci deve essere il campo rate con il valore della valutazione storica del giocatore. Questi sono i nomi usati internamente, ma con l’opzione --map è possibile specificare delle associazioni arbitrarie con gli effettivi campi contenuti nel file.
Come esempio, i seguenti dati
id,cognome,nome,nomignolo,valutazione,partite_giocate,club,sesso
1,Gaifas,EMANUELE,,1000,30,,Scarambol Club Rovereto,M
2,Rossi,Paolo,,1468,6,Scarambol Club Rovereto,M
3,Verdi,Giuseppe,,1427,34,Italian Carrom Federation,M
4,Bianchi,Stefania,,1495,7,,F
possono essere caricati con il seguente comando:
soladmin load-historical-rating \
--map lastname=cognome \
--map firstname=nome \
--map nickname=nomignolo \
--map rate=valutazione \
--map partite_giocate \
--map club \
--map sex=sesso \
--deviation "350.0 / (10.0 - 9.0*exp(-partite_giocate / 60.0))" \
--description "Historical rating" \
config.ini /tmp/giocatori.csv
che dovrebbe produrre qualcosa del tipo:
Loading ratings from file:///tmp/players.csv...
Gaifas Emanuele “lele” (Scarambol Club Rovereto): rate=1000 deviation=77 volatility=0.006
NEW Rossi Paolo (Scarambol Club Rovereto): rate=1468 deviation=188 volatility=0.006
NEW Verdi Giuseppe (Italian Carrom Federation): rate=1427 deviation=71 volatility=0.006
NEW Bianchi Stefania (None): rate=1495 deviation=175 volatility=0.006
dove puoi notare che:
Quando sei soddisfatto, ometti l’opzione --dry-run e i dati verranno effettivamente caricati.