Wettbewerb

Aus LM Wettbewerb

Wechseln zu: Navigation, Suche

Fragen zur Teilnahme am Wettbewerb. Neue Beiträge fügen Sie hinzu, indem Sie oben auf 'bearbeiten' klicken und anschließend unten einen neuen Beitrag hinzufügen. Bitte tragen Sie gegebenenfalls einen namen, Psydonym oder sonstige Kontakmöglichkeit ein.

Inhaltsverzeichnis

[Bearbeiten] Einsendeschluss

Teilnehmer am Wettbewerb müssen ihren Code bis spätestens am 12. September 2010 an wettbewerb@linux-magazin.de schicken. Die Programmiersprache ist egal, solange ich sie mit normalem aptitude install auf meinem Ubuntu-Testrechner installieren kann. Ich lege aber jedem eine frühere Abgabe ans Herz, da ich dann testen kann, ob der Code lauffähig ist und so die Teilnehmer die Chance haben, eventuelle Compilier- oder offenkundige Laufzeitfehler zu beheben.

-- Magnus 15:05, 4. Aug. 2010 (UTC)

[Bearbeiten] Wie sehen nun die offizielle Regeln aus?

Ich möchte an dieser Stelle nochmal Diskussion der offiziellen Regeln und die Durchführung des eigentlichen Wettbewerbs anzetteln, weil bis zum 12.09. ist nicht mehr soviel Zeit und derzeit sind die (nachträglich angedachten) Regeln über verschiedene Seiten verstreut! --Boerge 11:54, 26. Aug. 2010 (CEST)

[Bearbeiten] Abgelegte Dateien des Bots

Darf man nun eine Datei pro Bot während des Wettbewerbs auf dem Server anlegen oder nicht? Wenn ja wie groß? Wie lange bleibt sie erhalten? -- Anon

Darf man. Ich hatte im Artikel von 1 MByte geschrieben, was mir auch sinnvoll erscheint. Auch bei 1,01 MByte würde ich nicht gleich irgendjemanden disqualifizieren. Das Turnier muss nur irgendwie auch durchführbar sein. Die Datei darf entweder beim Builden angelegt werden ("make build") oder gerne auch währen eines der Spiele gelesen oder geschrieben werden. Alles muss sich innerhalb eines eigenen Verzeichnisses (".") abspielen. Sämtliche Versuche, auf Dateien von Mitspielern lesend oder schreibend zuzugreifen, führen zur Disqualifikation. Nach dem Turnier lösche ich u. U. die Dateien wieder, wenn die zuviel Platz belegen sollten.

-- Magnus 13:57, 31. Aug. 2010 (CEST)

  • Huch, was heißt jetzt eine Datei pro Bot? Kann man pro Gegner, der einem begegnet, eine 1MB-Datei anlegen? Bisher klang es nicht so. --Christian 17:18, 2. Sep. 2010 (CEST)
  • Missverständnis, das heißt ganz genau, dass du mit Deinem Bot genau eine Datei anlegen kannst. Pro Bot meint je Bot der auf dem System spielt (eingereicht wurde). Nicht verwechseln mit einer Datei je Gegner, das ist nicht erlaubt. --Soloko 21:05, 2. Sep. 2010 (CEST)
  • Wird jetzt nur der Botname in der Tabelle verwendet um den Sieger zu ermitteln? Ich hatte sowas von Credentials aus Zahlen gelesen... --AIXMeister

Ja, jede Einsendung darf genau einen Namen verwenden und den nicht während des Spiels modifizieren. Die Credentials waren ursprünglich eine Idee von mir, um sicherzugehen, dass niemand einen anderen Spielernamen kapert. Das würde ich aber im Zweifelsfall im Sourcecode überprüfen. Wer hier absichtlich mogelt, wird disqualifiziert.

-- Magnus 13:57, 31. Aug. 2010 (CEST)

Wenn man sich jetzt eine Datei anlegen darf, könnt Ihr bitte das Protokoll so ändern, dass der erste Spieler auch den Namen des Gegners sofort erfährt? Damit kann man die Informationen in der Datei über Gegner auch vor dem ersten Zug nutzen.

--Ponto 13:22, 5. Sep. 2010 (CEST)

Nur damit ich das jetzt nicht missverstehe: Es gibt doch kein 1MB Limit für die Einsendung bzw. Dateien, die nicht geschrieben werden? In meinem Fall ist es so, dass mein Bot zunächst aus einigen Dateien Daten in Arrays einliest. Diese Dateien verbrauchen ca. 2 bis 50 MB. Noch ist das Format für den Entwickler gedacht, wenn ich die Daten etwas komprimiert aufschreibe komme ich aber auch auf (im Umfangreichen Fall - Ich weiß noch nicht, welchen Bot ich einschicken werde) auf ca. 5MB. Ist das erlaubt? Ich könnte die Daten auch (unschön, aber machbar) im Quellcode unterbringen, dann würde die ausführbare Datei entsprechend größer werden. Andere haben vielleicht kompliziertere Algorithmen und deshalb größere ausführbare Dateien. Wie gesagt, die Daten werden weder beim Kompilieren noch beim Spielen geändert. Ist meine Vorgehensweise Regelkonform? --Topo 17:54, 7. Sep. 2010 (CEST)

Nagut, in den Regeln ist das tatsächlich nicht festgelegt. In dem Fall wirst Du mir wohl einen Downloadlink schicken müssen ... Aber sei es drum, auch mit 50 MByte könnte ich im Extremfall noch leben.

-- Magnus 18:17, 8. Sep. 2010 (CEST)

[Bearbeiten] Durchführung des Wettbewerbs

  • Wir würfeln jetzt wirklich bis 50?

Ja.

-- Magnus 14:04, 31. Aug. 2010 (CEST)

  • Wieviel Mal spielt nun jeder gegen jeden?

Das ergibt sich erst aus der finalen Anzahl der Teilnehmer. So oft wie möglich. Ich habe mir ein leistungsfähiges Cluster mit 8 x 3,0 GHz Cores gesichert, dort will ich das Turnier über localhost spielen lassen. Ich habe ungefähr einen Tag Realtime Zeit, um das Turnier spielen zu lassen, mal sehen, wie häufig dabei jeder gegen jeden spielen kann. Ich habe als Bauchgefühl rund 100 Partien gegen jeden (+ 100 weitere als Rückspiel). -- Magnus 14:04, 31. Aug. 2010 (CEST)

  • Wir sollten uns nochmal über die Durchführung des Wettbewerbs prinipiell unterhalten! Ich bin der Meinung, dass das Ergebnis eines Durchganges sehr stark durch den Zufall bestimmt wird, dass der Sieger eigentlich ein Lottogewinner ist. In ein paar Versuchsreihen meiner Bots habe ich auch mal vollkommen identisch parametrisierte (und nicht lernende) Bots gleichzeitig mitspielen lassen. Dabei ist aufgefallen das es keine Signifikanz bei den Spielständen (Anzahl der gewonnen und verlorenen Spiele) zu gleichen Gegnern gibt. Also der erste Bot verliert gegen bestimmte Gegner, beim 2. (gleichen) Bot ist die Tendenz genau umgegehrt. Auch bei sehr großen Anzahlen von Spielen bleibt diese Diskrepanz erhalten! Man sollte sich also unterhalten/einigen, ob:
    • mehrere Gesamt-Durchgänge durchgeführt und durch Signifikanztests überprüft werden
    • es vielleicht eine Vorrunde/Zwischenrunde/Halbfinale/Finale o.ä. gibt
    • ...?

Das Turnier ist klar beschrieben: Jeder gegen jeden, so oft wie eben möglich (s. o.). Ja, das ganze ist ein Glückspiel, wobei der Einfluss des Zufalls mit zunehmender Zahl der Spiele in den Hintergrund tritt. Hat ein Bot 1000 Spiele gespielt, treten in den Tabellen klare Tendenzen hervor. Mag sein, dass diese nicht jedem Signifikanztest genügen, aber das sind nun einmal schlicht die Regeln.

Irgendwelche Zwischenrunden spielen wir nicht aus. Der einzige Fall wäre, wenn die Sieger gleich häufig gewinnen würden. In dem Fall treten sie gegeneinander an (hinreichend oft).

-- Magnus 14:04, 31. Aug. 2010 (CEST)

Stellt Euch nicht so an. Würfeln ist nun mal ein Glücksspiel ;-). Im Ernst. Woher weisst Du, dass der 2. Bot wieder gegen einen nicht modifizierten Gegner spielt? Ursprünglich habe ich meinen Bot immer gleich genannt, aber durchaus sehr unterschiedliche Strategien gefahren. Teilweise habe ich auch nur Daten gesammelt, usw. Im Moment benenne ich meinen Bot nach jedem Durchlauf um, um eventuelle Trainingserfolge gezielt gegen meinen Bot ins Leere laufen zu lassen. Das ganze ist doch nur ein kleines Experiment für etwas Spaß :-). --Balu 00:41, 31. Aug. 2010 (CEST)

Woher ich das weis? Ganz einfach: wenn ich zwei eigene Bots (bot1 und bot2), welche vollkommen identisch programmiert und parametrisiert sind, gleichzeitig laufen lasse und dabei unterschiedliche Tendenzen zu bestimmten anderen Gegnern rauskommen, stimmt mich das nachdenklich! Bsp.: bot1 gewinnt in der Summe aller Spiele gegen aixmeister, bot2 verliert in der Summe aller Spiele gegen aixmeister. --Boerge 10:41, 31. Aug. 2010 (CEST)

[Bearbeiten] Sockenpuppen

Wie wird (oder: kann es ueberhaupt) gewaehrleistet, dass jeder Teilnehmer tatsaechlich nur von einem Bot vertreten wird? Nicht, dass jemand mehrere Bots unter verschiedenen Namen einsendet? --Gladnon 10:52, 2. Sep. 2010 (CEST)

Ja, das ist ein grundsätzliches, theoretisches Problem. Ich versuche das durch linguistische Analyse des Anschreibens, der E-Mail-Adresse und einen Schuss Äußerster Gerissenheit™ abzumildern. Alternativ könnte ich mir noch das Post-Ident-Verfahren (gibt's das auch außerhalb Deutschlands?) vorstellen oder Euch alle bitten, mir Wattestäbchen mit DNA-Proben einzusenden.

Ich bitte da einfach um ein Mindestmaß an Ehrlichkeit. Bin ich naiv?

-- Magnus 15:56, 7. Sep. 2010 (CEST)

Noe, ehrlich waehrt am laengsten.

[Bearbeiten] Anzahl der Eintraege im Zustandsraum

Ich zitiere aus dem Zwischenbericht zum Programmierwettbewerb:

.... Damit ist der Zustandsraum 5^3 = 125000 Eintraege ....

Meine Frage lautet: wie kommt man genau auf die Zahl 125000? Seien x1 die Punkte des Gegners, x2 -- die eigenen gesicherten Punkte und x3 -- die ungesicherten. Wenn man dran ist, kann x1 zwischen 0 und 49 liegen, also: 50 moegliche Zustaende. x2 und x3 koennen dabei auch zwischen 0 und 49 sein, allerdings unter der Bedingung, dass ihre Summe kleiner als 50 ist (sonst hat man ja gewonnen). Das folgende kleine Programm:

#include <iostream>

using namespace std;

int main()
{
    int x1 = 50;
    int x2;
    int x3;
    int combs = 0; 

    for(x2 = 0; x2 < 50; x2++) {
        for(x3 = 0; x3 < 50; x3++) {
            if((x2+x3) < 50) {
                combs++;
            }
        }
    }

    cout << "Groesse des Zustandsraums: " << (x1*combs) << endl;
    return 0;
}

kommt auf das Ergebnis 63750, ungefaehr die Haelfte als im Artikel angegeben. Liege ich hier falsch oder hab ich Recht? --Gladnon 22:30, 9. Sep. 2010 (CEST)

Persönliche Werkzeuge