Newsgroup: it.hobby.scacchi
Titolo: Programma (o algoritmo) per stilare una pseudo-classifica ELO

Domanda che riterrete strana forse. :-)
Situazione:
Su un server di gioco di ruolo fantasy on-line è stata allestita una
scacchiera "animata", con cui i personaggi interpretati dai giocatori
possono dilettarsi con partitine (singole, senza tornei) quando non
sono in giro ad accoppare draghi.
Il linguaggio a script per questo gioco è sufficientemente potente da
permettere di implementare le regole degli scacchi, e parecchie altre
cose.
Poichè un po' di "competizione" è sempre carina, si pensava di
aggiungere un meccanismo di calcolo di punteggi, simile all'incirca al
punteggio ELO, in modo che Harald il barbaro possa andare a leggere la
bacheca dei messaggi (o più probabilmente a farsela leggere da
qualcuno, se è un barbaro serio che non sa leggere) e scoprire che
Merlin il Mago è il più forte giocatore delle lande con punteggio di
XXX, seguito da Morgana la Fata ecc ecc.
Ho spulciato un po' internet in cerca di ciò che servirebbe ma:
- all'inizio dell'attivazione del sistema calcolo punteggi, in questo
mondo fantasy tutti partono da zero
- non ci sono tornei ma solo partite singole
... e queste due cose mi complicano un po' la vita rispetto alle cose
che ho letto (regolamento FIDE e altro).
Qualcuno sa indicarmi cortesemente un link a sito che proponga un
algoritmo opportuno per questa situazione, oppure mi suggerisca come
adattare l'algoritmo ELO in modo opportuno?
Grazie mille in anticipo per qualsiasi suggerimento
Sherlock

Grazie mille in anticipo per qualsiasi suggerimento
Se non hai troppe esigenze riguardo il "punteggio d'ingresso", assegna
un'Elo fittizzio a tutti (esempio: 1000), e poi usa l'algoritmo Elo
cosi' com'e', partita dopo partita.
Dopotutto, una partita č come un torneo da un turno.
Oppure usa i sistemi che usano su siti come FICS o Gameknot, che perň non
conosco, ma sui rispettivi siti dovresti trovare un pň di documentazione.
Ciao!
Maurizio Mascheroni
=======================================================
Maurizio Mascheroni  info chiocciola dreamchess dot com
-------------------------------------------------------
 
http://www.dreamchess.com
 
http://www.maskeret.com/micio
 
http://www.scaccobratto.com
 
http://www.italiascacchistica.com
 
http://www.romagnolionline.com
=======================================================

 adattare l'algoritmo ELO in modo opportuno?
Niente di più semplice!
Siccome i punteggi Elo sono relativi, il valore di partenza è arbitrario.
Puoi mettere 2000, 1500, quello che preferisci. Anche 0, che però ha il
difetto che chi perde assume valori negativi.
Il secondo valore da decidere è il coefficiente K, che determina la velocità
di variazione dei rating, l'importanza dei nuovi risultati rispetto
all'insieme di quelli acquisiti. Questo dipende un po' da quanti incontri
gioca mediamente un membro del sistema, ed è comunque un valore arbitrario.
La FSI usa 30, la FIDE 25 all'inizio e poi 15. Potrei suggerire un bel 40.
Infine, dopo una partita hai una variazione dei punteggi dei due
combattenti: individui prima il punteggio atteso di ciascuno in base alla
tabella 10.1b qui: 
http://www.fide.com/official/handbook.asp?level=B0210
,
oppure in base a una formula approssimata (ce ne sono a volontà). Questo
punteggio atteso è un valore fra 0 e 1, e sarà 0,5 quando i due giocatori
sono alla pari. Quindi ottieni la variazione Elo moltiplicando il tuo K per
la differenza fra punteggio ttenuto e punteggio atteso. Per esempio, se
Conan e Grande Puffo sono entrambi a 2000 e vince Conan, questi salirà a
2000 + 40*(1-0,5)) = 2020, mentre Grande Puffo scenderà a 2000 - 40*(0-0,5)
= 1980. Se le variazioni ti sembrano piccole, scegli un K maggiore, o un
punteggio di partenza inferiore.
Alex

 conosco, ma sui rispettivi siti dovresti trovare un pò di documentazione.
GameKnot usa il sistema Elo normalmente con variazione dopo ogni partita.
FICS e ICC il sistema Glicko, che è in sostanza lo stesso ma con il K
variabile continuamente in base alla frequenza di gioco.
Alex

Grazie mille, sia a te che a Maurizio.
Non osavo sperare in risposte così rapide ed utili.
Credo adotterò la tua soluzione, magari partendo tutti da un bel 1000
tondo tondo.
Così lo script dovrebbe risultare semplicissimo visto che si limita a
leggere una tabella e fare un paio di conti per aggiornare il
punteggio.
Confesso che il Cap. 10 del regolamento preso per intero e in un
boccone mi era ... un po' ostico; me lo hai semplificato ottimamente
Però secondo me Grande Puffo dovrebbe essere più forte di Conan. :-)
Sherlock

 leggere una tabella e fare un paio di conti
Puoi persino risparmiare la fatica di leggere la tabella usando una formula
(la tabella č stata generata in questo modo fra l'altro), per esempio:
punteggio atteso = 1 / (1 + 10^(differenza punteggi / 400))
Alex