Rangliste erstellen
am 05.09.2006 15:24:20 von Wolfgang Stelzer
Hallo,
ich habe folgendes Problem und hoffe mir kann dabei jemand helfen ;-)
Ausgangsbasis: Ich möchte mit Hilfe von PHP (+ MySQL) eine Rangliste von
Sportlern berechnen und ausgeben.
Die Daten (Ergebnisse) liegen so etwa in der Datenbank vor (Beispiel):
1 Turnier: 1. Platz Sportler A, 2. Sportler B, 3. Sportler C, usw.
2 Turnier: 1. Platz Sportler B, 2. Sportler A, 3. Sportler D, usw.
3 Turnier: 1. Platz Sportler E, 2. Sportler A, 3. Sportler C, usw.
Problem: Wie ihr dabei erkennen könnt, überschneiden sich die Daten
dabei in alle nur denkbaren kombinationen. Und bei den meisten Turnieren
ist nur ein Teil der Sportler anwesend.
>> Wie errechne ich daraus eine halbwegs brauchbare Rangliste??
1) Ich habe schon etliches mit der ELO-Zahl herum probiert, aber da das
System nur für Spiele mit ZWEI Spielern ausgelegt ist, kommen teilweise
nur seltsame Werte dabei raus. (http://de.wikipedia.org/wiki/Elo-Zahl)
2) Ich habe auch schon versucht einfach Punkte pro Platz zu vergeben,
bringt aber auch nichts, denn Sportler die gut sind und nur bei einen
Turnier pro Jahr dabei sind dürfen nicht an den letzten Plätzen liegen
wenn es nicht gute Sportler gibt die laufend bei Turnieren dabei sind.
Kennt jemand zufällig ein (fertiges) brauchbares Ranking (oder Rating,
dabei ist ein Unterschied) System?
Danke,
Wolfgang
Re: Rangliste erstellen
am 05.09.2006 15:49:14 von Jens Riedel
Wolfgang Stelzer wrote:
> Die Daten (Ergebnisse) liegen so etwa in der Datenbank vor (Beispiel):
>
> 1 Turnier: 1. Platz Sportler A, 2. Sportler B, 3. Sportler C, usw.
> 2 Turnier: 1. Platz Sportler B, 2. Sportler A, 3. Sportler D, usw.
> 3 Turnier: 1. Platz Sportler E, 2. Sportler A, 3. Sportler C, usw.
>
> Problem: Wie ihr dabei erkennen könnt, überschneiden sich die Daten
> dabei in alle nur denkbaren kombinationen. Und bei den meisten Turnieren
> ist nur ein Teil der Sportler anwesend.
> >> Wie errechne ich daraus eine halbwegs brauchbare Rangliste??
> 2) Ich habe auch schon versucht einfach Punkte pro Platz zu vergeben,
> bringt aber auch nichts, denn Sportler die gut sind und nur bei einen
> Turnier pro Jahr dabei sind dürfen nicht an den letzten Plätzen liegen
> wenn es nicht gute Sportler gibt die laufend bei Turnieren dabei sind.
Entweder werden Punkte für Plätze vergeben und die selten teilnehmenden
Sportler werden benachteiligt oder du nimmst eine (vielleicht noch nach
Anzahl Ergebnisse gewichtete) Durchschnittsplatzierung. Bei letzterer
hast du dann das Problem, dass jemand, der nur einmal teilgenommen und
dabei gesiegt hat (und vielleicht ein sehr teilnehmerschwaches Turnier
erwischt hat), unfairerweise ganz oben ist, weil sein Schnitt ein
glatter 1. Platz ist.
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Rangliste erstellen
am 05.09.2006 15:56:52 von Wolfgang Stelzer
H Jens!
> Entweder werden Punkte für Plätze vergeben und die selten teilnehmenden
> Sportler werden benachteiligt oder du nimmst eine (vielleicht noch nach
> Anzahl Ergebnisse gewichtete) Durchschnittsplatzierung. Bei letzterer
> hast du dann das Problem, dass jemand, der nur einmal teilgenommen und
> dabei gesiegt hat (und vielleicht ein sehr teilnehmerschwaches Turnier
> erwischt hat), unfairerweise ganz oben ist, weil sein Schnitt ein
> glatter 1. Platz ist.
Danke für deine rasche Antwort, Möglichkeit werde ich mir mal überlegen.
Was ich mir auch schon gedacht habe ist, dass man einfach eine
MySql-Tabelle erstellt und darin speichert welcher Sportler welchen
Sportler geschlagen hat?
Das ganze ist auf jeden Fall eine mathematisch aufwendige Sache :-(
Lg,
Wolfgang
Re: Rangliste erstellen
am 05.09.2006 16:54:21 von b-j2000
Wolfgang Stelzer schrieb:
> Wie errechne ich daraus eine halbwegs brauchbare Rangliste??
Hallo Wolfgang,
das mathematische Problem, das du hier hast, kommt auch anderswo im
Leben vor: Auch Metasuchmaschinen (z.B. ) müssen
aus verschiedenen "Ranglisten" eine möglichst "gerechte" Rangliste
erstellen. Rank Aggegation ist dazu das wissenschaftliche Schlagwort.
Einen kurzen Überblick über verschiedene Methoden kannst du in dieser
Seminararbeit [1] finden. Oder du googelst einfach selber mal ;-)
gruß,
Benjamin
[1]:
Re: Rangliste erstellen
am 06.09.2006 10:05:31 von Jens Riedel
Hallo Wolfgang,
Wolfgang Stelzer wrote:
> Danke für deine rasche Antwort, Möglichkeit werde ich mir mal überlegen.
> Was ich mir auch schon gedacht habe ist, dass man einfach eine
> MySql-Tabelle erstellt und darin speichert welcher Sportler welchen
> Sportler geschlagen hat?
Wie du die Ergebnisse speicherst, ist ja erstmal sekundär und hängt mehr
oder weniger direkt von der Art ab, wie du deine Rangliste berechnen willst.
> Das ganze ist auf jeden Fall eine mathematisch aufwendige Sache :-(
Kommt wieder auf die Ranking-Methode an, für die du dich entscheidest.
Bei einer Durchschnittsplatzierung oder der "Punkte für Plätze"-Methode
kannst du dir die Rang-Tabelle bei vernünftigen DB-Design mit einem
einzigen Select-Statement generieren.
Gruß,
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Rangliste erstellen
am 06.09.2006 11:05:09 von h.schroeck
Hallo
Wolfgang Stelzer schrieb am Dienstag, 5. September 2006 15:24:
> Ausgangsbasis: Ich möchte mit Hilfe von PHP (+ MySQL) eine Rangliste von
> Sportlern berechnen und ausgeben.
>
> Die Daten (Ergebnisse) liegen so etwa in der Datenbank vor (Beispiel):
>
> 1 Turnier: 1. Platz Sportler A, 2. Sportler B, 3. Sportler C, usw.
> 2 Turnier: 1. Platz Sportler B, 2. Sportler A, 3. Sportler D, usw.
> 3 Turnier: 1. Platz Sportler E, 2. Sportler A, 3. Sportler C, usw.
>
> Problem: Wie ihr dabei erkennen könnt, überschneiden sich die Daten
> dabei in alle nur denkbaren kombinationen. Und bei den meisten Turnieren
> ist nur ein Teil der Sportler anwesend.
>
> >> Wie errechne ich daraus eine halbwegs brauchbare Rangliste??
daraus sicherlich nicht; denn hieraus siehst Du nicht die Leistung,
die ein Sportler erbracht hat; den 100m Lauf könnte A ja mit 10 Minuten
gewonnen haben, während andere 15 oder mehr gebraucht haben...
Wenn Du die erbrachte Leistung mit erfasst und dafür Punkte verteilst
kannst Du leicht eine Rangliste berechnen:
(Summe der Punkte) / (Anzahl der Teilnahmen)
sollte recht brauchbar sein.... evtl. sortiert nach der Anzahl der
Teilnahmen
Grüße,
Holger
Re: Rangliste erstellen
am 07.09.2006 14:45:56 von Stefan Scholl
Wolfgang Stelzer wrote:
> Kennt jemand zufällig ein (fertiges) brauchbares Ranking (oder Rating,
> dabei ist ein Unterschied) System?
Das ist aber kein Programmierproblem. Ein wenig Off-Topic,
findest Du nicht?
--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/
Re: Rangliste erstellen
am 08.09.2006 09:34:26 von Wolfgang Stelzer
Hallo!
>>Kennt jemand zufällig ein (fertiges) brauchbares Ranking (oder Rating,
>>dabei ist ein Unterschied) System?
>
> Das ist aber kein Programmierproblem. Ein wenig Off-Topic,
> findest Du nicht?
Naja, wenn es ein fertiges System (PHP-Class in die man einfach ein
Array oder so übergibt) geben würde nicht ;-) Ansonsten gebe ich dir
recht, es ist durchaus ein mathematisches Problem wobei man sagen muss,
dass es Programmierer stark betrifft (Suchmaschinen, Wettbürosoftware,
Sportsoftware, Webseiten-Ranking, uvm.). Daher wundert es micht auch,
dass ich so wenig dazu finde.
Auf Hotscripts.com usw. findet man tausende fertige Scripte und
seltsamerweise gibts für Ranglisten nichts? :-(
Lg,
Wolfgang
Re: Rangliste erstellen
am 09.09.2006 00:37:54 von Stefan Scholl
Wolfgang Stelzer wrote:
>>>Kennt jemand zufällig ein (fertiges) brauchbares Ranking (oder Rating,
>>>dabei ist ein Unterschied) System?
>>
>> Das ist aber kein Programmierproblem. Ein wenig Off-Topic,
>> findest Du nicht?
>
> Naja, wenn es ein fertiges System (PHP-Class in die man einfach ein
> Array oder so übergibt) geben würde nicht ;-) Ansonsten gebe ich dir
> recht, es ist durchaus ein mathematisches Problem wobei man sagen muss,
Nicht nur mathematisch. Wenn Du das Ranking nur für Dich alleine
im stillen Kämmerlein machst ist das natürlich egal.
Aber Du kannst doch nicht einfach mal eine Rankingberechnung
auswürfeln und hoffen alle sind damit einverstanden.
Erst muss klar sein _was_ wirklich benötigt wird. Dann kann man
anfangen zu programmieren. Die Leute steigen Dir sonst (zu Recht)
aufs Dach.
Die Programmiersprache ist bis dahin total irrelevant. Ich würde
vorschlagen das Rankingverfahren in einer Sport-Newsgroup zu
besprechen. Anschließend mögliche Verfahren den
Betroffenen/Verantwortlichen vorstellen.