Algorithmus für konkretes Problem gesucht
Verfasst: Montag 15. August 2011, 15:24
Ich habe ein algorithmisches Problem, bei dem ich Hilfe benötige.
Hintergrund: Ich nehme an einem privaten Fußballmanagerspiel teil, dass auf die Daten von kicker.de zurückgreift und die Spieler nach einem festgelegten Punktesystem bewertet. Da unser Spielleiter das alles per Hand auswertet, habe ich mir zu Kontroll- und Übungszwecken ein Skript geschrieben, dass die Spielerseiten automatisiert ausliest und die Gesamtpunktzahl berechnet. Soweit funktioniert das auch alles. Jeder Kader besteht aus 28 Spielern, von denen am Spieltag aber nur 14 (11+ 3 Ersatz) eingesetzt werden können.
Nun wollte ich ein nettes Gimmick hinzufügen und am Ende jedes Spieltages eine optimal Aufstellung bestimmen, d.h. wie viele Punkte hätte jeder Spieler erreichen können, wenn er die beste Aufstellung aus seinen 28 Spielern gewählt hätte.
Es gibt folgende Bedingungen, die bei einer Aufstellung erfüllt sein müssen:
1) Zunächst werden alle Spieler bestimmt, die eingesetzt wurden und die Positionen mit der Mindestanzahl besetzt. Dabei wird bei jeder Position nach den Spielern mit der maximalen Punktzahl gesucht und diese dann in die optimale Elf gesetzt. Die letzten zwei Spieler werden dann unter der Berücksichtigung der Regeln aus dem verbleibenden Rest ausgewählt.
Problem bei dieser Methode: Ich muss mit einer Position anfangen. Im Extremfall habe ich drei Mittelfeldspieler eines Vereins mit hoher Punktzahl, aber einen Abwehrspieler desselben Vereins mit einer noch höheren. Dieser würde aber nicht mehr ausgewählt, weil bei den Mittelfeldspielern ja schon drei Spieler eines Vereins gewählt wurden.
2) Hier habe ich die Spieler nicht nach Positionen getrennt und wähle jeweils immer den Spieler mit der höchsten Punktzahl aus, prüfe, ob die Bedingung der Maximalbesetzung sowie 3 Spieler eines Vereins noch nicht erfüllt sind und setzte ihn in meine optimale Elf. Problem bei der Sache ist, dass ich nicht sicherstellen kann, dass die Minimalbesetzung erfüllt ist, d.h. es kann z.B. passieren, dass ich einen optimale Mannschaft mit 5 Abwehr-, 5 Mittelfeldspielern und einem Torwart habe, aber keinen Stürmer.
Ich hoffe, ich habe mich verständlich ausgedrückt. Ich denke jetzt schon ein wenig über das Problem nach und habe im Moment irgendwie ein Brett vor dem Kopf bzw. keine Idee, wie ich beide Ansätze verknüpfen kann. Vielleicht hat jemand von euch ja noch eine Idee oder einen Hinweis?
Gruß EmaNymton
Hintergrund: Ich nehme an einem privaten Fußballmanagerspiel teil, dass auf die Daten von kicker.de zurückgreift und die Spieler nach einem festgelegten Punktesystem bewertet. Da unser Spielleiter das alles per Hand auswertet, habe ich mir zu Kontroll- und Übungszwecken ein Skript geschrieben, dass die Spielerseiten automatisiert ausliest und die Gesamtpunktzahl berechnet. Soweit funktioniert das auch alles. Jeder Kader besteht aus 28 Spielern, von denen am Spieltag aber nur 14 (11+ 3 Ersatz) eingesetzt werden können.
Nun wollte ich ein nettes Gimmick hinzufügen und am Ende jedes Spieltages eine optimal Aufstellung bestimmen, d.h. wie viele Punkte hätte jeder Spieler erreichen können, wenn er die beste Aufstellung aus seinen 28 Spielern gewählt hätte.
Es gibt folgende Bedingungen, die bei einer Aufstellung erfüllt sein müssen:
- Man darf aus einem Verein maximal 3 Spieler aufstellen
- Es gibt folgende Minimalbesetzung der einzelnen Positionen: 'Torwart':1,'Abwehr':3,'Mittelfeld':3,'Sturm':2
- Es gibt folgende Maximalbesetzung der einzelnen Positionen:'Torwart':1,'Abwehr':5,'Mittelfeld':5,'Sturm':3
1) Zunächst werden alle Spieler bestimmt, die eingesetzt wurden und die Positionen mit der Mindestanzahl besetzt. Dabei wird bei jeder Position nach den Spielern mit der maximalen Punktzahl gesucht und diese dann in die optimale Elf gesetzt. Die letzten zwei Spieler werden dann unter der Berücksichtigung der Regeln aus dem verbleibenden Rest ausgewählt.
Problem bei dieser Methode: Ich muss mit einer Position anfangen. Im Extremfall habe ich drei Mittelfeldspieler eines Vereins mit hoher Punktzahl, aber einen Abwehrspieler desselben Vereins mit einer noch höheren. Dieser würde aber nicht mehr ausgewählt, weil bei den Mittelfeldspielern ja schon drei Spieler eines Vereins gewählt wurden.
2) Hier habe ich die Spieler nicht nach Positionen getrennt und wähle jeweils immer den Spieler mit der höchsten Punktzahl aus, prüfe, ob die Bedingung der Maximalbesetzung sowie 3 Spieler eines Vereins noch nicht erfüllt sind und setzte ihn in meine optimale Elf. Problem bei der Sache ist, dass ich nicht sicherstellen kann, dass die Minimalbesetzung erfüllt ist, d.h. es kann z.B. passieren, dass ich einen optimale Mannschaft mit 5 Abwehr-, 5 Mittelfeldspielern und einem Torwart habe, aber keinen Stürmer.
Ich hoffe, ich habe mich verständlich ausgedrückt. Ich denke jetzt schon ein wenig über das Problem nach und habe im Moment irgendwie ein Brett vor dem Kopf bzw. keine Idee, wie ich beide Ansätze verknüpfen kann. Vielleicht hat jemand von euch ja noch eine Idee oder einen Hinweis?
Gruß EmaNymton