Schachcomputer.info Community

Schachcomputer.info Community (https://www.schachcomputer.info/forum/index.php)
-   Die ganze Welt der Schachcomputer / World of chess computers (https://www.schachcomputer.info/forum/forumdisplay.php?f=2)
-   -   Vorstellung: Neuer Schachcomputer: CT800 (https://www.schachcomputer.info/forum/showthread.php?t=5242)

Rasmus 26.08.2016 22:05

Neuer Schachcomputer: CT800
 
Hallo zusammen,

es gibt einen Neuzugang aus der Bastelfraktion - nach Art des AVR-basierten "Schachzwerges", nur mit modernerer Hardware und völlig anderem Programm. Wenn ich "Schachcomputer" technisch so definiere, daß er kein Betriebssystem hat, weil er eben nur als Schachcomputer gebaut wurde, dann fallen PCs, Notebooks/Linuxrechner in Holzbrettern, Tablets und Smartphones raus. Übrig bleiben sämtliche klassischen Schachcomputer sowie natürlich auch der Schachzwerg und mein neues Projekt.

Gab's nicht Beschwerden, daß man immer nur die ewig selben Programme in neuem Gehäuse angeboten bekommt, oder diverse Raspberries mit recompiliertem Stockfish? Habe ich nicht auch mal den Wunsch nach einem Brikett mit modernerer Hardware gelesen? Naja, kleine Wünsche erfüllt das Universum zwar sofort, aber für Debugging/Modifikation von 7.000 Zeilen fremdem Ausgangscodes plus 15.000 Zeilen zusätzlichen Quelltexts nebst Aufbau der Hardware braucht es auch schonmal ein wenig länger.

Hier die Eckdaten:

Bezeichnung: CT800

Hardware:

CPU: ARM Cortex M4 (STM32F405)
Takt: 168 MHz (nur während der Computer rechnet), übertakteter Turbomodus auf 200MHz einstellbar
ROM: 1 MB
RAM: 192 kB + 4 kB Backup-RAM
Anzeige: Textdisplay mit 4x20 Zeichen (Hintergrundbeleuchtung zuschaltbar), außerdem eine grüne und eine rote LED sowie ein Piepser
Eingabe: 4x4-Tastatur, Koordinaten-Notation
Energieversorgung: 4xAA-NiMH-Akkus oder über Netzadapter. Alkali-Batterien (nicht aufladbar) gehen auch, rechnen sich aber nicht.
Batterielaufzeit: 38 Stunden (ohne Turbo), 34.5 Stunden (mit Turbo)
Stromaufnahme bei 5 V:
Spieler am Zug: 16 mA
Rechner am Zug: 78 mA (Turbomodus: 88 mA)
(jeweils +45mA, wenn die Hintergrundbeleuchtung des Displays aktiviert ist)

Software:

Autor des ARM-Ports: meine Wenigkeit
Basisprogramm: NG-Play v9.86 (mit meinen umfangreichen Verbesserungen und Bugfixes als v10.0)
Autor des Basisprogramms NGplay v9.86: George Georgopoulos
Autor der KPK-Endspieltabelle: Marcel van Kervinck
Eröffnungsbuch: 17.000 verschiedene Halbzüge in 9.000 unterschiedlichen Positionen. Zugumstellungen und Transpositionen werden erkannt.
Hashtabellen: zusammen 117 kB
Pondering: keines
Spielstärke: ~2100 ELO (Colditz: 2344 -> zu leicht, BT-2450: 2135, BT-2630: 2144. Alles ohne Übertaktung.)
Programmiersprache: C (der beste portable Makro-Assembler überhaupt!)
Lizenz: GPLv3+

Die Lizenz bedeutet: freie/offene Software. Mit Quelltexten also.

Es gibt auch eine Onlinepräsenz, allerdings ausschließlich auf englisch, was allerdings besonders für die niederländischen Poster hier vielleicht schneller zu lesen ist.

http://www.ct800.net

Sofern gewünscht, kann ich aber auch gerne auf deutsch hier die Zusammenfassung mit Features usw. posten - das wird allerdings ein etwas längeres Posting, und ich möchte Euch ja hier nicht gleich erschlagen.

viele Grüße, Rasmus

Chessguru 26.08.2016 22:42

AW: Neuer Schachcomputer: CT800
 
Hallo Rasmus,

ja klar, also ich bin interessiert. Ich habe mir dein Projekt bereits etwas näher angesehen, besonders die Partien haben mich natürlich interessiert. Und ich bin positiv überrascht, sehr gute Arbeit. Einen Vancouver 68000 (richtig?) schlägt nicht mal so nebenbei in 36 Zügen.

Das Gerät ist wirklich mal was Neues. Respekt. Ein Schachcomputer im klassischen Sinne.

Gruß
Micha

Mythbuster 26.08.2016 22:47

AW: Neuer Schachcomputer: CT800
 
Hi,
ganz ehrlich, denk mal drüber nach, was Du für so eine Kiste wie den Prototypen haben willst ... Brikett 2016 reloaded ... ich wäre interessiert!

Gruß,
Sascha

RetroComp 26.08.2016 23:01

AW: Neuer Schachcomputer: CT800
 
Hallo Radius,

das ist ja eine super Vorstellung hier mit einem selbst entwickelten Schachcomputer - klasse!

Mein Englisch ist nicht so ganz toll, vieles kann ich auf der Seite aber gut verstehen. Nicht ganz verstehe ich, ob Du den nun in größeren Stückzahlen produzieren willst?

Viele Grüße und herzlich willkommen,
Jürgen

Rasmus 26.08.2016 23:01

AW: Neuer Schachcomputer: CT800
 
@ Chessguru: das war der Vancouver 020 mit 12MHz.

Die älteren Geräte haben mitunter Probleme mit dem Eröffnungsbuch des CT800 - das geht sehr in die Breite, oftmals auch leicht suboptimal, aber abwechslungsreich. War übrigens eine Heidenarbeit, von 1.000 Zügen auf 17.000 Züge zu kommen. Jeder einzelne per Hand eingegeben und mit DeepShredder gegengecheckt.


@ Mythbuster: Der ist so nicht bezahlbar, weil ich für den Prototypen nicht aufs Geld gesehen habe. Die Tasten alleine liegen bei 400 Euro Materialkosten, weil das vandalismussichere, wasserdichte Piezotaster sind. Aber sie sehen halt cool aus. Die Frontplatte mit 55 Euro war auch nicht direkt günstig.

Und dann noch zig Tage Arbeit, weil der ganze Aufbau ja auch alles von Hand gelötet ist. Nicht zu vergessen, wenn ich diese Teile verkaufen wollte, würden mir CE-Laborprüfungen und Elektrogesetz das Genick brechen.

Die Idee wäre eher, daß man die Kiste für eine annehmbare Serienproduktion umstrickt, das sollte sich für vielleicht 30 Euro machen lassen, industriell gefertigt. Da hier ja auch Hersteller mitlesen und sich auch Kundenanregungen zu Herzen nehmen, könnte sich da vielleicht etwas ergeben. Deswegen habe ich auch die Hardware ausgiebig dokumentiert, damit Hersteller das leicht umstricken können.

Aber gut, dann mal das Folgeposting mit den ausführlicheren Features, weil nicht jeder gerne auf englisch lesen mag.

RetroComp 26.08.2016 23:07

AW: Neuer Schachcomputer: CT800
 
Hallo Rasmus,

meine Frage wurde durch Deinen letzten Beitrag schon beantwortet.

Danke
Jürgen

Rasmus 26.08.2016 23:07

AW: Neuer Schachcomputer: CT800
 
Features (das wurden irgendwie immer mehr?!):

- Zugeingabe:
Über die Tastatur; eingegeben wird Ausgangsfeld und Zielfeld des Zuges. Das wird, ebenso wie die Antwort des Computers, bei der angezeigten Zugliste dann noch in die lange algebraische Notation konvertiert. Diese Konvertierung gilt allerdings nur für das normale Spiel, nicht für die Analysestufe und die angezeigte Hauptvariante. Grund ist, daß die ausführliche Notation eben mehr Platz in der Anzeige kostet.

- Zeitkontrollen:
Zeit pro Zug (Sekunden): minimal, 5, 10, 20, 30, 60, 120, 180 (wahlweise hart, oder aber mit gelegentlichem Spielraum - jedoch nie mehr als das Dreifache der eingestellten Zeit, und bei Zeiten über 60s wird nur ein Zuschlag von maximal 60s gewährt)
Zeit pro Spiel (Minuten für jeden Spieler): 5, 10, 15, 20, 30, 45, 60, 90
Hierbei kann der Nutzer auch einen Faktor zwischen 1 und 4 einstellen, um den seine anfängliche Bedenkzeit erhöht wird. Man kann also z.B. mit 60 Minuten für den Menschen und 15 für den Computer spielen.
Turniermodi (Züge/Minuten+Minuten): 40/90+30, 40/120+30, 40/120+60, 40/120,20/60+30
Analysestufe: 9 Stunden pro Zug, unterbrechbar.
Fischerzuschlag (Sekunden): aus, 10s, 20s, 30s.
Spielerzuschlag (Sekunden): aus, 15s (für die Bedienung; unabhängig vom Fischerzuschlag).
- Bei den Zeitmodi "Zeit pro Spiel" und "Turnier" startet die Zeitberechnung erst nach dem ersten Halbzug von Weiß. Das vereinfacht z.B. Turniere.
- Nach Verlust durch Zeitüberschreitung kann die Partie im "Zeit pro Zug"-Modus weitergespielt werden.

- Wenn der Computer denkt, prüft er, ob sich der Start der nächsten Tiefen-Iteration überhaupt noch lohnt, also im Hinblick auf die verbleibende Bedenkzeit für seinen Zug. Wenn nicht, spart er sich die Zeit lieber. In den Zeitmodi "Zeit pro Spiel" und "Turnier" wird diese Zeit dann zusammen mit der Zeitersparnis aus dem Eröffnungsbuch für das Endspiel aufgehoben. Im entspannten "Zeit pro Zug"-Modus wird damit kompensiert, daß er gelegentlich auch mal das Dreifache der eingestellten Zeit denken kann.

- Analysestufe: angezeigt wird die Zugnummer der Partie, automatisch aktualisiert wird die Bewertung, die Suchtiefe, die Zeit bis zum aktuellen Startzug der Hauptvariante, die laufende Bedenkzeit und die Hauptvariante mit bis zu 8 Halbzügen. Allerdings ist die Stellungsbewertung nicht darauf getrimmt, eine Bewertung für den Menschen abzugeben, sondern um brauchbare Züge zu bekommen. Daher ist die Hauptvariante einigermaßen verläßlich (bezogen auf die verfügbare Spielstärke), aber die absolute Bewertung ist mit Vorsicht zu interpretieren. Außerdem ist die Bewertung in Teilen asymmetrisch, damit das Programm tendentiell Stellungen anstrebt, die ihm liegen.

- Farbwahl zu Beginn: Fest (Weiß/Schwarz), zufällig, zwei menschliche Spieler.
- Farbwechsel jederzeit möglich (bei Partien mit Zeitkontrollen unter Umschaltung nach "Zeit pro Zug").
- Man kann im Spiel auch zu "zwei menschliche Spieler" umschalten, um Züge einzugeben (in den Zeitmodi "Zeit pro Spiel" und "Turnier" kann man dann allerdings nicht mehr auf Computergegner zurückschalten - der Wechsel zu "Zeit pro Zug" wird aber automatisch vorgeschlagen).

- Dialoge, Menüaufrufe, Ansehen der Position usw. gehen nicht von der Bedenkzeit des Spielers ab.

- Position:
- Anschauen, Anschauen mit gedrehtem Brett, Materialliste. Dabei werden die obere und die untere Hälfte des Brettes nebeneinander angezeigt, was bei 4 Zeilen Display noch am meisten Übersicht bietet. Scrolling wäre eher schlechter.
- Eingabe: inkl. Vorgabe von Rochaderechten, sofern Rochaden denkbar wären, sowie der Angabe, welche Seite in der eingegebenen Position am Zug ist. Sofern nicht Spieler gegen Spieler eingestellt ist, übernimmt der Rechner dann zunächst die Seite, die nicht am Zug ist. Mit der "go"-Funktion kann er aber auch hier die Seiten wechseln. Das Eröffnungsbuch funktioniert auch für eingegebene Positionen, sofern die Rochaderechte entsprechend ausgewählt wurden. Allerdings geht dann die gesonderte Eröffnungsbehandlung nach Buchende nicht, was die Mobilitätswerte der Figuren betrifft.
- Partie-Notation: erreichbar über das Menü oder nach Partieende über den Positionsdialog. Gibt die Partie in algebraischer Notation wieder. Jeweils vier Halbzüge auf einmal werden mit Zugnummer angezeigt, man kann dann durchblättern. Das funktioniert auch für Partien, in denen Schwarz den ersten Zug hatte (eingegebene Position), dann wird der erste, fehlende Halbzug von Weiß wie in Büchern auch üblich mit "..." angezeigt.

- Anzeige von Stellungsbewertung und Hauptvariante (6 Halbzüge) über aufrufbare Dialogboxen. Die Rechentiefe wird dabei in Halbzügen angezeigt. Wenn die selektive Rechentiefe (Quiescence usw.) höher als der brute-force-Sockel ist, wird das im x/y-Format angezeigt - x Halbzüge brute force, y selektiv. Andernfalls wird die Rechentiefe nur als "x Halbzüge" angezeigt.

- Hat eine Seite einen deutlichen, aber nicht entscheidenden Vorteil (ab +/- 0.5 Bauerneinheiten), wird automatisch + bzw. - angezeigt, also in der Übersicht ohne extra Dialogbox. +, wenn der Rechner sich im Vorteil sieht, andernfalls -.
- Ein entscheidender Vorteil (ab +/- 3 Bauerneinheiten) wird mit ++ / -- angezeigt.
- Ein erzwingbares Matt wird mit +m bzw. -m angekündigt.
- Hat der Rechner seinen letzten Zug aus dem Eröffnungsbuch bezogen, wird 'b' angezeigt.
- Sieht der Rechner sich um mehr als 9.5 Bauerneinheiten im Nachteil, dann verkündet er seine Aufgabe per Dialogbox und bietet eine neue Partie an. Die Aufgabe kann aber abgelehnt werden, z.B. wenn man es bis zum Matt ausspielen möchte. Dann gibt er in dieser Partie nicht mehr auf.

- Man kann im Spiel auch zu "zwei menschliche Spieler" umschalten, um Züge einzugeben (in den Zeitmodi "Zeit pro Spiel" und "Turnier" kann man dann allerdings nicht mehr auf Computergegner zurückschalten - der Wechsel zu "Zeit pro Zug" wird aber automatisch vorgeschlagen).

- Verrauschte Stellungsbewertung: aus, leicht (+/- 0.10), mittel (+/- 0.30), stark (+/- 0.50) - jeweils in Bauerneinheiten. Um diesen Unsicherheitsbetrag wird die Bewertung verrauscht (nur im Mittelspiel, nicht im Endspiel). Je mehr Rauschen, desto mehr Abwechslung, aber mit negativen Auswirkungen auf die Spielstärke. Andererseits kann man damit die Spielstärke auch etwas drosseln.

- Undo/Redo: Über die gesamte Partie bei Zeitkontrolle "Zeit pro Zug" oder im Analysemodus, sonst 40 Halbzüge (die Bedenkzeiten bei Partien mit Zeitkontrolle werden dabei ebenfalls zurück- bzw. vorgebucht, inklusive eventuellem Fischer- und Spielerbonus).

- Eröffnungsbuch mit 17.000 Halbzügen in 9.000 Positionen. Zugumstellungen werden erkannt. Außerdem wird auch erkannt, wenn man mit Weiß logisch die schwarze Seite nimmt (mit einem Zug Tempoverlust). Manche Spieler tun das, um Computer aus dem Buch zu werfen und dennoch Eröffnungstheorie zu haben - das geht aber nicht, wenn der Computer den Trick auch kennt.
- Eröffnungsbuch abschaltbar (außer zum ersten Halbzug von Weiß, wegen der Zeitverwaltung).

- Jenseits des Eröffnungsbuches werden Stellungstypen mit geschlossenem oder blockiertem Zentrum (c-f) erkannt und möglichst vermieden. Quasi ein simpler anti-human-mode.

- Schnellantworten (gelten nicht für die Analysestufe). Sinn der Sache ist, Bedenkzeit zu sparen in den Zeitpartien und den Benutzer außerdem nicht mit unnötigem Herumgerechne zu nerven:
- Wenn es nur einen legalen Zug gibt, führt der Computer ihn ohne weitere Berechnung aus.
- Wenn der Computer sofort mattsetzen kann, macht er das auch.
- Wenn er im nächsten Zug zwangsläufig mattgesetzt wird, bricht er die Berechnung ab und zieht irgendeinen legalen Zug.
- Wenn es mehrere legale Züge gibt, aber davon nur einer verhindert, daß der Computer im nächsten Zug mattgesetzt wird, führt er den auch einfach aus.
- Die Stellungsbewertung ist dann entweder der vorherigen Hauptvariante entnommen, wenn der Spieler dementsprechend gezogen hat, oder ansonsten der flachen Vorsuche (3 Halbzüge), die zum Vorsortieren der Züge verwendet wird. Außer wenn es nur einen legalen Zug gab, aber der Spieler dabei nicht die Hauptvariante gezogen hat, dann gibt es keine Stellungsbewertung. Kurz gesagt wird die beste verfügbare Datenbasis herangezogen, die trotz der Schnellantwort vorhanden ist.

- Unterverwandlung geht, sowohl seitens des Computers wie auch des Spielers. Gibt man keine Wunschfigur bei der Umwandlung vor, wird automatisch eine Dame gewählt.

- Remis durch dreifache Stellungswiederholung ist implementiert, auch wenn die Stellung sich nicht aufeinanderfolgend wiederholt.
- Remis durch die 50-Züge-Regel ist implementiert. Außerdem wird die Stellungsbewertung nach 20 Vollzügen ohne Schlagzug oder Bauernzug graduell in Richtung Remis abgesenkt, damit das Programm diese Tendenz rechtzeitig erkennt, insbesondere in der Verteidigung. Gilt nicht für Endspiele ohne Bauern.

- Implementierte Endspiele:
- Mattführung gegen alleinstehenden König (mit König plus Dame, Turm, Läuferpaar oder Springer+Läufer).
- König plus Bauer gegen König (Endspieltabelle).
- Remis bei Randbauern und falschem Läufer, wenn der verteidigende König das Umwandlungsfeld beherrscht. Auch dann, wenn der Randbauer ein Mehrfachbauer (doppelt, dreifach, ...) ist.
- Remiserkennung bei König und zwei Springern gegen König.
- Hat eine Seite nur noch eine Leichtfigur, die andere aber noch Bauern, dann wird immer die Seite mit Bauern als vorteilhaft erkannt, auch wenn nach reinem Materialwert die Seite mit der Leichtfigur besser steht (z.B. K+L vs. K+2B).

- Konfiguration auch nach Batteriewechsel verfügbar.

- Die laufende Partie kann man über das Menü speichern, so daß sie nach einem Batteriewechsel zu laden geht (inklusive der Zeiten bei Partien mit Zeitkontrolle). Es kann aus Speicherplatzgründen nur ein Spielstand gespeichert werden.
- Nach jedem Zug wird die Partie automatisch gespeichert. Das gilt nicht, wenn eine Partie manuell gespeichert wurde, die hat dann Vorrang. Es gilt außerdem nicht nach dem ersten Zug von Weiß, falls dieser direkt (also ohne Go-Taste) durch den Computer ausgeführt wurde und aus der Grundstellung heraus stattfindet. Andernfalls käme man nämlich nach einem Stromausfall nicht mehr ins Menü zum Laden der vorigen Partie, wenn konfiguriert ist, daß der Computer Weiß hat, oder bei zufälliger Farbverteilung, wenn er zufällig Weiß bekommt.
- Eine manuell gespeicherte Partie läßt sich per Löschfunktion entfernen, wodurch automatisches Speichern wieder aktiviert wird.

- Watchdog: sollte es zu einer Endlosschleife oder sonstigem "Aufhängen" kommen, wird automatisch neu gebootet.

- RAM/ROM-Test, externer Quarz, Tastatur: Wird beim Hochfahren automatisch geprüft. Ist das Ergebnis nicht OK, gibt's eine Hinweis-Dialogbox, aber keine Abschaltung. Selbst mit nicht bestücktem externen Quarz läuft das Gerät nahezu normal, abgesehen von etwas ungenauerer Zeit.

- Turbomodus: Statt der regulären 168MHz wird die Taktfrequenz auf 200MHz erhöht, während der Computer rechnet. Der Unterschied in der Taktfrequenz beträgt 19%, allerdings ist die Beschleunigung netto (nachgemessen) nur 13%. Per Default abgeschaltet, weil jenseits der Systemspezifikation.

- Displaykontrast über das Menü einstellbar (wird abgespeichert).

- Die Displaybeleuchtung kann man konfigurieren: immer aus, immer an oder automatisch. In letzterem Fall ist das Licht 15s lang aktiviert, wenn man eine Taste drückt oder wenn der Computer seinen Zug macht. Im Analysemodus löst eine neue Rechentiefe 30s lang die Beleuchtung aus. Außerdem gibt es einen extra Lichttaster, mit dem das Licht immer für 30s angeht, auch während der Computer rechnet. Eine Ausnahme ist hier der Zustand mit bereits schwächelnden Batterien, dann geht das Licht gar nicht mehr.

- Piepser kann per Konfiguration abgeschaltet werden, emuliert auch einen Tastaturklick.

- Batteriespannung wird überwacht, damit die Akkus nicht beschädigt werden (NiMH sind da empfindlich):
- Eine Dialogbox informiert über die nachlassende Spannung (bei 1.1V pro Zelle).
- Im Display wird bei nachlassender Spannung "BAT" angezeigt.
- Droht Tiefentladung (bei 1.0V), gibt's eine Dialogbox, die zum Abschalten des Gerätes auffordert. Das System fährt sich dann selber runter und kann nur mit einem Ausschalten/Anschalten-Zyklus gestartet werden.
- Nach dem Einschalten und vor jeder neuen Partie wird die Taktfrequenz maximiert, um die Batterien zu testen. Bei weniger als 1.15V pro Zelle ist keine neue Partie möglich (reicht eh nicht mehr), und das Gerät fordert zum Ausschalten auf.
- Der Turbomodus wird bei schwächelnden Batterien ignoriert, und das Licht geht auch nicht mehr.
- Verpolung beim Batterieeinlegen wird per Hardware abgefangen (folgenlos).
- Überspannung wird per Schmelzsicherung abgewendet.
- Die beiden Stromversorgungen (Netzadapter und Batterie) sind separat abgesichert.

Und das Besondere: freie Software. Deswegen stehen die komplette Software, die Tools und das Eröffnungsbuch unter der GNU General Public License (GPL) Version 3 oder höher. Es gibt hier nicht so etwas wie "geistiges Eigentum" in dem Sinne, daß es etwas zu Bewachendes darstellt, sondern in dem Sinne, daß es etwas zu Teilendes ist. Mit der Schachcomputer-Definition von oben dürfte dies einer der stärkeren Schachcomputer mit freier Software sein.

Man kann das Programm auch am PC weiterentwickeln (GCC-x86 unter GNU/Linux oder Windows mit Cygwin), weil die Unterschiede sich, was die Quelltexte angeht, auf eine hardware-abhängige Datei konzentrieren (plus der ARM-Lowlevel-Treiber), während der ganze Rest der Applikation davon unabhängig ist.

Man kann das natürlich auch auf andere Controller portieren; allerdings wäre das einiges an Arbeit, weil ich keine Lowlevel-Bibliotheken benutzt habe. Das funktioniert mit direkten Registerzugriffen nach Datenblatt, also in den ARM-spezifischen Abschnitten. Ich wollte die Geschwindigkeit halt nicht mit einer generischen Bibliothek verheizen. Es gibt auch kein Betriebssystem, kein Threading, kein Dateisystem - nichtmal die C-Standardbibliothek.

Eigentlich wär's ganz cool, wenn sich ein Hersteller fände, der Lust hätte, so ein Brikett in Serie zu bauen. Muß ich mal schauen. Kommerzielle Nutzung ist lizenzmäßig unbedenklich und ebenso kostenlos wie private. Ein kleiner Haken daran ist allerdings, daß es sich um freie Software handelt, d.h. die exklusive Lizensierung der Software ist ausgeschlossen. Es gibt ausschließlich GPLv3+, mitsamt der Verpflichtung zur Aushändigung der Quelltexte an die Käufer. Andererseits ist das ja bei den ganzen GNU/Linux-Rechnern mit Stockfish augenscheinlich auch kein Problem.

In der Version, die ich hier habe, wird das allerdings niemals in Serie gebaut werden - alleine die Tasten belaufen sich im Materialwert auf über 400 EUR, weil es Piezoschalter sind, die eigentlich für wassergeschützte Geräte gedacht sind. Aber die sind cool. ^^ Man kann aber auch eine Matrix-Tastatur anschließen, die Software ist genau darauf ausgelegt. Die einzelnen Schalter habe ich selber sowieso mit einer kleinen Platine so zusammengelötet, wie es einer Matrix-Tastatur entspricht.

RetroComp 27.08.2016 12:50

AW: Neuer Schachcomputer: CT800
 
Hallo Rasmus,

warum ist das pondern grundsätzlich abgestellt, könnte man nicht auch den Nutzer wählen lassen, ob mit oder ohne pondern gerechnet wird?

Viele Grüße
Jürgen

Rasmus 27.08.2016 15:55

AW: Neuer Schachcomputer: CT800
 
Hi Jürgen,

das hat eine Reihe von Gründen.

1) Wenn man mal eine Trefferrate von 100% unterstellt, würde das die Rechenzeit in Partien mit symmetrischer Zeitverteilung verdoppeln. Das wäre dasselbe wie eine Geschwindigkeitsverdoppelung, also ein Zuwachs um die 60 ELO.

Da das Programm anders als die allermeisten anderen Programme kein Verständnis für Eroberung des Raumes hat, sondern nur Mobilität erwägt, sind die Trefferraten typisch nur um die 25%, außer in erzwungenen Situationen. Damit wären dann noch etwa 19 ELO-Punkte gutzumachen, was bei ELO 2100 nicht mehr wirklich ins Gewicht fällt.

2) Der ganz große Haken wäre, daß der gesamte Kontrollfluß dafür umgeschrieben werden müßte. Derzeit geht Usermodus nicht parallel mit Berechnungen, weil der Kontrollfluß nahezu sequentiell ist (abgesehen halt von Interrupts).

Wollte man das ändern, dann wären die Mechanismen dafür auf der Entwicklungsplattform (x86) Multithreading, und auf der Zielplattform wäre es dann mal Zeit für ein kleines Echtzeit-Betriebssystem (es sind aber nur noch etwa 6 kB an freiem RAM verfügbar). Separate Stacks für die Threads wären auch noch ein Problem, weil sich Userthread und Computerthread dann vom Stackbedarf her addieren würden.

Die Codebasis würde auseinanderdriften, ebenso wie die vergleichbare Testbarkeit angesichts von Multithreading. Damit wäre aber eines der Hauptfeatures der Software verloren, nämlich daß man die eigentliche Applikation auch am PC weiterentwickeln und debuggen kann. Sogar Leute, die nichtmal eine Zielhardware haben, können derzeit Anregungen beitragen, weil sie das auf dem PC testen können. Und das auch noch auf jedem Betriebssystem, für das der Compiler GCC verfügbar ist (also alle).

Das vereinfacht außerdem eine mögliche Portierung auf Plattformen, die jetzt noch gar nicht existieren, weil die Unterschiede sich auf den Lowlevel-Treiber konzentrieren.

Es wird sogar PC-seitig noch schlimmer, weil das Thread-Handling unter Windows und Linux nicht identisch ist, so daß sich selbst die PC-Version dann noch in Linux und Windows zersplittern würde. Derzeit ist es egal, weil es eine singlethreaded Kommandozeilen-Anwendung ist. Das würde sogar unter DOS funktionieren.

Ich konnte heute übrigens erst wieder die PC-Version als Testplattform sehr angenehm nutzen. Bislang war der CT800 bei leicht schlechterer Stellung mit Remis durch Stellungswiederholung schnell zu einem Unentschieden zu bewegen. Das macht er jetzt nicht mehr unterhalb von 30 Zügen und wenn er nicht schlechter als -0.4 Bauerneinheiten steht, weil ich ihm die entsprechenden Züge einfach von seiner Zugliste eliminiere. Mit den Debugausgaben war auch schnell zu sehen, ob ich da auch das Richtige wegstreiche.

viele Grüße, Rasmus

Rasmus 27.08.2016 18:36

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von RetroComp (Beitrag 60788)
meine Frage wurde durch Deinen letzten Beitrag schon beantwortet.

Hi Jürgen,

ja, produzieren plane ich nicht; andererseits ist für Bastler der Eigenbau durchaus drin. Dann müssen es ja auch nicht diese teuren Taster sein. Elektrisch verhalten die sich wie eine 4x4-Matrix-Tastatur, etwa FTAC 3535, für welche auch schon Einlegestreifen vorgesehen sind. Die liegt bei 12 Euro oder so, Reichelt hat die. Alternativ gehen auch Microschalter, z.B. aus Computer-Tastaturen, und die haben dann auch nicht so eine hohe Bedienkraft wie das FTAC-Teil.

Die Hauptplatine mit dem Controller gibt's fertig bei Olimex zu kaufen, das Gehäuse ist um die 15 Euro (gibt's bei Völkner), das Batteriefach gibt's auch dort. Zeitaufwendig daran ist das Gebastel selber. Ist aber alles gut dokumentiert und sollte für Hobbybastler kein Problem sein, wenn man mit dem Lötkolben per Du ist.

Wenn man nur die Durchbrüche und Bohrungen fürs Display hat, kann man das auch noch von Hand mit Bohrmaschine und Feile lösen. Oder man zeichnet sich eine Frontplatte und bestellt die bei Schaeffer in Berlin. Auch die Rückplatte mit dem rausgeführten JTAG-Port zum Flashen und Debuggen braucht man nicht unbedingt, außer natürlich für die Entwicklungsversion.

Ich schätze mal, wenn man das so hobbymäßig macht, wird man dafür schon einen Monat einrechnen müssen. Ich habe länger dafür gebraucht, was aber auch daran lag, daß ich bei der Hardware einige Redesigns dabeihatte und außerdem die ganzen Datenblätter wälzen mußte, um rauszukriegen, ob das überhaupt so geht, wie ich mir das dachte.

/*****/

Für mich ist bei dem ganzen Projekt ja anfangs die Motivation gewesen, etwas über die aktuellen ARM-Cortex-Controller zu lernen und praktische Erfahrung damit zu sammeln. Außerdem macht sich so ein Projekt im Lebenslauf ganz gut, sollte ich mich mal wieder irgendwo bewerben wollen oder müssen, weil ich auch beruflich mit embedded systems arbeite. Auch ein Grund, wieso die Webseite ebenso wie die ganze Doku auf englisch ist, weil englisch in der Branche eine Grundanforderung ist.

/*****/

Und naja, für mich schließt sich hier in gewisser Weise ein Kreis. Damals, es war 1988, bekam ich meinen MM4 und war total fasziniert davon. Ich hatte noch nichtmal einen PC, geschweige denn, daß ich ans Programmieren auch nur dachte. Jetzt, 28 Jahre danach (wie doch die Zeit vergeht) habe ich einen eigenen Schachcomputer hier stehen. Ich glaube, wenn jemand verstehen kann, was das persönlich bedeutet, dann sind es andere Schachcomputer-Freaks.

Zwar ist das Ausgangsprogramm NG-Play nicht von mir, aber der Spielstil der jetztigen Version ist es, weil ich in der Bewertungsfunktion kaum einen Stein auf dem anderen gelassen habe. Außer der Portierung selber habe ich die Software auch noch umgeschrieben. Es spielt in etwa so, wie ich spielen würde, wenn ich taktisch nicht so schlecht wäre - zu meinen besten Zeiten hatte ich mal etwa ELO 1700.

Übrigens hat die Spielstärke in der ARM-Version relativ zur Ausgangsversion nicht wesentlich gelitten. NG-Play v9.86 ist in der PC-Version mit ELO 2173 gelistet bei der CCRL, und die ARM-Version hat bei wesentlich weniger Rechenkraft und viel weniger Speicher für die Hashtables trotzdem noch um die 2100. Was daher kommt, daß sie eine Menge an Wissen mehr hat.

viele Grüße, Rasmus

Rasmus 08.09.2016 21:41

AW: Neuer Schachcomputer: CT800
 
Ich hatte neulich übrigens mal wieder die Gelegenheit zu einer kleinen Visite im Schachverein, wo mir eine Idee kam. Und zwar, ich habe tausende von Testspielen mit dem CT800 gesehen und kenne dessen ziemlichen WTF-Stil inzwischen ganz gut.

Also habe ich mal probiert, sowas in der Art gegen tatsächliche Menschen auszuprobieren. Das ergab meistens ziemlich verwickelte Partien mit einem gehörigen Verwirrungsfaktor. Was beiden Seiten Spaß gemacht hat. ^^

Ich hab ja vor diesem Projekt NIE sowas wie moderne Verteidigung, Pirc und Co gespielt, aber eigentlich hat mir der CT800 erst beigebracht, wie das funktionieren kann. Danach erst fiel mir dazu Sun Tsu ein: Der Weg, wie man tausend Meilen marschiert und eine Schlacht gewinnt, ist der, die andere Seite den Marsch machen zu lassen.

Rasmus 18.09.2016 22:53

AW: Neuer Schachcomputer: CT800
 
Leute.. es ist schier unglaublich. Ich habe im Netz recherchiert, was der STM32F4 an Übertaktung abkann. Bislang habe ich einen Turbo von 168 MHz auf 200 MHz mit einem zusätzlichen Waitstate, damit wenigstens der Flashzugriff noch in der Spec liegt.

Zusätzlich zum Turbo gibt's jetzt einen Hypercharge. Unfaßbare 240 MHz, und zwar OHNE zusätzliches Waitstate. Die Übertaktung bezogen auf die Nennfrequenz beträgt 43%, und die effektive Beschleunigung ebenfalls. Gemessen im Analysemodus.

Das geht alles per Software, kein Quarzgelöte. Die Zeitverwaltung bleibt dabei auch korrekt, weil ich den Systemtimer dann natürlich relativ zum erhöhten Basistakt einstelle, je nach Einstellung der Übertaktung. Beeindruckend, wo man den Chip hintreiben kann. Zumindest bei Raumtemperatur.

Läuft bislang völlig stabil, und auch die berechneten Hauptvarianten sind im Analysemodus dieselben wie bei 168MHz, und wie auch in der PC-Version.

Naja und davon unabhängig habe ich auch auf Softwareseite noch 2.6% mit optimierten Compiler-Optionen rausgeholt, aber das nur nebenbei.

Robert 19.09.2016 10:07

AW: Neuer Schachcomputer: CT800
 
Hallo Rasmus,

Zitieren:

Zitat von Rasmus (Beitrag 61291)
Leute.. es ist schier unglaublich. Ich habe im Netz recherchiert, was der STM32F4 an Übertaktung abkann. Bislang habe ich einen Turbo von 168 MHz auf 200 MHz mit einem zusätzlichen Waitstate, damit wenigstens der Flashzugriff noch in der Spec liegt.

Bitte geh' in Kaufbeuren auf Nummer sicher, was die Übertaktung angeht. Wenn der Zeitplan eng ist, kann es Probleme geben, wenn es durch Abstürze zu Verzögerungen kommt. Bedenke, dass der Rechner praktisch den ganzen Tag lang laufen muss!

viele Grüße
Robert

applechess 19.09.2016 10:44

AW: Neuer Schachcomputer: CT800
 
Ein höchst interessantes Ding. Die gezeigten Partien sind spannend und deren Beschreibungen super. Vielen Dank.
Mfg
Kurt

Rasmus 19.09.2016 18:53

AW: Neuer Schachcomputer: CT800
 
Moin Robert,

Zitieren:

Zitat von Robert (Beitrag 61299)
Wenn der Zeitplan eng ist, kann es Probleme geben, wenn es durch Abstürze zu Verzögerungen kommt

Klar. Also zum einen werde ich das ausführlicher testen. Der 200MHz-Modus kann getestermaßen als stabil durchgehen. Der 240MHz und dann noch ohne extra Waitstates ist im Moment ein reines Entwicklungsfeature, was zwar einen kompletten Abend und zwei Partien durchgestanden hat, aber das heißt noch nicht viel. Ist nur beeindruckend, was dieser Cortex-M4 an Overclocking erlaubt. Den MCG haben Leute ja auf ganze 80MHz hochgeschraubt.

Davon ab, ich baue das ja als konfigurierbare Option ein, nicht als fixe Taktfrequenz. Man kann also ohne Firmware-Update einstellen, ob man ein Übertaktungslevel will und wenn ja, welches.

Sollte sowas (oder auch irgendwas anderes ^^) in einer Turnierpartie zu einem Absturz führen, dann wäre meine Meinung, daß die Partie schlicht als verloren zu werten ist. Wenn ein Mensch zuviel Kaffee trinkt und dann Kreislaufprobleme bekommt, ist seine Partie ja auch verloren.

Bin übrigens im Moment auch noch am experimentieren mit Sucherweiterungen. Springer/Bauerngabeln und Schachgebote könnte man tiefer verfolgen, auch wenn das erst am Ende des Suchbaums auftaucht. Ich meine, Ed Schroeders Programme tun sowas und sind deswegen trotz des bescheidenen 6502 taktisch sehr gut.

Robert 19.09.2016 23:59

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von Rasmus (Beitrag 61308)
Sollte sowas (oder auch irgendwas anderes ^^) in einer Turnierpartie zu einem Absturz führen, dann wäre meine Meinung, daß die Partie schlicht als verloren zu werten ist. Wenn ein Mensch zuviel Kaffee trinkt und dann Kreislaufprobleme bekommt, ist seine Partie ja auch verloren.

Na ja, aber wohl nicht, wenn er sich erholt und die Partie innerhalb seiner Bedenkzeit beenden kann? :) Und sooo streng sind wir ja ohnehin nicht...;)

viele Grüße
Robert

Rasmus 21.09.2016 23:04

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von Robert (Beitrag 61314)
Und sooo streng sind wir ja ohnehin nicht...;)

Ja gut, da ich auch beruflich mit embedded systems arbeite, die sich nicht an Endverbraucher richten, bin ich es gewohnt, daß jedweder Systemfehler als Versagen gilt. Industriekunden würden z.B. keinen H8-Bug akzeptieren.

Ich mache auf jeden Fall noch ausgiebige Stabilitätstest mit dem Feature. Grundsätzlich, wenn sich die Stabilität denn bestätigt, bin ich geneigt, auch die 240 MHz zu aktivieren. Die realistische Hauptanstrengung in Kaufbeuren wird der Kampf um den vorletzten Platz werden, und angesichts des Teilnehmerfeldes in der A-Klasse wird der CT800 für dieses Ziel alles geben müssen, was irgendwie möglich ist.

Eine kleine Anekdote am Rande: Beim Aufbau der Hardware meinte ich zu meiner Holden, daß ich extrem robuste Komponenten brauchte. Das Beste, was verfügbar ist. Er würde womöglich unter widrigsten Bedingungen betrieben werden. Sie so, welche widrigen Bedingungen?! Ich so, naja ein Turnier mit anderen Schachcomputern, die ihm nach dem Leben trachten werden.

Rasmus 15.10.2016 23:55

AW: Neuer Schachcomputer: CT800
 
So, es gibt ein neues Feature, was ich von den alten Mephistos her noch kannte. Scheint bei etlichen neueren Schachcomputern nicht mehr vorhanden zu sein, und zwar die Mattsuch-Stufe.

Man kann zwischen 1 und 8 Zügen für die Mattsuchtiefe anwählen. Maximale Suchdauer ist 4 Tage. Wenn ein Matt in weniger als der eingestellten Höchsttiefe erreicht werden kann, wird auch das gefunden. Genau wie bei den alten Mephistos gibt es auch die Option, nach möglichen weiteren Lösungszügen zu suchen.

Die Hashtabellen werden auch bei der Mattsuche eingesetzt, was bei Endspiel-artigen Mattaufgaben eine deutliche Beschleunigung gibt.

Dieses kleine Puzzle vom guten Nimzowitsch löst der CT800 innerhalb von 42 Minuten, ohne Übertaktung. Die Hashtabellen haben in diesem Fall eine gemessene Beschleunigung von 37% gebracht.

Matt in 7, Weiß am Zug



Unten die Lösung:


[Event "Nimzowitsch Schach Puzzle, 1925"]
[Date "1925"]
[White " "]
[Black " "]
[Result "1-0"]
[SetUp "1"]
[FEN "q5k1/5p2/7Q/r2b1B2/8/8/r2R3K/8 w - - 0 1"]
[PlyCount "13"]

1. Bh7+ Kh8 2. Bc2+ Kg8 3. Rg2+ Bxg2 4. Bh7+ Kh8 5. Bg6+ Kg8 6. Qh7+ Kf8 7.
Qxf7# 1-0

Lucky 16.10.2016 13:07

AW: Neuer Schachcomputer: CT800
 
eine raffinierte idee, dieses 7zügige matt. Der weiße läufer wirkt wie ein schalter. wie man nur auf sowas kommen kann? hätte selbst weder aufgabe ausdenken noch lösung finden können. Respekt.

Chessguru 16.10.2016 13:30

AW: Neuer Schachcomputer: CT800
 
Hallo,

Zitieren:

Zitat von Rasmus (Beitrag 61816)
Matt in 7, Weiß am Zug



(Die untenstehende Lösung mit der Maus markieren.)

ein kleiner Tipp zu diesem Klassiker.

Möchte man Antworten verstecken (wie in diesem Beispiel: "Die untenstehende Lösung..."), kann man sich der "Spoiler Funktion" bedienen. Würde wie folgt aussehen:



[Event "Nimzowitsch Schach Puzzle, 1925"]
[Date "1925"]
[White " "]
[Black " "]
[Result "1-0"]
[SetUp "1"]
[FEN "q5k1/5p2/7Q/r2b1B2/8/8/r2R3K/8 w - - 0 1"]
[PlyCount "13"]

1. Bh7+ Kh8 2. Bc2+ Kg8 3. Rg2+ Bxg2 4. Bh7+ Kh8 5. Bg6+ Kg8 6. Qh7+ Kf8 7.
Qxf7# 1-0



Gruß
Micha

Rasmus 16.10.2016 17:02

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von Chessguru (Beitrag 61822)
Möchte man Antworten verstecken (wie in diesem Beispiel: "Die untenstehende Lösung..."), kann man sich der "Spoiler Funktion" bedienen.

Hab das gerade umgesetzt, aber wenn ich auf das Plus klicke, klappt das zwar aus, fährt dann aber automatisch wieder zusammen. Also durchklicken kann man sich damit nicht. Da ist die Lösung mit der unsichtbaren Farbe und der Maus insofern besser, als daß das nicht automatisch wieder zufährt. FF 45.4 hier.

Chessguru 16.10.2016 19:18

AW: Neuer Schachcomputer: CT800
 
Ja, du hast Recht. Der bisherige Spoiler verweigerte den korrekten Dienst, wenn die Funktion mehrfach auf einer Seite verwendet wurde.

Habe es noch einmal geändert und jetzt sollte alles sauber funktionieren.

Zitieren:

Zitat von Rasmus (Beitrag 61816)
Matt in 7, Weiß am Zug



(Die untenstehende Lösung mit der Maus markieren.)

ein kleiner Tipp zu diesem Klassiker.

Möchte man Antworten verstecken (wie in diesem Beispiel: "Die untenstehende Lösung..."), kann man sich der "Spoiler Funktion" bedienen. Würde wie folgt aussehen:



[Event "Nimzowitsch Schach Puzzle, 1925"]
[Date "1925"]
[White " "]
[Black " "]
[Result "1-0"]
[SetUp "1"]
[FEN "q5k1/5p2/7Q/r2b1B2/8/8/r2R3K/8 w - - 0 1"]
[PlyCount "13"]

1. Bh7+ Kh8 2. Bc2+ Kg8 3. Rg2+ Bxg2 4. Bh7+ Kh8 5. Bg6+ Kg8 6. Qh7+ Kf8 7.
Qxf7# 1-0




Gruß
Micha

pato4sen 16.10.2016 22:28

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von Rasmus (Beitrag 61816)
So, es gibt ein neues Feature, was ich von den alten Mephistos her noch kannte. Scheint bei etlichen neueren Schachcomputern nicht mehr vorhanden zu sein, und zwar die Mattsuch-Stufe.

Man kann zwischen 1 und 8 Zügen für die Mattsuchtiefe anwählen. Maximale Suchdauer ist 4 Tage. Wenn ein Matt in weniger als der eingestellten Höchsttiefe erreicht werden kann, wird auch das gefunden. Genau wie bei den alten Mephistos gibt es auch die Option, nach möglichen weiteren Lösungszügen zu suchen.

Die Hashtabellen werden auch bei der Mattsuche eingesetzt, was bei Endspiel-artigen Mattaufgaben eine deutliche Beschleunigung gibt.

Dieses kleine Puzzle vom guten Nimzowitsch löst der CT800 innerhalb von 42 Minuten, ohne Übertaktung. Die Hashtabellen haben in diesem Fall eine gemessene Beschleunigung von 37% gebracht.

Matt in 7, Weiß am Zug



Unten die Lösung:


[Event "Nimzowitsch Schach Puzzle, 1925"]
[Date "1925"]
[White " "]
[Black " "]
[Result "1-0"]
[SetUp "1"]
[FEN "q5k1/5p2/7Q/r2b1B2/8/8/r2R3K/8 w - - 0 1"]
[PlyCount "13"]

1. Bh7+ Kh8 2. Bc2+ Kg8 3. Rg2+ Bxg2 4. Bh7+ Kh8 5. Bg6+ Kg8 6. Qh7+ Kf8 7.
Qxf7# 1-0

Der PeWa Grandmaster fand die Lösung im Analysemodus nach 1 Sekunde!

Rasmus 17.10.2016 00:41

AW: Neuer Schachcomputer: CT800
 
Zitieren:

Zitat von pato4sen (Beitrag 61834)
Der PeWa Grandmaster fand die Lösung im Analysemodus nach 1 Sekunde!

Im Analysemodus findet der CT800 die Lösung auch "schon" nach 10 Sekunden, bei Suchtiefe 10, weil die Schachgebot-Erweiterungen da schon wirksam werden.

Daß das deutlich länger dauert als beim Grandmaster, kommt daher, daß der Grandmaster einen Cortex A7 mit 900MHz und 1GB RAM hat, während der CT800 einen Cortex M4 mit 168MHz nutzt und sich mit 192kB RAM begnügen muß. Und daß Stockfish natürlich erheblich besser ist als NG-Play, was dem CT800 ursprünglich zugrundeliegt; allerdings würde Stockfish mit 192kB RAM gar nicht funktionieren, auch nicht mit weniger Hashtabellen.

Der Haken am Analysemodus ist nun, daß er erstens nicht zwingend das schnellste Matt entdecken muß, weil es für die Bewertung einer Stellung ja egal ist, in wieviel Zügen sie matt ist - gewonnen ist gewonnen. Kommt dann auch drauf an, wie die spekulative Beschneidung des Suchbaums sich da auswirkt. In diesem konkreten Fall ist das noch einfach, weil es lauter Schachgebote sind, und die werden üblicherweise nicht beschnitten. Bei Mattaufgaben mit fiesen, ruhigen Tempozügen zwischendrin sieht das schon anders aus.

Der zweite Haken ist, daß man damit mögliche Doppellösungen auch nicht unbedingt findet. Das ist aber ein ganz wesentliches Feature bei der Mattsuche, denn ein Schachproblem mit einer Doppellösung ist entwertet.

Eventuell geht das schon, falls das Gerät eine Multivariantenanalyse bietet. Aber auch dann ist halt nicht gesichert, daß es in der ersten Variante wirklich die direkteste Lösung bringt.

Wolf 21 17.10.2016 00:58

AW: Neuer Schachcomputer: CT800
 
Hallo an Alle,

man braucht wohl keine 100mhz CPU. Nigel Short löst das Matt in 7 auf normaler Spielstufe in ca. 20 sek. Suchtiefe 3.37 mit Ansage. Bei Mattsuchstufe werden alle möglichen Züge gerechnet anscheinend rein Brut-Force ohne Extensions und
ohne "Intelligenz". Nach 28 min. bei Suchtiefe 13.24 Zugausführung mit Mattansage. Wahrscheinlich gibt es deswegen keine Mattsuchstufen mehr.
Die Rechner finden die Matt in ... auch so viel schneller.

Gruß
Wolf 21


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:09 Uhr.

Powered by vBulletin (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©Schachcomputer.info