|
|
Line 482: |
Line 482: |
| Der Begriff Round Robin (Rundlauf-Verfahren; Zeitscheibenverfahren) bezeichnet ein Scheduling-Verfahren, welches mehreren konkurrierenden Prozessen begrenzte Ressourcen zuordnet. Das heißt, dass allen Prozessen nacheinander für jeweils einen kurzen Zeitraum – dem sogenannten Zeitschlitz – Zugang zu den benötigten Ressourcen gewährt wird. Danach wird der jeweilige Prozess wieder hinten in die Warteschlange eingereiht. Dieses Prinzip wird unter anderem bei Multi-Tasking-Systemen genutzt. | | Der Begriff Round Robin (Rundlauf-Verfahren; Zeitscheibenverfahren) bezeichnet ein Scheduling-Verfahren, welches mehreren konkurrierenden Prozessen begrenzte Ressourcen zuordnet. Das heißt, dass allen Prozessen nacheinander für jeweils einen kurzen Zeitraum – dem sogenannten Zeitschlitz – Zugang zu den benötigten Ressourcen gewährt wird. Danach wird der jeweilige Prozess wieder hinten in die Warteschlange eingereiht. Dieses Prinzip wird unter anderem bei Multi-Tasking-Systemen genutzt. |
|
| |
|
| In vereinfachter Form wird ein Spielplan so erstellt:
| | [[/Spielplan|Ausführliche Erläuterung]] |
| | |
| <pre>
| |
| | |
| ### 1) erstelle Array ($array_teams) mit allen teilnehmenden Teams einer Liga
| |
| | |
| [...] | |
| | |
| while($row = mysql_fetch_object($qry))
| |
| {
| |
| $i++;
| |
| $array_teams[$i] = $row->ID_team;
| |
| }
| |
| | |
| ### 2) durchlaufe fortan die Schleife:
| |
| | |
| for ($round = 1; $round < $num_teams; $round++)
| |
| {
| |
| ### Es wird 13 Mal die Schleife durchlaufen.
| |
| ### Grund dafür ist die Anzahl (14) der Teams ($num_teams),
| |
| ### die in einer Liga antreten.
| |
| ### Jeder Schleifendurchlauf erstellt einen Spieltag.
| |
| | |
| ...
| |
| | |
| ### 2.1) erstelle Array ($teams_done)
| |
| | |
| $teams_done = array();
| |
| | |
| ### 2.2) durchlaufe fortan die Schleife:
| |
| | |
| for ($team = 1; $team < $num_teams; $team++)
| |
| {
| |
| ### Es werden also jedem Team,
| |
| ### ausser dem Letzten (14. Team),
| |
| ### eine Zählnummer gegeben.
| |
| | |
| ### 2.2.1) Prüfe, ob das Team bereits abgearbeitet ist:
| |
| | |
| if (!in_array($team, $teams_done))
| |
| {
| |
| ### 2.2.2) Wenn Bedingung false, dann wähle Gegner:
| |
| | |
| $opponent = $round - $team;
| |
| $opponent += ($opponent < 0) ? $num_teams : 1;
| |
| | |
| ### 2.2.3) Wenn Bedingung
| |
| ### (Gegner ist nicht das momentan ausgewählte Team) true,
| |
| ### gehe weiter:
| |
| | |
| if ($opponent != $team)
| |
| {
| |
| ### 2.2.3.1a) Wenn Bedingung true ist, gehe weiter:
| |
| | |
| if (($team + $opponent) % 2 == 0 xor $team < $opponent)
| |
| {
| |
| ### Das heißt, es muss entweder der Rest der Summe
| |
| ### beider Teams durch 2 dividiert 0 ergeben oder
| |
| ### (exklusives Oder!) das momentan ausgewählte Team
| |
| ### einen kleineren Index als der Gegner haben.
| |
| ### Ist dies der Fall, wird die nun feststehende
| |
| ### Paarung in die Datenbank eingetragen.
| |
| ### Heimrecht hat das ausgewählte Team ($array_teams[$team]),
| |
| ### auswärts spielt der gewählte Gegner ($array_teams[$opponent]).
| |
| ### Es werden die eindeutigen IDs der Vereine in die Datenbank
| |
| ### geschrieben, welche in Schritt 1) in das Array
| |
| ### $array_teams gespeichert wurden.
| |
| }
| |
| | |
| ### 2.2.3.1b) Wenn Bedingung von oben false ist, gehe weiter:
| |
|
| |
| else
| |
| {
| |
| ### Der Vorgang ist dem aus 2.2.3.1a) fast identisch.
| |
| ### Es werden lediglich Heim- und Auswärtsteams getauscht.
| |
| ### Somit bedeutet das:
| |
| ### Heimrecht hat der gewählte Gegner ($array_teams[$opponent]),
| |
| ### auswärts spielt das momentan ausgewählte Team ($array_teams[$team]).
| |
| }
| |
| | |
| ### 2.2.4) Schreibe abgearbeitete Teams in das Array,
| |
| ### welches in Schritt 2.1) erstellt wurde:
| |
| | |
| $teams_done[] = $team;
| |
| $teams_done[] = $opponent;
| |
| }
| |
| }
| |
| }
| |
| | |
| ### 2.3a) Wenn Bedingung true ist, gehe weiter:
| |
| | |
| if ($round % 2 == 0)
| |
| {
| |
| ### Das heißt, es muss der Rest der Rundenzahl ($round),
| |
| ### welche in der Schleife aus Schritt 2) initialisiert wurde,
| |
| ### durch 2 dividiert 0 ergeben.
| |
| ### Ist dies der Fall, wird das letzte verbleibende Team (14.),
| |
| ### welches in Schritt 2.2) ausgelassen wurde,
| |
| ### noch einer Paarung zugeteilt:
| |
| | |
| $opponent = ($round + $num_teams) / 2;
| |
| | |
| ### Nun werden die Paarungen, wie bereits erläutert,
| |
| ### in die Datenbank geschrieben.
| |
| | |
| }
| |
| | |
| ### 2.3b) Wenn Bedingung von oben false ist, gehe weiter:
| |
| | |
| else
| |
| {
| |
| $opponent = ($round + 1) / 2;
| |
| | |
| ### Nun werden die Paarungen, wie bereits erläutert,
| |
| ### in die Datenbank geschrieben.
| |
| ### Im Unterschied zu 2.3a) wird bei 2.3b) das Heimrecht getauscht.
| |
| | |
| }
| |
| }
| |
| | |
| </pre>
| |
|
| |
|
|
| |
|
Line 620: |
Line 500: |
| Bei der Berechnung von Vereinsspielen werden die Werte der Vereine auf eine komplexe und möglichst faire Art verglichen. Zur Verbesserung und Anpassung habe ich mir eine kleine Testumgebung geschrieben, bei der ich alle Werte der Vereine angezeigt bekomme, die Fanzahlen, Einnahmen, Torschüsse und vieles mehr. | | Bei der Berechnung von Vereinsspielen werden die Werte der Vereine auf eine komplexe und möglichst faire Art verglichen. Zur Verbesserung und Anpassung habe ich mir eine kleine Testumgebung geschrieben, bei der ich alle Werte der Vereine angezeigt bekomme, die Fanzahlen, Einnahmen, Torschüsse und vieles mehr. |
|
| |
|
| Welche Werte werden berücksichtigt und miteinander verglichen?
| | [[/Spielberechnung|Ausführliche Erläuterung]] |
| | |
| | |
| ''1. Zuschauer''
| |
| | |
| * Grundlage für die Anzahl zu erwartender Zuschauer ist zu allererst die Gesamtzahl der Fans beider Vereine
| |
| * Sind beide Vereine von etwa gleicher Gesamtstärke, werden mehr Zuschauer kommen. Sind beide Vereine in ihrer Gesamtstärke zu ungleich, wird mit weniger Zuschauern zu rechnen sein.
| |
| * Hat ein Verein eine Werbekampagne laufen, einen Stadionsprecher und/oder Fanbeauftragten eingestellt, sind mit zusätzlichen Zuschauern zu rechnen.
| |
| * Dem Auwärtsteam wird bei jedem Spiel ein Kartenkontingent von 1/10 der Gesamtkapazität zugesprochen.
| |
| * Werden bei Freundschaftsspielen immer wieder die gleichen Partien gespielt, werden die Zuschauer ihr Interesse verlieren und nicht mehr ins Stadion kommen.
| |
| | |
| | |
| ''2. Einnahmen''
| |
| | |
| * Grundlage für die möglichen Einnahmen sind die vom Spiel fest vorgegebenen Eintrittspreise:
| |
| ** 6 € pro Stehplatz
| |
| ** 12 € pro Sitzplatz
| |
| ** 25 € pro VIP-Platz
| |
| * Je nach Zuschauerschnitt wird dann eine Verteilung auf alle Platzarten errechnet und die Gesamteinnahmen durch die verschiedenen Tribünenkarten erechnet.
| |
| * Sind im Umfeld Bierbuden und/oder Wurststände vorhanden, kommen durch diese noch Einnahmen hinzu. Das selbe gilt für den Besitz eines Fanbeauftragten.
| |
| * Die Einnahmen durch Kartenverkäufe sind im Verhältnis 75% Heimteam : 25% Auswärtsteam geteilt. Spielen beide Vereine auf neutralem Boden (Ausweichstadion), erhalten beide 50% der Eintrittspreise.
| |
| | |
| | |
| ''3. Fouls''
| |
| | |
| * Bei der Anzahl an Foul sind neben dem Zufall folgende Skills ausschlaggebend:
| |
| ** Talent Beweglichkeit des Gegnerteams
| |
| ** Talent Dribbling des Gegnerteams
| |
| ** Talent Ballzauber des Gegnerteams
| |
| ** Gesamtstärke des Gegnerteams
| |
| ** [-] Talent Tackling des eigenen Teams
| |
| | |
| | |
| ''4. Schüsse''
| |
| Ausschlaggebend:
| |
| | |
| * Talente
| |
| ** Beweglichkeit des eigenen Teams
| |
| ** Freistoss des eigenen Teams
| |
| ** Kurzpassgenauigkeit des eigenen Teams
| |
| ** Flanken des eigenen Teams
| |
| ** Schnelligkeit des eigenen Teams
| |
| ** Dribbling des eigenen Teams
| |
| ** Ballzauber des eigenen Teams
| |
| ** Torinstinkt des eigenen Teams
| |
| ** Spielmacher des eigenen Teams
| |
| ** [-] Kopfball des Gegnerteams
| |
| ** [-] Sprungkraft des Gegnerteams
| |
| ** [-] Tackling des Gegnerteams
| |
| | |
| * alle Skills des eigenen Teams im Vergleich zum herausgeforderten Teams
| |
| * die zufällig und für 24 Stunden generierte Form aller Spieler
| |
| | |
| * Abwehr [aller Abwehrspieler]
| |
| ** Gesamtstärke
| |
| ** Talent Kopfball
| |
| ** Talent Sprungkraft
| |
| ** Talent Schnelligkeit
| |
| ** Talent Beweglichkeit
| |
| ** Abwehrchef (taktische Aufstellung)
| |
| | |
| * Mittelfeld [aller Mittelfeldspieler]
| |
| ** Gesamtstärke
| |
| ** Talent Kurzpassgenauigkeit
| |
| ** Talent Dribbling
| |
| ** Talent Beweglichkeit
| |
| ** Talent Freistoss
| |
| ** Talent Spielmacher
| |
| ** Talent Ballzauber
| |
| ** Spielmacher (taktische Aufstellung)
| |
| | |
| * Sturm [aller Stürmer]
| |
| ** Gesamtstärke
| |
| ** Talent Schnelligkeit
| |
| ** Talent Flanken
| |
| ** Talent Dribbling
| |
| ** Talent Kopfball
| |
| ** Talent Sprungkraft
| |
| ** Talent Torinstinkt
| |
| ** Sturmtank (taktische Aufstellung)
| |
| | |
| * die taktische Ausrichtung (offensiv, ausgeglichen, defensiv)
| |
| | |
| * Talente der einzelnen Positionen
| |
| ** IV | Innenverteidigung: Tackling, Kopfball, Sprungkraft, Beweglichkeit
| |
| ** AV | Aussenverteidigung: Tackling, Schnelligkeit, Beweglichkeit
| |
| ** DM | defensives Mittelfeld: Tackling, Kurzpassgenauigkeit, Spielmacher
| |
| ** FM | Flügel Mittelfeld: Schnelligkeit, Flanken, Dribbling, Kurzpassgenauigkeit
| |
| ** OM | offensives Mittelfeld: Kurzpassgenauigkeit, Dribbling, Freistoss, Torinstinkt
| |
| ** FS | Flügelsturm: Schnelligkeit, Flanken, Dribbling
| |
| ** MS | Mittelsturm: Kopfball, Sprungkraft, Torinstinkt
| |
| | |
| * Skills der einzelnen Positionen
| |
| ** IV | Innenverteidigung: Balance, Reaktion, Pass, Übersicht
| |
| ** AV | Aussenverteidigung: Balance, Ausdauer, Schnelligkeit, Reaktion
| |
| ** DM | defensives Mittelfeld: Balance, Ausdauer, Reaktion, Übersicht
| |
| ** FM | Flügel Mittelfeld: Ausdauer, Schnelligkeit, Technik, Pass
| |
| ** OM | offensives Mittelfeld: Technik, Pass, Schuss, Übersicht
| |
| ** FS | Flügelsturm: Ausdauer, Schnelligkeit, Pass, Schuss
| |
| ** MS | Mittelsturm: Balance, Reaktion, Technik, Schuss
| |
| | |
| * Angriffsseite (Linkt, Mitte, Rechts) die gewählt wurde unter Taktik
| |
| * Spielweise (riskant, ausgeglichen, sicher) die gewählt wurde unter Taktik
| |
| | |
| | |
| ''5. Tore''
| |
| | |
| * Grundlage für die Anzahl an Toren ist die Anzahl an Torschüssen.
| |
| * Je mehr Torschüsse, desto mehr Tore sind prinzipiell möglich.
| |
| | |
| | |
| ''6. Elfmeter''
| |
| | |
| * Die Anzahl der Elfmeter berechnet sich aus der Anzahl der Tore.
| |
| * Maximal 1/5 aller Tore sind Elfmetertore.
| |
| | |
| | |
| ''7. Freistösse''
| |
| | |
| * Fouls [-] Elfer des Gegnerteams
| |
| | |
| | |
| ''8. Ballbesitz''
| |
| | |
| * Gesamtstärken der Vereine im Vergleich multipliziert mit der Form aller Spieler
| |
| | |
| | |
| ''9. Eckbälle''
| |
| | |
| * Ballbesitz multipliziert mit einer Zufallszahl zwischen Schüssen aufs Tor und Schüssen insgesamt
| |
|
| |
|
|
| |
|