Forum: Mikrocontroller und Digitale Elektronik Wo gibts eine Schachengine für ARM mit 16kB RAM?


von Simon Lehmayr (Gast)


Lesenswert?

Ich möchte einen kleinen Schachcomputer mit 128x128 Farbdisplay bauen.

Mein Prozessor ist ein ARM7-ähnlicher Cortex M3: knapp 100kB Flash sind 
frei und 16kB RAM... leider sind alle Schachengines (in C) die ich auf 
die Schnelle gegoogelt habe, zu speicherhungrig...

Wer kennt da was nettes?

von Stefan M. (Gast)


Lesenswert?

Selbstmachen? :-)   Ich habe mal eine einfache in Java programmiert. Wie 
stark sind Deine Gegner? Mit einer einfachen Alpha-Beta-Suche und ein 
bisschen optimieren an der Bewertungsfunktion lassen sich schon recht 
gute Resultate erzielen. Eine kleine Eröffnungsbibliothek dazu im Flash 
und eine Bibliothek für das Endspiel und die Engine ist bereit für gute 
Anfänger.

Welche Schach-Engines hast Du denn bisher versucht zu portieren? 
Hauptproblem dürfte die Suchtiefe sein, die durch den mageren Speicher 
arg begrenzt wird.

mfg, Stefan.

von Stefan M. (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/Alpha-Beta-Suche

Da ist sogar der Source zur Alpha-Beta-Suche beschrieben. Der Suchbaum 
muß natürlich generiert werden. Das ist aber relativ einfach, wenn man 
nicht ein 8x8-Feld implementiert, sondern ein 12x12.

mfg, Stefan.

P.S. Wer weiß, warum man ein 12x12-Feld nimmt? :-)

von Roland Schmidt (Gast)


Lesenswert?


von Dirk (Gast)


Lesenswert?


von naiver gast (Gast)


Lesenswert?

Koennt man denn nicht den Suchbaum durchn' Kompressor lassen, und so die 
Suchtiefe multiplizieren ? aus 16k mach 100k.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> durchn' Kompressor

bist du dir sicher daß du da was durch einen Kompressor schicken 
möchtest? Oder doch lieber durch einen Komprimierer?

von Micha H. (Firma: Dg3brb) (kanadakruemel)


Angehängte Dateien:

Lesenswert?

ich habe mal was Ähnliches für 'nen AVR (Mega32) angefangen. Als 
Startpunkt habe ich mich von diversen chess engines im Netz inspirieren 
lassen. Da die Engine in C geschrieben ist, sollte sie leicht auf einen 
Arm portierbar sein. Ich benutze jedenfalls dieselbe Datei, um unter es 
unter Linux zu kompilieren (läßt sich besser debuggen...).

Im Moment mangelt es mir aber an Zeit, das Projekt weiterzuführen.

Es wird die schon oben erwähnte Alpha-Beta Strategie verwendet. 
Eröffnungsbibliothek ist noch nicht drin. Als Kompromiss für den 
geringen zur Verfügung stehenden Ram werden nicht für jede Suchtiefe 
alle Züge gespeichert, sondern immer neu berechnet. Das ist natürlich 
ganz schön aufwändig, aber ohne Ram nicht anders machbar. Dadurch 
verbrauche ich im Mega32 für die chess engine nur ca 500...600 byte 
(fürs board, a-b scores etc).

Mein "Schachcomputer" :-) besteht aus einem Mega32, einem Pollin 128x64 
Grafikdisplay und einem Drehencoder als Eingabe.

Als Anhang gibts das C-File der chess engine. Vielleicht hilfts Dir ja.

kanadakruemel

von Simon Lehmayr (Gast)


Lesenswert?

@Stefan May: Von Null möchte ich da nicht anfangen - hab eh schon genug 
mit dem grafischen Schmus am Hals.

@Roland Schmidt: Danke, Deep Evelyn ist super klein und läuft auch aufm 
ARM. Hat aber noch keine Eingabeüberprüfung für gültige Züge.

@Micha: Schaut auch gut aus! Wie ist dein chess lizensiert? :-) Frei 
weiter verwendbar?

von Gast (Gast)


Lesenswert?

Ist zwar ein bisschen OT:
Ich habe eine Schachkasette (also so eine zusammenklappbares Brett mit 
Raum für die Figuren) in ca. 50 cm * 50 cm (Tournament Nr. 6; Fa. 
Wegiel; Bild: http://www.wegiel-chess.com.pl/p_chess/Tour6_box.JPG )zu 
Hause. Wenn man die Einsätze für die Figuren rausnimmt, hat man so ca. 
1,5 bis 2 cm Platz. Das sollte eine gute Grundlage für ein Sensorbrett 
geben?!

Da die Schachfiguren mit Blei beschwert sind, sollte das Messprinzip in 
der Lage sein, den Bleiklumpen durch ca. 5 mm Holz, Filz, Luft hindurch 
zu erkennen - irgendetwas induktives? Sollte natürlich auch nicht zu 
viel kosten, vielleicht so allerhöchstens 1 € / Sensor.

Einen Mikrocontroller wird man eh brauchen, interessant wird die 
Kommunikation mit dem Schachprogramm auf dem PC. Dazu würde sich das 
Protokoll der kommerziell erhältlichen DGT-Bretter anbieten, das von 
vielen Schachprogrammen unterstützt wird. Spezifikationen für 
Programmierer sind bei DGT frei erhältlich.

von Benedikt H. (hunz)


Lesenswert?

Tom Kerrigan's Simple Chess Program (TSCP) fiele mir da ein: 
http://www.tckerrigan.com/Chess/TSCP

Das läuft auch auf Nedap Wahlcomputern mit ebenfalls 16kB Ram ;-) (siehe 
Community)

von Simon Lehmayr (Gast)


Lesenswert?

TSCP hatte ich schon probiert, wollte zuviel RAM - zumindest 
out-of-the-zip

von Willi (Gast)


Lesenswert?

@Stefan May

>...Wer weiß, warum man ein 12x12-Feld nimmt?

Nee, keine Ahnung. Erklär es mir doch bitte.
Hat es mit den Pferdchen zu tun ?

MfG Willi

von Stefan M. (Gast)


Lesenswert?

> Hat es mit den Pferdchen zu tun ?

Jupp. :-)  Für die Springer braucht man dann keine Sonderbehandlung bei 
den Zügen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.