Du bist nicht angemeldet.

Werbeanzeige

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 691

Wohnort: Bielefeld

  • Private Nachricht senden

71

19.02.2015, 19:59

@LetsGo Ich hab dir ne PM geschickt.

Es ist jetzt übrigens so, dass wenn zwei gleiche KIs gegeneinander spielen, das Spiel erst wenn 3 Bälle im Spiel sind und 30 Sekunden keiner einen Punkt macht es für Unentschieden erklärt. Es macht aber nicht wirklich Sinn so ein Spiel zu betrachten. Ich würde es so machen, die eigene Klasse zu kopieren und dann eine Version zu modifizieren. So kann man die neue KI gegen die alte spielen lassen.

@LuggLugg
Ich denke es ist besser das erst mal simpel zu halten :)
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

David Scherfgen

Administrator

Beiträge: 9 998

Wohnort: Bonn

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

72

19.02.2015, 20:12

Ich hätte noch einen Vorschlag, und zwar dass du bei der Auswertung das Punktelimit hochschraubst, mindestens um den Faktor 10. Sonst ist einfach zu viel Zufall dabei (jedenfalls wenn die KIs den Zufallsgenerator nutzen). Wenn du mit hinreichender Sicherheit bestimmen wolltest, ob ein Würfel gezinkt ist, dann würdest du ja auch wesentlich mehr Würfe nehmen.

KeksX

Community-Fossil

  • Private Nachricht senden

73

19.02.2015, 20:18

@LetsGo Ich hab dir ne PM geschickt.



Könntest du die eventuell für alle posten? Jetzt bin ich doch neugierig :)
WIP Website: kevinheese.de

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 691

Wohnort: Bielefeld

  • Private Nachricht senden

74

19.02.2015, 20:41

@LetsGo Ich hab dir ne PM geschickt.



Könntest du die eventuell für alle posten? Jetzt bin ich doch neugierig :)

Ach, er hat mir nur eine KI geschickt und meinte, dass das auch den Bug zeige, wenn man sie gegen sich selbst spielen lässt. Ich kann den Bug aber nicht sehen.

@David
Hmm, das würde ich nur ungern. Und bisher gab es bei den eingesandten KIs auch eindeutige Ergebnisse. Aber wenn sich das ändert werd ich nochmal drüber nachdenken :)
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

David Scherfgen

Administrator

Beiträge: 9 998

Wohnort: Bonn

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

75

19.02.2015, 20:43

Und noch ein Vorschlag (sorry): Mach lieber "Jeder gegen jeden" mit 2 Punkten für einen Sieg und 1 Punkt für ein Unentschieden. Das ist besser als das "Champion"-Prinzip, das du anwenden willst.

Das Champion-Prinzip bestraft früh eingereichte KIs, denn diese müssen nach einem Sieg mehr Spiele ungeschlagen überstehen als die spät eingereichten KIs, um bis zum Ende Champion zu bleiben.

Beim Champion-Prinzip gehst du weiterhin davon aus, dass mathematisch gesprochen eine Ordnung auf den KIs existiert. Das ist aber definitiv nicht so. Es kann durchaus sein, dass A gegen B gewinnt und B gegen C, aber A trotzdem gegen C verliert.

Darin sehe ich auch eine potenzielle Gefahr beim Optimieren der eigenen KI. Man sollte eine neue Variante am besten gegen alle vorherigen Varianten antreten lassen, nicht nur gegen die letzte, die man als die bisher beste betrachtet. Sonst wäre es theoretisch möglich, dass man sich insgesamt verschlechtert.

Und zu guter letzt: Die maximal 7 Einreichungen pro Teilnehmer würde ich auf 1 reduzieren, sonst kann man seine Chancen ganz einfach verbessern, indem man 7-mal die gleiche KI einreicht, die sich nur durch den Random Seed unterscheidet. ;)

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 691

Wohnort: Bielefeld

  • Private Nachricht senden

76

19.02.2015, 21:08

Nun, es geht bei dem Contest nicht nur um KI Entwicklung, sondern auch darum sich schlau anzustellen. :) Wenn jemand die fast selbe KI 7 mal einsenden will, kann er das gerne tun :)
Das Champion-Prinzip bestraft früh eingereichte KIs, denn diese müssen nach einem Sieg mehr Spiele ungeschlagen überstehen als die spät eingereichten KIs, um bis zum Ende Champion zu bleiben.

Dafür bleibt die Früheingesandte bei Unentschieden Champion. Und es kann jeder selbst entscheiden, wann er einsendet.

Beim Champion-Prinzip gehst du weiterhin davon aus, dass mathematisch gesprochen eine Ordnung auf den KIs existiert. Das ist aber definitiv nicht so. Es kann durchaus sein, dass A gegen B gewinnt und B gegen C, aber A trotzdem gegen C verliert.
In dem Fall wird's tatsächlich stark von der Reihenfolge der Einsendungen abhängig, aber ich glaube nicht, dass der Fall tatsächlich auftreten wird, und wenn doch ist halt ein wenig Glück notwendig :)
Ich werde nach Ende der Runde definitiv mal jeden gegen jeden antreten lassen, aber an den Regeln will ich erstmal festhalten.

Darin sehe ich auch eine potenzielle Gefahr beim Optimieren der eigenen KI. Man sollte eine neue Variante am besten gegen alle vorherigen Varianten antreten lassen, nicht nur gegen die letzte, die man als die bisher beste betrachtet. Sonst wäre es theoretisch möglich, dass man sich insgesamt verschlechtert.

Das ist ja jedem selbst überlassen.
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

77

20.02.2015, 05:50

Dafür bleibt die Früheingesandte bei Unentschieden Champion. Und es kann jeder selbst entscheiden, wann er einsendet.


Naja das würde ich jetzt nicht Unterschreiben, die Freizeit spielt da natürlich auch ne Rolle. Ich sagen mal Familein Mensch mit Arbeit vs. Student, da liegt der Famielenmensch klar im Nachteil.

Man könnte es ähnlich wie im Fussball machen:
- 3 Punkte Sieg
- 1 Punkt Unentschieden
- ein SpielTag jeder gegen Jeden

Die Wirklich beste KI geht mit den Meisten Punkten nache Hause.

Eine Woche "Training" und der Nächste Spieltag geht los.

Am ende gewinnt der mit den Meisten punkten und man selber weiß auch wie gut man im Vergleich mit den Andreren abgeschnitten hat das es dann weitere Platzierungen gibt.

Gruß Koschi
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

David Scherfgen

Administrator

Beiträge: 9 998

Wohnort: Bonn

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

78

20.02.2015, 08:53

Ich denke halt, dass die Rahmenbedingungen so sein sollten, dass am Ende die beste KI gewinnt. Einfluss von Zufall (durch niedriges Punkte-Limit) und anderen nicht von uns kontrollierbaren Umständen (Reihenfolge der Einsendung - selbst wenn jeder um 23:59 abgibt, so wäre es Zufall, in welcher Reihenfolge die E-Mails bei dir eintreffen) sollte so weit wie möglich ausgeschlossen werden, sonst könnten wir ja auch direkt Lotterie spielen ... Ich fände es schon frustrierend, wenn der Champion nur Champion ist, weil er zuletzt eingereicht wurde und "mit Glück" den bisherigen Champion geschlagen hat (weil er mit dessen Spielweise besser klarkommt), obwohl er ansonsten gegen die anderen KIs eher mittelmäßig gespielt, im schlimmsten Fall sogar gegen alle verloren hätte.

Zur Argumentation mit Unentschieden: Kann das im neuen Framework überhaupt noch realistisch passieren? Ich dachte, es kommt jetzt ein neuer Ball dazu. (bei mir funktioniert das übrigens korrekt) Naja, theoretisch können beide Spieler gleichzeitig scoren oder durch den CPU-Faktor zu einem Unentschieden gelangen, aber das ist doch ziemlich unwahrscheinlich. Die zuletzt eingereichte KI hat damit einen großen unfairen Vorteil. Wenn überhaupt die Reihenfolge der Einsendung eine Rolle spielen sollte, dann doch eher umgekehrt: Man sollte diejenigen belohnen, die schnell und gut gearbeitet haben (ist aber auch eher problematisch, siehe Koschis Beitrag).

Eine Frage habe ich noch. Statische Variablen sind ja verboten, aber wie sieht's mit statischen Konstanten aus? Ich würde gerne ein paar Sachen vorberechnen, die sich prima in ein statisches konstantes Array packen ließen. Die Alternative wäre halt, eine Instanzvariable zu benutzen und die im Konstruktor zu füllen.

TGGC

1x Rätselkönig

Beiträge: 1 771

Beruf: Software Entwickler

  • Private Nachricht senden

79

20.02.2015, 09:47

Eine Frage habe ich noch. Statische Variablen sind ja verboten, aber wie sieht's mit statischen Konstanten aus? Ich würde gerne ein paar Sachen vorberechnen, die sich prima in ein statisches konstantes Array packen ließen. Die Alternative wäre halt, eine Instanzvariable zu benutzen und die im Konstruktor zu füllen.
Ich werde sowas auf jeden Fall benutzen. Ansonsten werde ich Code generieren, der in etwa die gleiche Funktion erfuellt. Code sind Daten - Daten sind Code. Das ganze hat nur ehh keinen Sinn, weil eine schnelle KI sowieso nicht belohnt wird. Daher faende ich es auch bloed, wenn ich nur 1 KI einreichen darf, da ich evtl. auch mal noch einen Ansatz einreichen moechte, der ganz simpel CPU Zeit verbrennt.

David Scherfgen

Administrator

Beiträge: 9 998

Wohnort: Bonn

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

80

20.02.2015, 10:33

Heute ist mir das alles nicht mehr die Zeit Wert um Penise zu vergleichen.

Denkst du wirklich, dass es darum geht?
So ein Contest bringt einen dazu, sich sehr intensiv mit einem Problem zu beschäftigen und es von allen Seiten zu analysieren. Dabei lernt man oft viele neue Sachen.

Werbeanzeige

Ähnliche Themen