mikrocontroller.net

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


Autor: Simon Lehmayr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht 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? :-)

Autor: Roland Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: naiver gast (Gast)
Datum:

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

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> durchn' Kompressor

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

Autor: Micha H. (Firma: Dg3brb) (kanadakruemel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Simon Lehmayr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt H. (hunz)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Simon Lehmayr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TSCP hatte ich schon probiert, wollte zuviel RAM - zumindest 
out-of-the-zip

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat es mit den Pferdchen zu tun ?

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.