Autor Beitrag
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 15.09.07 23:50 
hmmm, was hindert dich daran, die ersten 6 Züge eines jeden Spiels in einer Baumstruktur zu speichern und die zugehörigen "Best Moves" entsprechend zu markieren?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 16.09.07 12:57 
user profile iconBenBE hat folgendes geschrieben:
hmmm, was hindert dich daran, die ersten 6 Züge eines jeden Spiels in einer Baumstruktur zu speichern und die zugehörigen "Best Moves" entsprechend zu markieren?

Ich habe etwas Besseres gefunden: Der 1. Zug wird mit Random ermittelt, die nächsten 4 Züge werden in einem niedrigen Level ausgeführt, erst dann wird das eingestellte Level verwendet.

Was noch wünschenswert wäre:

-> Dass das Programm stärker spielt, so etwas wie einen Plan entwickelt oder "Fallen" stellt. Zur Zeit ist es doch so, dass es bei jedem seiner Züge sozusagen bei 0 zu rechnen beginnt.
Nun gibt es da alzaimar's selbstlernende KI, aber in den letzten 135.000(!) "Lern"-Durchgängen konnte kein einziger der 27 Koeffizienten mehr verbessert werden. Das bedeutet meiner Ansicht nach, dass hier eine gewisse Grenze erreicht ist - die Zusammensetzung der 27 Zahlen ist optimal, oder?
Was also nun? Noch mehr Koeffizienten einbauen, 30? Damit wird das Programm ja noch langsamer.

-> Dass das Programm schneller spielt, auch in hohen Levels. 20 Minuten pro Zug ist nicht mehr lustig. Gut, ein Schachcomputer rechnet noch länger, aber der kann dafür auch mehr! :D

Hier mal die Koeffizienten und ihr Sinn:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
  icoeffs: TCoeffArray = (
{0}  405,     {Multiplikator für Anzahl der Steine}
{1}  27,      {für Stein, der ziehen kann}
{2}  -858,    {für Stein, der schlagen kann}
{3}  7,       {für Stein, der gedeckt ist}
{4}  -3070,   {für angegriffenes, freies Feld}
{5}  13,      {für nicht besetzte Spalte}
{6}  -144,    {für 2 nebeinander nicht besetzte Spalten}
{7}  85,      {Abstand eines Gewinnsteins zur Grundlinie}
{8}  -48,     {für nächster Zug deckt Stein und Stein ist gedeckt}
{9}  -39,     {für nächster Zug greift gegnerischen Stein an}
{10} -10,     {für 2 vor Grundlinie bei freiem Zug}
{11}  918,    {für blockierten Stein}
{12}  -78,    {3 Felder links und/oder rechts sind frei}
{13}  -214,   {feststellen, ob aPlayer mehr als 1 Stein in der Reihe hat}
{14}  -20,    {Schlagabtausch}
{15}  22,     {Nachbarstein(e) ist/sind Gegner}
{16}  20,     {Nachbarstein(e) ist/sind eigene}
{17}  -1730,  {Nachbarfeld(er) ist/sind leer}
{18}  188,    {freie Spalte (senkr. nur leere Felder)}
{19}  -58,    {freie Reihe (waagr. nur leere Felder)}
{20}  7649,   {Reihe waagr. lückenlos eigene Steine}
{21}  1,      {Reihe waagr. lückenlos gegnerische Steine}
{22}  52,     {Eigener Stein steht völlig frei}
{23}  25,     {Gegnerischer Stein steht völlig frei}
{24}  6,      {Eigener Stein steht am Rand}
{25}  -9637,  {Gegnerischer Stein steht am Rand}
{26}  -964    {Stein kann in 3 Zügen ohne zu Schlagen gewinnen}
);

Was fehlt? Was kann man besser machen?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!