Ist es möglich das auch abzufragen das nicht einer aus der ersten und zweiten mannschaft am Tisch sitzten ?
Und könntest du vielleicht doch die Namen der Mannschaften wieder mit einbinden ? Wenn es geht bei den ersten beiden Namen am Tisch je eine Spalte nach dem Namen und bei den Letzten beiden je eine Spalte davor ?
Dann wäre das Tool perfekt
Habe dir das mal rot in den Spalten makiert was ich meine.
20.07.2016, 16:31 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2016, 16:31 von Fennek.)
Hallo,
nachdem der erste Versuch daneben ging, eine Variante, die an Einfachheit nicht zu überbieten ist:
In der Tabelle werden die Spalten 2-4 in jeder Runde um eins nach unten rotiert. Der Zufall sollte über die Reihenfolge der Gruppen entscheiden. Die Zahlen von 1-76 den Namen zuzuordnen ist mit "sverweis" einfach.
Erst einmal einige Fragen. @Edgar. Sehe ich es richtig, dass dein Programm nur eine Runde auslost? Wenn du damit vier Runden auslost, wie stellst du sicher, dass ein Spieler nicht noch einmal mit jemanden zusammensitzt, mit dem er schon in einer Vorrunde an einem Tisch saß? Im Programm sehe ich zwar, wie du darauf achtest nicht Spieler einer Mannschaft zuzuordnen, wo stellst du aber sicher, dass die zwei Mannschaften eines Vereins auch nicht aufeinandertreffen? Da du, wenn eine Entscheidung für einen Tisch getroffen hast, diese nicht mehr zurücknimmst, kann es sein, dass in der letzten Gruppe noch zwei Spieler einer Mannschaft vorhanden sind. Es gibt in deinem Programm dann nie eine Lösung, egal wie lange das Programm läuft. Generell: Für mich sieht es so aus, als ob du den Suchraum nach jeder Entscheidung nicht reduzierst. Ich möchte mal wissen, wieviel Versuche an Zufallszahlen du benötigst, um die Spieler der letzten Gruppe hiermit zu treffen?
@Stefan Wie macht ihr die Tischzordnungen denn zur Zeit? Haben die Doppelkopfspieler, die ja weltweit gut organisiert sind nicht ähnliche Turnierformen? Eventuell haben sie ja für die verschiedensten Mannschaftszusammenstellungen jeweils eine Lösung.
Zur Fragestellung
Mit einem recursiven Algorithmus ist es theoretisch möglich eine Lösung zu ermitteln. (Wenn es, was ich glaube, eine Lösung gibt.)
Zuerst dachte ich die Aufgabe wäre ähnlich mächtig wie das Lösen eines Suduku Rätsels. Hier möchte ich die 9^81 Möglichkeiten auch nicht in Excel durchspielen. Trotzdem benötigt man, da die Nebenbedingungen den Suchraum schnell einschränken, für das Lösen eines Sudoku-Rätsels in Excel selbst mit einer "brute force" Methode meistens weniger als eine Sekunde.
Die (76!)^4 Möglichkeiten dieses Problems sind aber eine ganz andere Hausnummer. Erschwehrend kommt hinzu, dass die Nebenbedingunge den Suchraum nicht so schnell einschränken. Selbst die erste Runde (76! Möglichkeiten der Verteilung) kann man, wenn man nicht viel Glück hat und die Tabellenaufstellung zum Algorithmus past, in Excel nicht mit einer "brute force" Methode lösen.
Da aber jeder, der die Bedingungen verstanden hat, für die erste Runde ganz schnell eine "natürliche" Lösung finden kann, habe ich mir Algorithmen für die nächsten Runden überlegt.
Ich komme mit einer zu den Algorithmen passend geordneten Spielerliste und einigen manuellen Änderungen auf eine Verteilung der ersten drei Runden, die die Bedinungen bei 19 Mannschaften unabhängig von der Anzahl der zweiten Mannschaften erfüllen.
Da ich in den drei Algorithmen die Ordnung der Spielerliste stark ausgereitzt habe, glaube ich nicht, dass ich "manuell" auch einen Algoritmus für die vierte Runde finden kann. Auch glaube ich nicht, dass man in Excel mit einer "brute force" Methode die vierte Runde bestimmen kann, obwohl der Suchraum schneller eingeschränkt wird, da jeder Spiele in der vierten Runde nicht nur nicht gegen die 3-7 Spieler seines Vereins, sondern auch nicht gegen seine 9 Gegner aus den vorangegangenen Spiele gesetzt werden darf.
Eventuell könnte man eine Verteilung der vierten Runde durch genetische Algorithmen finden, aber dann auch nicht mit Excel.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.