Autor Beitrag
lutz
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 09.01.09 13:49 
hallo

ich habe ein viergewinnt mit ki programmiert.
Das läuft auch alles. Die KI ist auch recht vernünftig, allerding habe ich hier
www.delphi-forum.de/...=0&postorder=asc
gelesen, dass man die Koeffizienten per Evolution optimieren kann.

Da schreibt alzaimar auf Seite 4
Zitat:

Sei A der Satz von Koeffizienten.

1. Erstelle eine Kopie (B) von A.
2. Mutiere B, indem Du irgendeinen Koeffizienten veränderst.
3. Lass A gegen B spielen (10x) und dann B gegen A (auch 10x).
4. Wenn B öfter gewonnen hat, als A, dann ist wohl der veränderte Koeffizientensatz besser. Ersetze A mit B und mach bei 1 weiter.
5. Wenn B öfter verloren hat, war B wohl keine gute Idee, mach bei 1 weiter.

Anmerkung zu 2: Die Veränderung sollte nach der Gaußschen Verteilung geschehen. Ich meine, in der Math-Unit ist so eine Random-Funktion.


Meine Frage
Wenn ich A gegen B spielen lasse, müsste da nicht immer das selbe Ergebnis rauskommen?
Also entweder A gewinnt immer, B gewinnt immer oder immer unentschieden?
Weil der Computer macht ja immer die selben Rechenschritte.
Weshalb sollte man die dann 10x gegeneinander spielen lassen?

lutz
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 09.01.09 15:11 
Das kommt darauf an, was "Spielen" ist. Bei Kniffel würde ich es schon 10 mal laufen lassen, oder bei Mensch Ärgere dich Nicht, weil (durch das Werfen der Würfel) eine Zufallskomponente im Spiel ist. Wenn ich aber ein Spiel wie 4 Gewinnt habe und meine KI ohne Zufall arbeitet, kannst ich natürlich getrost nur 1 Spiel machen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
lutz Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 09.01.09 15:19 
ok danke

hab auch mal die evolution bei mir implementiert und es kommt auch immer dasselbe raus

aber wie bewerte ich, ob ein Satz neuer Koeffizienten besser ist als der alte?

ich lasse A gegen B spielen
ich lasse B gegen A spielen

wenn A 2 mal gewinnt ist A besser. Klar. Das selbe gilt für B.
Aber was ist, wenn A und B einmal gewinnt?
Wie bewerte ich das dann?


oder sollte ich für die Ki 2 Sätze Koeffizienten erzeugen.
Also einer, wenn PC anfängt und einer wenn Mensch anfängt?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 09.01.09 16:29 
das könntes du natürlich machen, 2 verschiedene Verhalten für die Fälle wer anfängt, könnte eine gute optimierung und einen stärkeren Gegner erzeugen.

Wenn du das machst, kannst du natürlich *nur* die "KI beginnt" sätze mit ihresgleichen vergleichen und umgekehrt, indem du sie gegen die gleichen Gegner spielen lässt. KI-beginnt und Spieler-beginnt Evolutionen musst du dann getrennt voneinander durchführen...

Ich denke, du musst dann zunächst einen der beiden Sätze optimieren (Gegner nicht wechseln, wer anfängt ebenso nicht wechseln), dann den nächsten gegen den optimierten ersten, dann wieder umgekehrt. Dabei wirst du wohl eine "Abbruchbedingung" einbauen müssen, ich denke, je nach Spiel kann es vorkommen, dass man in eine art endlosschleife kommt.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.