Usw (United-Spieler-Werte)

Diese Datei dokumentiert das Programm Usw (United-Spieler-Werte).

Programm-Version: 1.13 [22 Oct 1998]
Handbuch-Version: 1.3, 19. Oktober 1998

Copyright Robert Gunst <robert.gunst@gmx.de>, 1998

Kopieren

Usw darf frei benutzt, kopiert und weitergegeben werden, wenn damit keine kommerziellen Zwecke verbunden sind.

Ohne Gewähr

Ich stelle Usw zur Verfügung, gebe aber keinerlei Garantie. Ich gebe keine Garantie darauf, daß das Programm Usw in irgendeiner Version fehlerfrei arbeitet. Ich kann auch nicht garantieren, daß diese Anleitung das Programm Usw korrekt beschreibt. Ich übernehme keinerlei Haftung oder Verantwortung für Folgen aus der Benutzung dieses Programms.

Danke

Ich danke Michael Schröpl und Martin Ahlemeyer für ihre Artikel über die Runden-WP Theorie im United-Forum. Diese Artikel bilden die Grundlage für dieses Programm.

Einleitung

Dieses Programm soll Managern und Spielleitern des Postspiels United helfen, den Handelswert von Spielern zu berechnen. United wurde von Alan Parr erfunden und ich gehe davon aus, daß die Benutzer dieses Programms mit United vertraut sind. Das Programm berechnet den Nichtliga-Wert (NL-Wert), den Geschätzten Handelswert (GH-Wert) und den Reihenverstärkungs-Wert (RV-Wert) von United-Spielern.

Der Nichtliga-Wert ist Bestandteil der United-Regel. Der Geschätzte Handelswert wird mit Hilfe einer Handelswert-Tabelle berechnet. Das pbm-Auswerteprogramm United/XY von Lukas Kautzsch und Michael Schröpl und das pbm-Hilfsprogramm TEAMCHEF von Pedl Rau berechnen Handelswerte von Spielern mit dieser Methode.

Im März 1989 schrieb Michael Schröpl einen Artikel im United-Forum über 'Die magische Liga-Wert-Konstante'. Dabei ging es darum, die Verstärkung einer Aufstellung durch einen zusätzlichen WP für einen bestimmten Zeitraum (eine Saison, eine Runde, ein Spiel) zu bewerten. Michaels These war gerade, daß der Wert einer solchen Verstärkung bezogen auf ein Zeitintervall konstant ist. Da Michael als Zeitraum eine Runde betrachtete, nannte er sein Berechnungsmodell Runden-WP-Theorie oder kurz RWP-Theorie.

Im darauffolgenden Heft verfeinerte Martin Ahlemeyer die RWP-Theorie. Er beschäftigte sich mit dem Wert von trainierbaren Spielern und Hintermannschafts-Spielern.

Der Reihenverstärkungs-Wert in Usw wird mit Hilfe der RWP-Theorie berechnet. Da es United-Ligasysteme gibt, in denen nicht konstant zwei Liga-Spiele pro Runde ausgetragen werden, rechnet Usw mit einem konstanten Verstärkungs-WP-Wert pro Spiel, SWP. Da der Bezugszeitraum (Saison, Runde, Spiel) eher zweitrangig ist, benutze ich den Begriff Reihenverstärkung statt Zeit-WP.

Warnung

Bitte traut nicht blind den Ergebnissen des Programms! Es lohnt sich immer noch einmal nachzudenken, ob die ausgespukten Ergebnisse auch plausibel sind, und ob die Existenz des berechneten Spielers in einem realen Ligasystem sinnvoll ist.

Erstens kann die Änderung eines Parameters schon dramatische Auswirkungen auf das Gesamtergebnis haben, zweitens können in Usw inzwischen Spieler eingegeben werden, die aus dem Rahmen des Gewöhnlichen fallen.

Installation

Das Programmpaket kann in ein beliebiges Verzeichnis ausgepackt werden. Ich empfehle, usw.exe und usw_d.bat in ein Verzeichnis zu kopieren, das in der Umgebungsvariablen %PATH eingetragen ist. Dann kann Usw von jedem Platz aus im Dateisystem aufgerufen werden.

Systemvoraussetzungen

Ich benutze Usw auf einem PC mit i486, 16 MByte Hauptspeicher und dem Betriebssystem MS-DOS Version 5.0. Ich schätze, daß Usw mit einem 286 Prozessor, 640 kByte Hauptspeicher und MS-DOS 3.3 auch noch läuft. Der Vorgänger von Usw hieß UUH (United-Uttility: Handel) und lief auf ATARI/ST Rechnern.

Umfang

Das Programmpaket Usw besteht unter anderem aus folgenden Dateien:

README.txt
Kurzinformation zum Programmpaket Usw
NEWS.txt
Liste bemerkenswerter Programm-Änderungen
usw.exe
United-Spieler-Werte, das Programm Usw für DOS
gehawert.dat
Handelswert-Tabelle
doku\usw.txt
Usw-Handbuch
data\aufstieg
Das Verzeichnis enthält Usw-Dateien, die das GM-Angebot des Ligasystems Aufstieg berechnen. Sehr lehrreich!

usw.exe ist ohne weitere Dateien lauffähig. Wenn Ihr Usw weitergebt, kopiert bitte trotzdem alle Dateien mit (insbesondere auch die Anleitung).

Aufruf

Wenn Usw gestartet wird, versucht das Programm zunächst die Befehlszeile zu interpretieren, mit der Usw aufgerufen wurde. Dabei wird ein - gefolgt von einem oder mehreren Buchstaben als Option interpretiert:

Option Bedeutung
-V gibt die Versionsnummer und Erstellungszeit des Programms aus.
-z beendet das Programm direkt nach der Interpretation der Befehlszeile.
-d Datei führt den Befehl 'durch Datei' aus.

Dateinamen mit der Endung '.dat' werden als Handelswert-Tabelle eingelesen. Andere Dateinamen werden als Befehlsdatei eingelesen. Falls durch die Befehlszeile keine Handelswert-Tabelle eingelesen wurde, wird versucht, die Datei 'gehawert.dat' im aktuellen Verzeichnis zu lesen. Danach können einzelne Zeilen eingegeben werden, die vom Programm als Befehle interpretiert werden.

Aufbau der Handelswert-Dateien ('gehawert.dat')

Der Aufbau ist identisch mit der gleichnamigen Datei, die in United/XY benutzt wird. Diese Datei enthält den Wert eines Spielers vor den Spielen in Runde 1 in Abhängigkeit von Alter und Stufe. Jede Zeile ist einer bestimmten Altersgruppe zugeordnet (siehe Tabelle). Jeder Spalte ist eine Stufe zugeordnet. Der ersten Spalte (von links) ist Stufe 0 zugeordnet, den nächsten Spalten sind entsprechend die nächsten Sufen zugeordnet.

Zeile Spieleralter
1 tT
2 nT
3 I
4 II
5 III
6 IV
7 V bis X

In jeder Zeile müssen genau vierzehn positive ganze Zahlen, die durch mindestens ein Leerzeichen voneinander getrennt sind, stehen. Falls beim Lesen Probleme auftreten, wird die Ausführung des Programms abgebrochen.

Programm-Parameter

Ich habe in letzter Zeit immer noch Parameter so geändert, daß alte Befehls-Dateien dann nicht mehr korrekt arbeiteten. Um sich die aktuellen Parameternamen mit ihren Default-Werten anzuschauen, ruft Usw ohne Argumente auf und gebt die Befehle '=' und '==' ein. Usw ist durchaus auch als Plattform für Experimente gedacht. Deshalb gibt es vielfältige Möglichkeiten, den RV-Wert durch Parameter zu beeinflussen. Für konkrete Berechnungen haben sich einfachere Parameter durchgesetzt: WP-Wert konstant, jede Saison die gleiche Stärke-Tabelle etc.

Grundlagen

Bei der Berechnung der Spielerwerte benutzt Usw einige Parameter, die durch den Benutzer geändert werden können. Die Parameter lassen sich in verschiedene Typen einteilen, je nach dem welche Werte sie annehmen können:

BOOLE
Wahrheitswert ('ja' oder 'nein')
INT
ganze Zahl (z.B. '7')
REAL
gebrochene Zahl (z.B. '2,78')
TABELLE
eine Folge von ganzen Zahlen, die durch Leerzeichen voneinander getrennt werden.

Tabellen lassen sich noch einmal unterteilen in:

Runden-Tabellen
Die n-te Zahl der Folge gibt den Wert des Parameters in Runde n an.
Saison-Tabellen
Die sind leider etwas komplizierter!

Saison-Tabellen

Ist ein Spieler mehrere Saisons aktiv, dann kann die Stärke des Spielers in jeder Saison mit einer anderen Stärke-Tabelle verglichen werden. Saison-Tabellen steuern, welche Stärke-Tabelle einer Saison als Referenz zugeordnet wird. Wer in jeder Saison die gleiche Stärke-Tabelle benutzen möchte, wird bei den Beispielen weiter unten fündig und kann sich die folgende Beschreibung erst mal ersparen.

Es gibt in Usw neun verschiedene Stärke-Tabellen. Sie sind von 1 bis 9 durchnummeriert. Der erste Teil, der Vorspann, einer Saison-Tabelle besteht aus drei Zahlen, die bestimmen, wie die Stärke-Tabellen einer Saison zugeordnet werden. Der zweite Teil einer Saison-Tabelle besteht aus einer bis acht Zahlen zwischen 1 und 9. Jede dieser Zahlen verweist damit auf eine Stärke-Tabelle.

Die erste Zahl im Vorspann gibt an, wieviele Stärke-Tabellen von dieser Saison-Tabelle benutzt werden. Ist die erste Zahl gleich n, dann besteht die ganze Saison-Tabelle aus 3 + n Werten.

Die zweite Zahl im Vorspann gibt an, welcher Eintrag im zweiten Teil in der ersten Saison der Spielerkarriere benutzt wird. Ist die zweite Zahl gleich i, dann wird in der ersten Saison die Stärke mit der Nummer benutzt, die an 3 + i-ter Stelle in der Saison-Tabelle, also an i-ter Stelle im zweiten Teil der Saison-Tabelle steht.

Wenn in einer Saison der letzte Eintrag der Saison-Tabelle, die Zahl, die ganz rechts steht, benutzt wurde, dann bestimmt die dritte Zahl im Vorspann, welcher Eintrag in der nächsten Saison benutzt wird. Wenn in einer Saison nicht der letzte Eintrag der Saison-Tabelle verwendet wurde, dann wird in der nächsten Saison der nächste Eintrag verwendet. Der nächste Eintrag ist die Zahl rechts neben der aktuell verwendeten.

Beispiele

Um den Vorspann einer Saison-Tabelle von den Verweisen auf die Stärke-Tabellen zu trennen, sind die ersten Zahlen nicht nur durch Leerzeichen getrennt.

Gültigkeits-Bereiche

Je nach Inhalt der Parameter sind bei der Eingabe nur Werte gültig, die in einem bestimmten Wertebereich liegen. Der Bereich [x, z] bedeutet dabei, daß der Wert y einer Eingabe größer gleich x und kleiner gleich z sein muß, damit die Eingabe gültig ist. Es gibt unter anderem folgende Bereiche:

Name [x,z]
Runde 1 11
Würfel 11 100
Stufe 0 20
Prozent 0 200

Die Parameter im Einzelnen

In der Form:

Übersicht

Name Typ Bereich Default
A-Feld-Anteil INT Prozent 20
A-Würfel INT Würfel 15
Ab-Runde INT Runde 1
Anzahl-Runden INT Runde 11
Geduld INT Prozent 100
GHW-extraBOOLEja, neinja
HIM-Halbe-SWPREAL[0, 100]8
Letzter-HandelINTRunde7
T-WürfelINTWürfel14

Runden-Tabellen

NameBereich Default
Spiele[0, 10] 2 ...
SWP-Wert[0, 100]15 ...
TWP-Wert [0, 1000] 330 ...
Stärke [i] 1<=i<=9 [0, 20]
Training [Alter] [0, 1] 1 ...

Saison-Tabellen

Name Default
T-Platz (1) 1, 1: 1
A-Platz (1) 1, 1: 2
F-Platz (1) 1, 1: 3

Die Befehlszeile

Die Befehlszeile kann leider nicht großartig bearbeitet werden. Mit Backspace kann das letzte Zeichen des Befehls gelöscht werden.

Befehle

#

Aufruf
# [text]
Beschreibung
Der Text hinter # wird nicht als Befehl interpretiert, sondern als Kommentar ignoriert. Dies funktioniert aber nur, wenn '#' am Anfang der Zeile steht.

aus

Abkürzung
a
Aufruf
aus [datei]
Beschreibung
Lenke die Ausgabe um. Wenn ein Dateiname angegeben wird, wird unter diesem Namen eine Datei geöffnet. Wird ein Dateiname ohne Endung angegeben, erhält die Datei die Endung '.txt'. Eine schon unter diesem Namen bestehende Datei geht durch das Öffnen verloren. Wird kein Argument angegeben, so wird die aktuelle Ausgabe geschlossen und die Ausgabe erfolgt wieder auf die zuletzt benutzte Datei oder auf das Terminal.

durch

Abkürzung
d
Aufruf
durch [datei]
Beschreibung
Lenke sowohl die Eingabe, als auch die Ausgabe um (siehe ein, aus). Wurde ein Dateiname angegeben, so wird die Ausgabe immer auf eine Datei mit der Endung '.txt' umgelenkt. Am Ende der Datei wird zwar die Eingabe, aber nicht die Ausgabe geschlossen. Dies kann durch den Befehl aus getan werden oder geschieht automatisch, wenn das Programm beendet wird.

echo

Abkürzung
ec
Aufruf
echo [text]
Beschreibung
Gib text aus.

ein

Abkürzung
ei
Aufruf
ein [datei]
Beschreibung
Lenke die Eingabe um. Wenn ein Dateiname angegeben wird, wird versucht eine Datei mit diesem Namen zu lesen. Wird ein Dateiname ohne Endung angegeben, wird eine Datei mit der Endung '.usw' gesucht. Wird kein Argument angegeben, so wird die aktuelle Eingabe geschlossen und die Eingabe erfolgt wieder von der zuletzt benutzten Datei oder von der Tastatur.

ende

Abkürzung
en
Aufruf
ende
Beschreibung
Beende die Ausführung des Programms Usw.

ghw

Abkürzung
g
Aufruf
ghw [datei]
Beschreibung
Lade eine Handelswert-Tabelle. Wird unter dem angegebenen Dateinamen keine konsistente Datei gefunden, bleibt die alte GHW-Tabelle gültig. Wird kein Dateiname angegeben, dann wird die aktuelle Handelswert-Tabelle ausgegeben.

hilfe

Abkürzung
h, ?
Aufruf
hilfe
Beschreibung
Gib eine kurze Beschreibung der Befehle aus.

kauf

Abkürzung
k
Aufruf
kauf [zahl]
Beschreibung
Vergleiche die aktuell berechneten Handelswerte (siehe MEMORY) mit dem angegebenen Wert (angenommener Preis für den Spieler).
  1. RV_Diff := (Preis - RV_Wert) / RV_Wert.
  2. GH_Diff := (Preis - GH_Wert) / GH_Wert.

Eine Differenz von 30% entspricht der Transferlisten-Grenze von 130 in Aufstieg.

Beispiel: Für einen M I 10 sind folgende Werte berechnet worden:

  1. GH-Wert: 2198 kKj
  2. RV-Wert: 2240 kKj

Kauf 2500 ergibt:

  1. RVW-Diff := (2500 - 2240) / 2240 = 11%
  2. GHW-Diff := (2500 - 2198) / 2198 = 14%

memory

Abkürzung
m
Aufruf
memory,
memory = [-NGR],
memory ('|+|-) [geld]
Beschreibung
Zeige oder verändere die Handelswert-Speicher. Beim Aufruf ohne Argumente werden die aktuellen Handelswerte angezeigt. Dies sind die Ergebnisse der letzten Berechnung. Beim Aufruf mit Argumenten greift man auf einen Hintergrund-Speicher zu.
Operationen
= [-NGR]
zeigt den Hintergrundspeicher an
-N
zeigt nur den Nichtligawert an
-G
zeigt nur den Geschätzten Handelswert an
-R
zeigt nur den Reihenverstärkungswert an
' [geld]
setzt die Were des Hintergrundspeichers auf Null. Falls ein geld-Betrag angegeben ist, wird das Geld-Feld auf diesen Betrag gesetzt.
+ [geld]
Falls ein geld-Betrag angeben ist, wird der Betrag zum Geld-Feld des Hintergrundspeichers addiert. Sonst werden die aktuellen Handelswerte zum Hintergrundspeicher addiert.
- [geld]
Falls ein geld-Betrag angeben ist, wird der Betrag vom Geld-Feld des Hintergrundspeichers subtrahiert. Sonst werden die aktuellen Handelswerte vom Hintergrundspeicher subtrahiert.

setze

Abkürzung
se, =
Aufruf
setze,
setze =,
setze parameter [wert...]
Beschreibung
Zeige oder verändere Programm-Parameter. Ohne Argument werden alle Parameter mit Ausnahme von Stärke und Training angezeigt. Mit einem Argument wird der aktuelle Inhalt des Parameters angezeigt. Sind hinter dem Parameternamen noch gültige Werte angegeben, wird der Parameter auf diese Werte gesetzt. Parameternamen können auch soweit abgekürzt werden, wie sie eindeutig bleiben.

Mit '= Runden-Tabelle [i]', wobei Runden-Tabelle ein Parameter des Typs Rundentabelle (Spiele, SWP-Wert, TWP-Wert) ist und i eine ganze Zahl zwischen 1 und Anzahl-Runden, können neue Werte ab Position i in Runden-Tabelle geändert werden. Mit '= Stärke [x, y]', wobei für x und y ganze Zahlen eingegeben werden, können neue Werte ab Position y in Stärke-Tabelle x eingegeben werden. Ebenso können mit '=Training [A, y]' neue Werte ab Position y in eine Trainings-Tabelle eingegeben werden, wenn A ein Alter (tT, nT, ...) ist.

Optionen
=
es werden alle Stärke- und Trainings-Tabellen ausgegeben.

spieler (SP, :)

Abkürzung
sp, :
Aufruf
Spieler reihen alter stufe [sondereigenschaften]
Beschreibung

Mit spieler werden die Daten des aktuellen Spielers neu gesetzt. Das Format ist weitgehend dem der Aufstieg-Regeln (Kapitel 3) angepaßt. Falls das Format verletzt wird, ist das Verhalten des Programms undefiniert. Das heißt nicht, daß Usw abstürzen wird oder einen Fehler melden, sondern das Usw die Spielerdaten irgendwie ändert.

Reihen: T, A, V, M, S. Bei Mehrfachqualifikationen in dieser Reihenfolge. Ein Torwart kann keine andere Reihenqualifikation haben.

Alter: tT, nt, I, II, III, IV, V, VI, VII, VIII, IX, X. Groß/Kleinschreibung ist nicht relevant.

Stufe: ganze Zahl zwischen 0 und 20.

Sondereigenschaften

Trainingsaufwand: [ gebrochene Zahl ]. Die kleinste Einheit, die Usw versteht sind halbe WP.

Trainingsgrenze: > Stufe.

Einsätze: Zahl * Reihe.

Sperren: ( Zahl ).

Disziplinarpunkte: Zahl 'DP'.

Vor und zwischen Sondereigenschaften kann ein Komma stehen.

version

Abkürzung
v
Aufruf
version
Beschreibung
Gibt die aktuelle Usw-Version aus.

wert

Abkürzung
w
Aufruf
wert [-NGRhkrs] [training-bis [verkauft-bis]]
Beschreibung
Berechne die Handelswerte des aktuellen Spielers und gib die berechneten Werte aus.
Optionen
-N
Es werden nur die Spielerdaten und der Nichtligawert ausgegeben.
-G
Es werden nur die Spielerdaten und der Geschätzte Handelswert ausgegeben.
-R
Es werden nur die Spielerdaten und der Reihenverstärkungswert ausgegeben.
-h
Es werden nur die Spielerdaten und die drei Werte NL-Wert, GH-Wert und RV-Wert ausgegeben.
-k
Kopfzeile auf alle Fälle (-h) ausgeben
-r
Die SWP jeder einzelnen Runde angeben. Ein '*' hinter einer Zahl bedeutet, daß der Spieler in dieser Runde trainiert wurde.
-s
SWP, TWP und deren Werte in jeder Saison ausgeben.
Argumente
training-bis
Der Spieler wird bis zum Alter training-bis trainiert. Danach bleibt der Spieler solange im Verein, daß sein RV-Wert möglichst groß ist.
training-bis verkauft-bis
Der Spieler wird bis Alter training-bis trainiert und mit Alter verkauft-bis in der letzten Handelsrunde an die Nichtliga verkauft.

Berechnungsverfahren

GH-Wert für Spieler mit einer Stufe > 13

Ich definiere als Grundzuwachs die Grundwertdifferenz zwischen einem Spieler mit Alter V und Stufe 13 und einem Spieler mit Alter V und Stufe 12. Der Grundwert eines Spielers mit einer Stufe n > 13 ist gleich dem Grundwert eines Spielers gleichen Alters mit Stufe 13 plus (n - 13) mal Grundzuwachs.

SWP eines Torwartes

Zum Rechnen führe ich einige Variablen ein. Sei:

t
die Stärke des Torwarts
r
die Referenzstärke des Torwarts
w
der Wert des Parameters T-Würfel

Die Wahrscheinlichkeit, dass ein Torwart der Stärke t einen Torschuss durchläßt, ist (w - t)/w. Wenn (w - r)/(w - t) = 2, dann vereitelt der Torwart im Schnitt doppelt so viele Torschüsse wie die Referenz. Bei gleichem Ausputzer in der Hintermannschaft ist der HIM mit dem Torwart der Stärke a halb so groß wie der HIM mit dem Referenz-Torwart der Stärke r.

Falls t < w und r < w, dann gilt swp := Maximum (0, HIM-Halbe-SWP * log ((w - r)/(w - t)) / log (2)).

Die swp einer Runde werden addiert und am Ende der Runde auf eine ganze Zahl gerundet.

SWP eines Ausputzers

Zum Rechnen führe ich einige Variablen ein. Sei:

a
die Stärke des Ausputzers
r
die Referenzstärke des Ausputzers
w
der Wert des Parameters A-Würfel

Die Wahrscheinlichkeit, dass ein Ausputzer der Stärke a eine Torchance zum Torschuss durchläßt, ist (w - a)/w. Wenn (w - r)/(w - a) = 2, dann vereitelt der Ausputzer im Schnitt doppelt so viele Torchancen wie die Referenz. Bei gleichem Torwart in der Hintermannschaft ist der HIM von Ausputzer a halb so groß wie der HIM von Referenz r.

Ein Ausputzer der Stärke a verhindert Maximum (0, a - r) Torchancen des gegnerischen Sturms gegenüber dem Referenz-Ausputzer der Stärke r. Da diese Reihenverstärkung im Gegensatz zu zusätzlichen WP in der Reihe V keine Torchancen erzeugt, wird die Verstärkung mit A-Feld-Anteil multipliziert.

Falls a < w und r < w, gilt swp := Maximum (0, HIM-Halbe-SWP * log ((w - r)/(w - a)) / log (2)) + Maximum (0, A-Feld-Anteil * (a - w) / 100). Die swp einer Runde werden addiert und am Ende der Runde auf eine ganze Zahl gerundet.

Beispiel: Die SWP für einen A X 10 sollen berechnet werden. Usw-Parameter sind folgendermaßen gesetzt:
A-Feld-Anteil      20
A-Platz          (1) 1, 1:    1
Stärke [1]          5    5    5   ...
A-Würfel           15
Ab-Runde            1
Anzahl-Runden      11
HIM-Halbe-SWP       9
Spiele              1    2    3   ...