Guten morgen Community,
wie hier angekündigt habe ich gestern meinen Kleinen "Wettbewerb" vorgestellt. Zu gewinnen, gibt es außer Ruhm und Ehre nichts. Da ich dennoch allen die Chance zum Teilnehmen ermöglichen möchte stelle ich hier noch einmal Kurz vor, worum es geht.
Das Gefangenendilemma ist ein Teil der Spieltheorie, es geht hierbei um 2 Spieler, welche unabhängig von einander befragt werden ob sie Kooperieren oder nicht kooperieren möchten (man stelle sich hier z.B. Verbrecher vor, welche gestehen = kooperieren können, oder eben nicht = den anderen betrügen). Nachdem sich beide Spieler für eine Variante (kooperieren / betrügen) entschieden haben, wird ausgewertet.
Betrügen beide, bekommen sie 1 Punkt
Kooperieren beide, bekommen sie 3 Punkte
Kooperiert einer und der Andere Lügt, so bekommt der Kooperierende 0 Punkte, der Betrüger 5 Punkte.
Zusätzlich zur Kooperieren und Betrügen Option, gibt es noch die Option der Kündigung (dann bekommen beide immer 2 Punkte, eine Kündigung kann einseitig ausgesprochen werden). Diese Variante ist Insperiert durch die Spektrum Zeitschrift, welche ich gelesen habe und mich auf die Idee dieses Wettkampfes gebracht hat.
Hier habe ich das Basisprogramm veröffentlicht. In der Datei ugd.pas findet ihr die Klasse "TBaseIndividual".
Wenn ihr mitmachen wollt müsst ihr folgendes tun.
1. Leitet eine Klasse von TBaseIndividual ab.
2. Definiert die Routinen
Procedure Init; virtual;
Function Step: TCoopStyle; virtual; abstract;
Procedure AfterStep(StepValue: TCoopStyle); virtual; abstract;
(Es muss nicht in allen 3 Routinen Code hinterlegt werden, zumindest aber die abstracten routinen müssen definiert werden, siehe die 14 weiteren Beispielklassen in ugd.pas)
3. Tragt eure Klasse mittels
Register_gd( ..)
in TForm1.FormCreate(..) in die Liste der Verfügbaren "Rassen" ein.
4. Testet ob eure Strategie, gegen die Anderen gewinnt, dies kann in einer "Runde" mittels des Buttons "All against all" oder auch mittels "Area fight" geschehen.
Wenn ihr der Meinung seit, eure Klasse nimmt es mit den anderen auf, dann sendet mir die Klasse mit einer kurzen Beschreibung zu (als PN, nicht öffentlich, da wir verhindern wollen dass andere durch euren Lösungsansatz "Inspiriert" werden), oder Bringt eure Implementierung auf dem 14. Stuttgarter Lazarus Treffen mit.
Mit der Teilnahme an dem "Wettbewerb" stimmt ihr den folgenden Regeln zu.
1. Ich darf unter Angabe der Quelle eure Klasse in ugd.pas hinzufügen und auf meiner Homepage veröffentlichen.
2. Ihr garantiert, dass die Implementierung euere Idee ist und keine Rechte dritter Verletzt wurden.
3. Auch wenn ich den Code prüfen werde, so verpflichtet ihr euch nicht zu "beschummeln" und eine Erhliche implementierung ab zu geben.
Am 14. Stuttgarter Lazarus Treffen werden wir gemeinsam den Sieger bestimmen.
Dazu gehen wir wie folgt vor :
1. Der Rundenzähler wird Zufällig jedoch > 1000 gewählt
2. Es kämpft jeder gegen jeden
3. Je nach Anzahl der Mitspieler, kämpfen die ersten 3 oder die ersten 5
auf einer 30x30 bzw. 50x50 Fläche gegeneinander.
Sieger ist wer die Fläche Stabil Dominiert.
In der Hoffnung das ich mit diesem Thread noch weiter komme, werden wir auch die dort gezeigte Evaluationstechnik zur Bestimmung des Siegers berücksichtigen.
So denn freue ich mich auf eine Rege Teilnahme.
Gruß
Corpsman
Gefangenendilemma, ein Kampf um Leben und Tot..
- corpsman
- Lazarusforum e. V.
- Beiträge: 1641
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Gefangenendilemma, ein Kampf um Leben und Tot..
--
Just try it
Just try it
-
- Lazarusforum e. V.
- Beiträge: 566
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.0 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Re: Gefangenendilemma, ein Kampf um Leben und Tot..
Hallo Corpsman,
habe Dein Programm von Deiner Homepage heruntergeladen und kompiliert. Oh Wunder, es hat funktioniert.
Ich werde mir jetzt etwas für eine neue Klasse überlegen müssen.
Gruß, Linkat
habe Dein Programm von Deiner Homepage heruntergeladen und kompiliert. Oh Wunder, es hat funktioniert.
Ich werde mir jetzt etwas für eine neue Klasse überlegen müssen.
Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS
- corpsman
- Lazarusforum e. V.
- Beiträge: 1641
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Gefangenendilemma, ein Kampf um Leben und Tot..
So meine Wettkampfklasse ist fast fertig, im Schnitt erreicht sie 2400 Punkte und kommt gegen die anderen damit stabil auf die Plätze 4 oder 5
corpsman

corpsman
--
Just try it
Just try it