Software zum automatischen Erstellen von Turnierplänen

Management

Neues Mitglied
Registriert
15 Feb 2010
Beiträge
4
Punkte Reaktionen
0
Hallo liebe Kicker-Freunde,

da wir bei letzten Kicker-Turnier auf dem Dachboden meines Kollegen mit teils unausgewogenen Spielen zu kämpfen hatten, wollte ich mal fragen, ob hier jemand Rat weiß.

Folgende Situation:

Wir spielen immer 2 gegen 2 (Also Spieler A&B gegen Spieler C&D)

Insgesamt sind wir 14 Leute und es soll bestmöglich jeder mal mit jedem gespielt haben.

Soweit so einfach...

Nur sollte am besten nicht nur jeder mit jedem Mal gespielt haben, sondern auch höchstens zweimal gegen jemanden spielen.

Bei uns hatte jemand Pech immer gegen die 3 stärksten zu müssen...

Bin mir recht sicher, dass es mit mathematischen Formeln und etwas Java-Programmierung geht.

Kurz gefasst:

Wir spielen in Teams, wo die Mitspieler wechseln, es soll jeder mit jedem und gegen jeden spielen....


Vielen Dank schon mal für jede Bemühung!!!!
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
Hiho,
und was genau möchtest du jetzt?
Soll dir jemand ein Programm schreibene? oder reicht dir der algorithmus in java?
 

binary

Aktives Mitglied
Registriert
28 Okt 2009
Beiträge
160
Punkte Reaktionen
0
Ort
am Wasser
Servus,

da gibt es 2 Möglichkeiten:

1.) Du erstellst/berechnest den kompletten Turnierplan vor dem Turnier. Ein Beispiel dafür ist hier im Forum zu finden. Der Nachteil dabei ist, daß Du einerseits an eine fixe Rundenzahl gebunden bist, und andererseits, daß die Stärke der Spieler nicht berücksichtigt wird.
2.) Du läßt Dir von einer Software von Runde zu Runde einen neuen Spielplan erstellen. Bei der Software KickerMaschine ist es so gehandhabt, daß neben dem Kriterium, wie oft man mit wem und gegen wen gespielt hat, auch die aktuelle Tabelle berücksichtigt wird, damit es nicht dazu kommt, daß z.B. der Erste mit dem Zweiten gegen den Letzten mit dem Vorletzten spielt. Von der erwähnten Software gibt es übrigens in ca. 1 Monat eine neue Version, in der auch der von Dir gespielte Modus überarbeitet wird.

Probier halt beides aus.
 

Management

Neues Mitglied
Registriert
15 Feb 2010
Beiträge
4
Punkte Reaktionen
0
Hi Divorio,

also Java bekomme ich vllt. selber hin, hab da noch irgendwo so ein Programmierding von damals, ansonsten macht das auch ein Kollege.

Also der Algorithmus ist alles was ich brauche...

Irgendwann hab' ich die auch mal im Informatikunterricht gehabt.....nur leider vergessen...
 

Management

Neues Mitglied
Registriert
15 Feb 2010
Beiträge
4
Punkte Reaktionen
0
binary schrieb:
Servus,

da gibt es 2 Möglichkeiten:

1.) Du erstellst/berechnest den kompletten Turnierplan vor dem Turnier. Ein Beispiel dafür ist hier im Forum zu finden. Der Nachteil dabei ist, daß Du einerseits an eine fixe Rundenzahl gebunden bist, und andererseits, daß die Stärke der Spieler nicht berücksichtigt wird.
2.) Du läßt Dir von einer Software von Runde zu Runde einen neuen Spielplan erstellen. Bei der Software KickerMaschine ist es so gehandhabt, daß neben dem Kriterium, wie oft man mit wem und gegen wen gespielt hat, auch die aktuelle Tabelle berücksichtigt wird, damit es nicht dazu kommt, daß z.B. der Erste mit dem Zweiten gegen den Letzten mit dem Vorletzten spielt. Von der erwähnten Software gibt es übrigens in ca. 1 Monat eine neue Version, in der auch der von Dir gespielte Modus überarbeitet wird.

Probier halt beides aus.

Super, vielen Dank für die Antwort.

Zu 1 & 2.) Das Programm aus 2.) hab ich mir schon gezogen gehabt, das schöne wäre halt, wenn nicht jemand häufiger mit anderen spielt und auch nicht häufiger gegen einen anderen spielen muss, also wie firebug im anderen Thread geschrieben hat: "Jeder mit jedem gegen jeden".

Aber wie er da schreibt ist es wohl nur bei 4*(n+1) möglich....habe ich leider schon befürchtet....naja da muss ich mir noch was einfallen lassen....
 

binary

Aktives Mitglied
Registriert
28 Okt 2009
Beiträge
160
Punkte Reaktionen
0
Ort
am Wasser
Servus,

Management schrieb:
...das schöne wäre halt, wenn nicht jemand häufiger mit anderen spielt und auch nicht häufiger gegen einen anderen spielen muss, also wie firebug im anderen Thread geschrieben hat...

Theoretisch macht die Software das, sie braucht aber in der aktuellen Version zu viel Rechenzeit. Wie gesagt berechnet sie keinen vollständigen Turnierplan im Vorraus, sondern von Runde zu Runde eine Neue. Dadurch ist man erstens nicht an eine fixe Rundenzahl gebunden, und zweitens kann man der Stärke der Spieler (durch die Tabelle) Rechnung tragen.
In der nächsten Version sind zusätzliche Heuristiken eingebaut, damit das optimale Ergebnis wesentlich schneller berechnet wird. Wie gesagt sollte sie in ca. 1 Monat fertig sein.
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
Hi,

mal überlegen. Eine Begegnung AB gg CD soll nicht mehr als 2 mal vorkommen? oder einmal?
naja, machen wirs der einfachheit halber so, dass eine begegnung AB vs CD nur einmal pro turnier zugelost werden kann.

Du hast im Prinzip ja ein String Array
also

String[] Matches1 = new String \\wobei b eben die anzahl der begegnungen ist.

Wichtig an dieser Stelle: Matches1 muss dringend gespeichert werden, also darf nicht überschrieben werden. wir checken einfach die neuen begegnungen mit den alten.
Weiteres String Array:

String[] Matchesnew = new String

Nun haben wir 2 Arrays. einmal mit den neuen begegnungen und einmal mit den vorherigen.

for (int i=0; i<matchesnew.length(); i++) {
String check1 = Matches1
String check2 = Matchesnew
if (check1.equalsIgnoreCase(check2)) {
shuffleplan(Paramenter p);
}
}


so würde ich den algorithmus in etwa implementieren, wenns um das blockieren gleicher paarungen geht.
Achtung: habs nur einfach mal kurz runtergeschrieben. copy&paste wird wahrscheinlich nich gleich gehen. falls doch, lucky me :D


Viele Grüße
Dennis
 

firebug

Aktives Mitglied
Registriert
13 Jan 2010
Beiträge
38
Punkte Reaktionen
0
Divorio schrieb:
Eine Begegnung AB gg CD soll nicht mehr als 2 mal vorkommen?

Hi, ich glaube die Ausgangsüberlegung war etwas anders gemeint:
Management ging davon aus, dass jeder mit jedem anderen Spieler genau einmal als Team spielt. Wenn man nun noch fordert, dass jeder EINZELNE Spieler GEGEN jeden anderen gleich oft spielt (egal wer daneben mit spielt), dann folgert man schnell, dass sich jeder genau 2 mal auf unterschiedlichen Seiten des Tisches begegnet. Wenn ich mich allein an den Kicker stelle, ist halt neben mir ein Paltz frei und auf der anderen Seite sind es zwei.
Für das Spiel AB gg CD muss man also die Zähler für die Pärchen A/C, A/D, B/C und B/D hochsetzen und diese müssen am Ende jeweils genau bei 2 stehen.

Viele Grüße
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
uff, das wird fast etwas komplizierter..

Bitte um eine vollständige erklärung von management.
 

Management

Neues Mitglied
Registriert
15 Feb 2010
Beiträge
4
Punkte Reaktionen
0
Hi Leute,

also firebug konnte mir schon per Mail helfen. (y)

Erstmal herzlichen Dank dafür! :anbet:

Da wir wohl 13 Spieler werden hat er das schon mal durchgerechnet, genauso wie ich mir das vorgestellt hatte.
Also z.B. Spieler A spielt mit allen Spielern einmal zusammen (B-?) und spielt gegen sie (B-?) jeweils zwei mal in unterschiedlichen Paarungen...
Also allein vom Programmierungscode wahrscheinlich nicht wirklich einfach.

Da ich aber nicht unbedingt ein Programm brauche, tut es für mich auch der fertige Spielplan, vielen Dank aber auch an alle die sich an der Problemlösung beteiligt haben. Die Resonanz war super!

@ binary: Ich habe es leider nicht in deinem Programm finden können, das einzige, was dem nahe kam waren aber feste Teams, und bei mir sollen die Teammitglieder auch tauschen, nicht nur die Paarung (z.B. Olaf & Martin gegen Holger & Bernd und dann z.B. Olaf & Bernd gegen Martin & Holger und das dann noch mit ca. 13-14 Leuten...), also Problem hoch zwei zum Quadrat.
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
ich möchte an dieser stelle erwähnen, dass ich nach meinen klausuren mich mit nem kumpel hinsetzen werden und ein programm zur turnierverwaltung schreiben werden.

hab bisher alle empfohlenen mal angeschaut und KEINES konnte überzeugen in der Kombination Funktion und Usability. Mal sehen, was wir auf die Beine gestellt bekommen.

Man darf also gespannt sein :D
 

fr0sch

Mitglied
Registriert
30 Jan 2009
Beiträge
11
Punkte Reaktionen
0
Ort
Babelsberg
Ich glaube was er sucht ist im Prinzip diese MonsterDYP Excel Tabelle von den Stuttgartern der Kickernation. Damit kann man einfach DYP Turniere machen wo jeder gegen jeden spielt. Blöd das die Software nur mitr M$ Excel läuft und nicht mit OpenOffice, wegen dem Visual Basic. Sowas als php Version oder ähnlich portabel (Java etc.) wäre ein Traum !
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
was wir machen werden, soll in erste linie mal ein intuitives programm sein, dass nach eingabe von teams und tischanzahl den turnierverlauf angibt (mit blockaden im sinne von dass ein team nicht wieder aufgerufen werden kann, wenn es schon spielt und solche sachen).
natürlich mit spielplan, etc.

die anderen programme sind etwas umständlich zu handhaben. wir wollen das für jeden machen. dass auch tante emma das bedienen kann.

bezug zu dem post von fr0sch:

vielleicht gibts anregungungen, was rein soll, was man nicht vergessen sollte, umsetzungswünsche, etc.

falls ja, einfach mal anschreiben, dann kommts auf die to-do liste :)
 

fr0sch

Mitglied
Registriert
30 Jan 2009
Beiträge
11
Punkte Reaktionen
0
Ort
Babelsberg
Divorio schrieb:
bezug zu dem post von fr0sch:

vielleicht gibts anregungungen, was rein soll, was man nicht vergessen sollte, umsetzungswünsche, etc.

falls ja, einfach mal anschreiben, dann kommts auf die to-do liste :)

Wir wollen, ähnlich wie der MonsterDYPs in Stuttgart, hier eine Vereinsinterne Rangliste auspielen. Dies aber nicht im Einzel sondern im Doppel. Dazu sollen halt die Spiele gelost werden. Gespielt wird bis 7, 6:6 ist unentschieden. Daraus ergeben sich dann für jeden einzelnen Punkte und Tordifferenzen. Diese werden dann in einer Tabelle gesammelt und als Rangliste ausgegeben. Die Spiele sollen so gelost werden das jeder mal mit jedem gegen jeden spielt. Und das dann am besten so das man das auf einem Webserver installieren kann und somit überall dort nutzen kann wo man nen Rechner mit Internet hat, ähnlich der Turniersoftware der Stuttgarter.
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
okay, das beinhaltet die implementierung eines komplett anderen spielsystems. wir wollen erstmal das doppel KO umsetzen. wenn das steht, werden wir uns den weiteren modi widmen. liegt einfach daran, dass das doppel KO das bisher am meisten genutzte system auf turnieren ist. zumindest auf allen, auf denen ich war.

wird aber denk ich in weiteren versionen verfügbar sein.
 

firebug

Aktives Mitglied
Registriert
13 Jan 2010
Beiträge
38
Punkte Reaktionen
0
fr0sch schrieb:
Divorio schrieb:
bezug zu dem post von fr0sch:

vielleicht gibts anregungungen, was rein soll, was man nicht vergessen sollte, umsetzungswünsche, etc.

falls ja, einfach mal anschreiben, dann kommts auf die to-do liste :)

Wir wollen, ähnlich wie der MonsterDYPs in Stuttgart, hier eine Vereinsinterne Rangliste auspielen. Dies aber nicht im Einzel sondern im Doppel. Dazu sollen halt die Spiele gelost werden. Gespielt wird bis 7, 6:6 ist unentschieden. Daraus ergeben sich dann für jeden einzelnen Punkte und Tordifferenzen. Diese werden dann in einer Tabelle gesammelt und als Rangliste ausgegeben. Die Spiele sollen so gelost werden das jeder mal mit jedem gegen jeden spielt.

Hi fr0sch,
"jeder mal mit jedem gegen jeden" ist leicht dahin gesagt, aber wenn man einen "gerechten" Plan machen will und das konsequent zuende denkt, wird's halt schnell sehr komplex. Ich beschäftige mich seit über 2 Jahren immer mal wieder mit dem Thema und habe Pläne für 8,9,12 und 13 Teilnehmer "berechnet", bei denen jeder Spieler genau 1 mal mit (als Team) und 2 mal gegen jeden anderen Spieler antritt. Es sind zudem für zwei beliebige Spieler in ihren 3 gemeinsamen Spielen die übrigen 6 Plätze jeweils von verschiedenen Spielern besetzt - oder anders ausgedrückt: es gibt keine 3 Spieler, die mehr als 1 mal gemeinsam am Tisch stehen. So ist für optimale Durchmischung gesorgt. Die Diskussion hier hat mich mal wieder angespornt, an meinen Algorithmis etwas zu feilen, so dass er auch für größere Teilnehmerzahlen in vertretbarer Zeit Ergebnisse ausspuckt.

Wieviele Teilnehmer habt ihr denn so etwa?

Gruß
 

Divorio

Mitglied
Registriert
19 Jan 2010
Beiträge
16
Punkte Reaktionen
0
Ort
Konstanz
firebug schrieb:
Wieviele Teilnehmer habt ihr denn so etwa?


Meinst du nich, dass es da ne möglichkeit gibt, einen universellen algorithmus zu erstellen? unabhängig von der teilnehmerzahl?
genau da will ich nämlich hin. ein programm zu haben für das krümpel-turnier unterm dach bis hin zu nem größeren turnier mit 60 tischen.
 

firebug

Aktives Mitglied
Registriert
13 Jan 2010
Beiträge
38
Punkte Reaktionen
0
Divorio schrieb:
Meinst du nich, dass es da ne möglichkeit gibt, einen universellen algorithmus zu erstellen? unabhängig von der teilnehmerzahl?

Also unter der o.a. Voraussetzung, dass jeder genau einmal mit jedem im Team spielt (JMJGJ 1), ist die Antwort einfach: nein
Es gibt nur Lösungen für Teilnehmerzahlen N die durch 4 Teilbar sind und für die darauf folgenden (N=4*n, N=4*n+1). Der Grund ist, dass für die übrigen Teilnehmerzahlen die Zahl der verschiednen Teams ungerade ist und somit immer ein Team übrig bleibt.
Dieses Problem kann man allerdings dadurch auflösen, dass man jeden 2 mal mit jedem im Team (und somit 4 mal gegen jeden) spielen lässt (JMJGJ 2). Das habe ich noch nicht probiert, weil es bei den eigenen Turnieren nicht nötig war und sich allgemein die Zahl der Spiele natürlich auch eben mal verdoppelt.

Ich denke derzeit über einen Algorithmus für JMJGJ 1 nach, der sicher irgendwann eine Lösung findet, wenn sie existiert. Die Frage ist bei solchen kombinatorischen Problemen immer, dass das von den Möglichkeiten schnell mal explodiert und man vorher schwer abschätzen kann, ob das eine Nacht, eine Woche oder eine Million Jahre braucht. Nur mal so als Beispiel: Mein bisheriger Algorithmus, der im Wesentlichen aus mehr oder weniger geschicktem "Ausprobieren und von vorne Anfagen, wenn's nicht passt" beruhte, hat die Lösungen für 8 und 9 in Millisekunde gefunden. Für die 12 und die 13 hat er die ganze Nacht rumprobiert und einige 100 Millionen Versuche benötigt. Bei der 16 ist er auch nach 3 Tagen und Nächten immer nur in die Nähe einer Lösung gekommen ...

Ich will natürlich nicht ausschließen, dass es einen geschickten Algorithmus gibt, der die Lösungen einfach so rauspurzeln lässt. Nur gefunden habe ich ihn (selbst oder im Netz) leider noch nicht.
 

firebug

Aktives Mitglied
Registriert
13 Jan 2010
Beiträge
38
Punkte Reaktionen
0
Ach, da fällt mir noch was ein ...
Ein ganz anderer Ansatz bei sehr großen Teilnehmerzahlen wäre natürlich, dass man nur Gruppenweise "jeder mit jedem gegen jeden" spielt. Man kann ab einer gewissen Mindestanzahl JEDE Teilnehmerzahl z.B. in 8er- und 9er- oder in 12er- und 13er-Gruppen aufteilen. So kann man sich dann über Vorrunde, ein oder mehrere Zwischenrunden bis in die Endrunde vorkämpfen.

Beispiel: 111 Teilnehmer
eine Möglichkeit ...
Vorrunde: 13 Gruppen: 6 8er, 7 9er, jeweils die ersten 4 kommen weiter
Zwischenrunde: 52 Teilnehmer, 6 Gruppen: 2 8er, 4 9er, jeweils die ersten 4 kommen weiter
Vorschlussrunde: 24 Teilnehmer, 3 8er-Gruppen, jeweils die ersten 4 kommen weiter
Endrunde: eine 12er-Gruppe

... eine andere Möglichkeit
Vorrunde: 9 Gruppen, 6 12er, 3 13er, jeweils die ersten 4 kommen weiter
Zwischenrunde: 36 Teilnehmer, 3 12er-Gruppen, jeweils die ersten 4 kommen weiter
Endrunde: eine 12er-Gruppe
 

fr0sch

Mitglied
Registriert
30 Jan 2009
Beiträge
11
Punkte Reaktionen
0
Ort
Babelsberg
Ziel is ja eher das man am Abend so ca. 9 - 12 Spiele macht. Jeder sollte mal mit jedem gegen jeden gespielt haben und am Ende hat man eine Tabelle. Wenn dann mal wer mehrmals mit dem selben oder gegen die selben spielt ist das nicht soo tragisch, solange nicht 2 den ganzen abend zusammen spielen. Wie gesagt die Jungs von Kickernation.de haben da diese Excel Lösung, nur arbeitet die, dank VisualBasic, nur mit M$ Excel.
 

firebug

Aktives Mitglied
Registriert
13 Jan 2010
Beiträge
38
Punkte Reaktionen
0
fr0sch schrieb:
Ziel is ja eher das man am Abend so ca. 9 - 12 Spiele macht. Jeder sollte mal mit jedem gegen jeden gespielt haben und am Ende hat man eine Tabelle. Wenn dann mal wer mehrmals mit dem selben oder gegen die selben spielt ist das nicht soo tragisch, solange nicht 2 den ganzen abend zusammen spielen. Wie gesagt die Jungs von Kickernation.de haben da diese Excel Lösung, nur arbeitet die, dank VisualBasic, nur mit M$ Excel.

Wenn es nicht so genau darauf ankommt, kann man sich auch mit Bleistift und karriertem Papier gut weiterhelfen. Einfach eine Matrix mit allen Namen auf beiden Achsen (hier a-h) - in der linken unteren Hälfte macht man für jedes Spiel zwei Striche für die jeweiligen Team-Partner und in der rechten oberen Hälfte vier Striche für die Generschaften (eingezeinet sind Striche für das Spiel b/d-f/g). Man hat dann immer einen guten Überblick, wer noch nicht mit bzw. gegen wen gespielt hat.

Code:
  a b c d e f g h
a x      
b   x       | |
c     x     
d   |   x   | |
e         x
f           x
g           | x
h               x
 

fr0sch

Mitglied
Registriert
30 Jan 2009
Beiträge
11
Punkte Reaktionen
0
Ort
Babelsberg
Naja bisher helfen wir uns mit dem System aus Schwaben. Geil wäre natürlich wenn das alles einer Anwendung möglich wäre, aber das dürfte nen Traum bleiben.
 
Oben