|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
man muß sehen das früher vieles durch die schwache hardware bedingt war, den geringen speicherplatz den man hatte. heute ist das alles kein probem mehr. aber damals....
damals mußte man sehr platzsparend und effizient programmieren. ich würde sagen die programme von heute (PC) unterscheiden sich nicht viel von den programmen damals. z.B. die enormen Rechentiefen die heute Fakt sind, entstehen durch extremes Pruning. Also dem gegenteil von Brute-Force, wie es im B+P oder MM2 realisiert wird. Nimmt man die Geschichte der Schachcomputer, hat sich das vorwärtsabschneiden von Ästen/Zügen aufgrund von positionellen Kriterien also als sehr erfolgreich gezeigt, obwohl es DAMALS als die Anfänge waren auf den bescheidenen CPUs (Mark V, B-Strategie, 1 oder 2 mhz 6502) noch sehr oft zu Fehlern kam. Mark V, Mephisto III, und sicherlich lassen sich noch diverse Andere finden, sind also gute Beispiele für intelligente vorwärtsabschneidende Programme, wie wir sie heute auf den PCs auch noch haben. Eine Zeit lang dominierten die Gewaltprogramme, als B+P, MM2 und im Umfeld Constellation und PSH- kursierten. PSH war ja der Versuch einem Gewaltprogramm mittels If-Klauses (Wenn dann Bedingungen) konkret Sachverstand einzuhauchen. Jeder Programmierer hatte so seine speziellen methoden der Variantenexplosion im Suchbaum Herr zu werden. Lang setzte auf Asymmetrie in der Zuggenerierung, auf einen STATISCHEN Abtauschbewerter. In Folge der Spielstil. Schröder war dazu ganz was anderes. Kittinger hat seine Gewaltprogramme immer wieder neu frisiert und auch zuletzt selektiver gemacht. Und Frans Morsch kam mit seinen Null-Move Programmen bei denen es IM SUCHBAUM keine Stellungsbewertung gab. Es gab ein Preprocessing mit einer ausführlichen Bewertung und dann IM SUCHBAUM nur relative Bonus/Malus Bewertungen. Das hatte den Effekt das mit zunehmender Rechentiefe die Fehlerhäufigkeit bei Abschätzungen wuchs , weil die relativen Bewertungen sich ja immer mehr von der Wurzel entfernten. Sicherlich wäre es anders gekommen wenn Thomas Nitsche und Elmar Henne weitergemacht hätten. Vielleicht in Eigenregie. Es wäre dann experiementierfreudiger geblieben.
__________________
Die ganze Welt des Computerschachs |
|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
![]() Diskussionswürdige Fragen wären zum Beispiel:
![]() Soll ein Programm möglichst stark spielen oder menschliche "Strategien" nachahmen ?
Wenn man selbst gegen Programme spielen will, ist eine gewisse Nachvollziehbarkeit ein sehr wichtiger Punkt. Genau hier unterscheiden sich aus meiner Sicht "wissensbasierende" Programme von den üblichen Programme. Aber darauf werde ich weiter unten mit einem Beispiel eingehen. ![]() Sollte man mehr auf die Software eingehen ?
![]() Wie ist "Schachwissen" zu bewerten ?
Ich denke, jeder Programmierer muss sich am Anfang die Frage stellen, welchen Weg er gehen will. Möglichst viel Wissen oder schnelle Bewertung mit extremen Rechentiefen ... jedes dieser Systeme hat Vor- und Nachteile. Die Vorteile von viel Wissen: - "Intelligentes" Spielverhalten. - Interessanterer Spielstil. Nachteile von viel Wissen: - Langsamer - Weniger Zugewinn an Spielstärke durch schnellere Hardware. - Vermutlich immer modernen "schnellen Brütern" von der Spielstärke unterlegen. Die Vorteile von wenig Wissen: - schnelle Baumsuche mit extremen Rechentiefen. - Programm profitiert dauerhaft von schnellerer Hardware. Nachteile: - Stil oftmals langweiliger und aus menschlicher Sicht unlogisch. ![]() Was versteht man unter "Schachwissen" ?
Das reine Schachwissen hingegen ist Theorie, die unabhängig einer speziellen Stellung greift. Beispiele: - Quadratregel - Falsches Läufer Spiel An dieser Stelle möchte ich ein Beispiel dafür geben, warum aus meiner Sicht Programme mit viel Wissen zu bevorzugen sind und warum sie menschlicher und interessanter spielen. Ich nehme dazu ein einfaches Endspiel: KLS - K Wenn Du das theoretische Wissen hast, wie Du mit Läufer und Springer matt setzen kannst, wirst Du es instinktiv tun, ohne lange über jeden Zug nachdenken zu müssen. In der Regel wirst Du dies dann immer nach dem gleichen Schema tun, welches auch umstehende Zuschauer erkennen und verstehen! Das ist Wissen und menschlich! Viele unserer alten Brettcomputer beherrschen dieses Endspiel problemlos: Der uralte Mephisto II von 1981, der Super Conny von 1984 und natürlich alle Lang Programme. Wie gesagt, selbst der Mephisto II "weiß", wie es geht und wird den Gegner matt setzen. Die Art und Weise, wie er es tut, wirst Du selbst problemlos verstehen und nachvollziehen, wenn Du selbst dieses Endspiel rudimentär beherrscht. Viele der modernen Programme haben selbst dieses Wissen nicht mehr! Zum Beispiel kann Rybka 3 nicht mit Läufer und Springer das Spiel gewinnen, ohne entweder auf eine Datenbank zuzugreifen oder das Matt zu errechnen! Diue Züge einfach aus der Endspieldatenbank abzurufen, hat rein gar nichts mehr mit Intelligenz oder Spiel zu tun. Da die Hardware heute 1.000.000fach schneller ist, als die eines Mephisto II, lassen sich solche Positionen natürlich "errechnen", die benötigte Rechentiefe erreicht Rybka relativ schnell. Jetzt könnte man sagen, es ist doch völlig egal, wie das Programm zum Ziel (Matt) gelangt, das Ergebnis zählt. Doch genau das sehe ich anders. Einerseits ist es für mich wesentlich beeindruckender, wenn das Programm aufgrund von Wissen zum Ziel gelangt und nicht einfach stupide rechnet bzw. in einer Datenbank abruft. Ein anderer Punkt ist wesentlich entscheidender: Die Züge aus einer Datenbank oder auch nach der Suche (schnell aber dumm) sind oftmals effizienter, aber aus menschlicher Sicht nicht mehr nachvollziehbar. Sprich, es ist möglich, daß die Datenbank ein Matt in 14 ausgibt, welches zwar der schnellste Weg zum Ziel ist, aber aus menschlicher Sicht nicht nachvollziehbar! Ein Turnierspieler würde vielleicht 22 Züge brauchen ... die aber kann der Amateur dann auch nachvollziehen. Bein Endspiel KLS - K mag das nicht soooo offensichtlich sein, aber wer mal KD - KT testet, merkt sehr schnell, wo die Unterschiede der unterschiedlichen Ansätze sind. ![]() Warum kann "Schachwissen" schlecht sein ?
Mittlerweile gilt es als unbestritten, dass Programme, die über viel Wissen verfügen, weniger von schnellerer Hardware profitieren als "dumme" Programme, die sich möglichst schnell so tief wie möglich in den Suchbaum eingraben ... Das Ergebnis dessen ist bekannt: Es gibt Programme, die zwar im von Version zu Version dümmer werden, aber dennoch stärker spielen: Rybka 2 kannte zum Beispiel noch das "Falsche Läufer Spiel" ... Rybka 3 nicht mehr ... Die Begründung: Es gibt nur selten Situationen, wo dieses Wissen greift und den "Sieg" bringt ... aber in jeder Partie verlangsamt das Wissen die Suche. Unterm Strich überwiegen somit die Vorteile den wenigen Punktverlusten, die eingefahren werden, weil das Programm einfach nicht weit genug rechnen kann, um zu sehen, daß es sich in die "falsche Läufer Falle" verstrickt hat ... ![]() Projekt Hydra - hat das noch etwas mit Computerschach zu tun ?
![]() Muss ein Programmierer ein guter Schachspieler sein ?
![]() Botwinniks "Pionier"
![]() Welche Rolle spielte die Hardware in den Anfangszeiten des Computerschachs ?
![]() Waren die Programmierer früher "besser" ?
![]() Wie sind die bekannten Programmierer der Vergangenheit zu bewerten ? (Lang = clever ?, Morsch = primitiv ?, Schröder = effektiv ? usw.)
- Morsch: Erster "moderner" Programmierer, ab ca. Magellan: Weniger Wissen, dafür schnelle, effiziente Suche mit großen Tiefen. - Schröder: Ebenfalls viel Wissen, weniger selektiv, weniger Endspielwissen. - de Koning: Ebenfalls sehr viel Wissen, allerdings weniger Endspielwissen als Langprogramme. ![]() Können wir diese Fragen überhaupt objektiv beantworten oder haben wir die "Gute alte Schachcomputer"-Brille auf ?
![]() Es wäre einfach (und günstiger) ein Netbook mit DGT Brett zu nehmen ... dann hat ma auch das Brettgefühl und etliche Programme zur Auswahl. Nun könnte man natürlich sagen, das zählt nicht, weil die Programme viel zu stark sind ... aber auch hier möchte ich widersprechen: Etliche moderne Programme lassen sich auf das Niveau eines Vancouver, einer V11 oder eines R30 drosseln .... trotzdem kenne ich kein Programm, welches mir auch nur ansatzweise den gleichen Spaß beim Spiel bietet, wie diese "alten Recken" ... Nun ja, jedenfalls nutze ich zum eigenen Spiel auf dem Revelation zu 95% die Emulationen ... Uff, war jetzt doch etwas mehr Text als beabsichtigt ... Grüße, Sascha
__________________
This post may not be reproduced without prior written permission. Copyright (c) 1967-2025. All rights reserved to make me feel special. :-) |
|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
und dessen Programmierer haben sicher eine Menge Zeit investiert, ihrem Programm das Unterscheiden zwischen guten und schlechten Varianten "beizubringen", mit Sicherheit mehr, als es die heutigen Programmierer tun. Und das Erkennen, wo man Abschneiden kann und wo nicht, ist ja eines der elementarsten Probleme in der Schachprogrammierung... Nimmt man die Geschichte der Schachcomputer, hat sich das vorwärtsabschneiden von Ästen/Zügen aufgrund von positionellen Kriterien also als sehr erfolgreich gezeigt, obwohl es DAMALS als die Anfänge waren auf den bescheidenen CPUs (Mark V, B-Strategie, 1 oder 2 mhz 6502)
noch sehr oft zu Fehlern kam.
__________________
Der nächste Satz ist eine Lüge. Der vorhergehende Satz ist wahr. |
|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Sascha,
danke für Deine ausführlichen und interessanten Ausführungen. ![]() Sicher eine schwierige Frage, auf die vermutlich nur Programmierer von starken Engines eine Antwort geben können. In Anbetracht der Tatsache, dass auch zukünftig immer schnellere Hardware verfügbar sein wird, vermute ich, dass es mehr in diese Richtung gehen wird, die Frage, inwieweit man heutige Schachprogramme durch neue Programmiertechniken verbessern kann, kann ich nicht beurteilen ![]() daß der TC2100 nicht "weiß", daß er mit dem Läufer allein nicht mattsetzen kann, die Partie ist aber faktisch Remis. Spielt es jetzt eine Rolle, ob das Programm nun Remis anzeigt oder +3,50 ?? Wie anfangs schon erwähnt gibt es sicher noch viele Punkte, auf die man näher eingehen kann, aber dafür braucht's mehr Zeit ![]() Gruß Uwe
__________________
Der nächste Satz ist eine Lüge. Der vorhergehende Satz ist wahr. |
|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
Kürzlich hat Manfred in diesem Thread https://www.schachcomputer.info/foru...ead.php?t=3522 festgestellt,
daß der TC2100 nicht "weiß", daß er mit dem Läufer allein nicht mattsetzen kann, die Partie ist aber faktisch Remis. Spielt es jetzt eine Rolle, ob das Programm nun Remis anzeigt oder +3,50 ?? Hierzu ein Beispiel mit mehr Deutlichkeit. Ein Matt mit zwei Springern ist nicht möglich. Jetzt gibt es durchaus Situationen, in denen man so manchen Computer dazu bewegen kann, daß er im weiteren Verlauf "mit zwei Springern dasteht" ... statt zum Beispiel mit einem Springer und einem Bauern ... und schon stellt dieses "Nichtwissen" einen deutlichen Nachteil dar. Es gibt eine nette Teststellung dazu. In dieser Teststellung hat der Computer die Wahl, ob er beide Springer retten kann oder nur einen Turm ... viele Computer entscheiden sich für die beiden Springer, weil der Nominalwert der beiden Springer höher ist, als der des Turmes ... wenn der Computer hingegen über das Wissen verfügt, daß zwei Springer nicht reichen, trifft er sofort die richtige Entscheidung, auch wenn er "das Ende" nicht sehen bzw. errechnen kann. Als Beispiel kann man hier die V2 nehmen, die sofort den Turm schlägt und 0.00 anzeigt. Gruß, Sascha
__________________
This post may not be reproduced without prior written permission. Copyright (c) 1967-2025. All rights reserved to make me feel special. :-) |
|
|||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo zusammen,
in der vergangenen Zeit wurde schon immer mal wieder hier und dort das Thema angerissen, die kürzlichen Meinungen dazu sind sicher endlich mal einen eigenen Thread wert. Diskussionswürdige Fragen wären zum Beispiel:
Also, wer was zu sagen hat, raus damit ![]() Grüße Uwe langsam verstehe ich, warum Schachwissen nicht gefragt ist. Der Grund hierfür liegt nach meiner Auffassung im Bewertungs-Algorithmus. Der ist erforderlich, um Abschneidungen durchführen zu können, die notwendig ist, da ansonsten die Berechnung uferlos wird. Schachwissen ist programmiertechnisch betrachtet schwierig durchzuführen. Man gibt einem Programmierer gewisse Regeln vor, nach der das Programm schreiben soll. Ich glaube mittlerweile, dass sehr gute Kenntnisse über das Schachspiel nur hinderlich sind. So sollen die 32 parallel geschalteteten Prozessoren beim Projekt Hydra ca. 200 Millionen Züge prüfen. Dies geht nur durch einen einfachen Algorithmus. Die RWTH-Aachen hat dazu einen guten Artikel über den Bewertungsmodus geschrieben. Die Bewertung einer Stellung wird im Artikel exemplarisch durchgeführt. Wie soll zum Beispiel das Endspiel LSK-K durchgeführt werden. Ein Matt sollte mit 50 Zügen erreicht werden. Ohne genauen Plan, ist es trotz sehr guter Hardware, kaum oder nicht erreichbar (unter einem vernünftigen Zeitlevel betrachtet). Betrachte nur mal die verschiedenen Regeln beim Freibauer. Der Turm soll voran gehen, der König hinter dem Bauer. Oder die Regel hinsichtlich zur Opposition der Könige. Wie verhält sich der gegnerisch König? Die Quadratregel usw. . Früher gab es keine so starke Hardware wie jetzt. Sie war nicht entwickelt und teuer. Starke Prozessoren waren zu teuer, was gleichfalls auch für Speicher gilt. Dies gilt auch für den den 3 Grundbaustein beim Computerschach, der für die Steuerung der Suche und der Zugauswahl notwendig ist. Man darf nicht vergessen, dass Schachcomputer Spielzeug waren und sind. Eine Randgruppe von Techniker und Programmierer wollten Beispiele für KI aufzeigen. Aus dieser Idee entstanden Schachcomputer als Beispiel und als Massenware. Hier sollte auch nicht vergessen werden, dass nur 3% von Schachspieler in der Welt einen Elowert von über 2000 besitzen. Einfache und preiswerte Schachcomputer reichen dafür allemal. Paul |
|
|||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo,
ein Aspekt, den ich speziell bei der Programmierung von Brettcomputern bemerkenswert finde ist, dass man (vor allem damals) nicht die komfortablen Möglichkeiten des Debugging und Testen hatte, wie heutzutage am PC. Jetzt kann man mittlerweile bequem das Verhalten von "Embedded Hardware" auf dem PC simulieren. Früher gab es das nicht (oder nur eingeschränkt). Deshalb stelle ich mir die Fehlersuche sehr mühsam vor. Geschweige denn, dass man verschiedene Konzepte mal schnell testen konnte. Tja, die gute alte Zeit, da hat man noch viel mit Papier und Bleistift entwickelt. ![]() Noch ein anderer Punkt, es wurde häufig darauf hingewiesen, dass die Schachprogramme von der Hardware-Entwicklung profitiert haben und man auch weniger Schachwissen in die Programme steckte. Das stimmt zum Teil. Es ist auch ein bisschen schade, weil bis heute die richtigen Werkzeuge fehlen, einen verbalen Plan "Gehe mit Deinem König ins Zentrum und halte mit dem Springer den Freibauern auf" erstmal zu entwickeln und dann in eine Bewertungsfunktion oder Algorithmus umzusetzen. Ich denke aber, dass die Fortschritte nicht nur von der Hardware kommen, sondern dass der Programmierung in erster Linie sein Programm ständig effizienter machen muss. Ich habe letztens die Dos-Programme Fritz, Fritz2 und Fritz3 auf einer alten Maschine mit Mattaufgaben getestet. Das war unglaublich, eigentlich ist die Matt-Suche recht trivial, es gibt eine sehr einfache Bewertungsfunktion (Matt oder nicht Matt). Und trotzdem haben sie für komplizierte Mattaufgaben unterschiedliche Zeiten gebraucht. Das ging von Fritz 3 zu Fritz 1 fast schon ins Zehnfache der Zeit auf derselben Hardware. Das allein zeigt, dass permanente Optimierung durchaus was bringen. Gruss Sören Geändert von SörenH (17.05.2010 um 23:39 Uhr) Grund: Zweiten Abschnitt eingefügt |
|
||||||||||||
Re: Der "richtige" Weg in der Schachprogrammierung ?
Ich bin kein Techniker und ich habe es auch schwer mit das Deutsch daher werde ich nichts ueber das Technische wieso und was Schreiben.
Ich hatte mal in ein Englisches Forum diese gleiche Fragen gestellet die ich jetzt hier mal versuche auf Deutsch zu schreiben. Die reaktion war interessant und es gab auch ein paar aufregungen ![]() In den 30/40 iger Jahren da hatte der Hollaender Adrian de Groot Turnier Schachspieler (Profies und Amateure) fuer 10 plus Jahre verfolgt in Ihre Turniere und sie danach Fragen gestellt ueber Ihre spiele. Es kam raus das ein Schachspieler egal ob er Profi ist oder Amateur nur durchschnittlich 6 Tief rechnet. Der bessere spieler durch erfahrung und durch seiner Natur sieht aber die positionen besser und sieht die Zukunft besser. Er ist aber nicht klueger und er rechnet auch nicht tiefer. Als das Bericht raus kam da wollten naturlich die Welt Ihn zeigen das er falsch ist mit sein Bericht und die Russen und Amerikaner haben dann aehnliche Tests gemacht und mit den gleichen ergebnissen. Daher wurde der Adrian de Groot nie wiedersprochen. Jetzt kommt der David Levy an in den 70iger Jahren und meldet zu der Welt das kein Computer Ihn in 10 Jahren schlagen wird und macht eine Wette daraus. Was naturlich alle hersteller und progammierer herausfordert Ihn zu schlagen. Und so faengt dann das rennen an schneller und schneller zu werden und egal wie man gewinnt. Jetz naturlich wollte der David Levy damit nur Schlagzeilen machen und ein bischen beruehmtheit bekommmen. Die folgen im Grunde genommen waren ja egal. Die Schlagzeile und Buecher zu verkaufen war das wichtigste ![]() Und die Welt von Schachprogrammieren lauft fort in eine Richtung wo wir jetzt stehen. Computer gegen Menschen schach ist Tot. Fasst niemand spielt gegen die neuen programme ausser fuer Analyse und die Interesse ist am Sterben fuer die Masse. Genau zu der Zeit als der David Levy die Welt aufgefordert hatte, wenn man da zurueckgehen koennte und der David Levy anstatt eine ausforderung gemacht haette zum Motto das "kein Schachcomputer der das Spiel wie ein Mensch spielt Ihn nicht schlagen kann" und dann das Werk von Adrian de Groot als basis genommen haette. Zum Beispiel zu sagen: Der menschliche Computer darf nicht mehr als 6 Tief rechnen und darf selektiv nur zb 4 Stellungen bis auf 12-18 gehen (als Beispiel). Dann wer weiss, vielleicht haetten wir heutzutage richtige interessante schachprogramme die noch gegen menschen spielen in turniere und weltmeisterschaften und in schachclubs und uns begeistern wuerden mit ihren schachlichen wissen und raffinierten klugheit ![]() Ein anderer weg waere ja auch gewesen die obige aussage auf geschwingikeit um zu rechnen und zu sagen fuer veranstaltungen darf der computer nur maximal 50 MHz haben was dann vielleicht den gleichen Ziel erreicht ![]() Die programmierer muessten sich dann doch mit das schachwissen beschaeftigen und vielleicht das programm lehrnfaehigkeiten beibringen usw. Da programmierer ueber die Jahren besser werden und der mensch auch, mit so einen Standart haette man heute 30 Jahre spaeter verdammt gute Computer gegen Menschen Turniere gehabt und Computer schach waere nicht am sterben sondern eine Weltweite begeistheit Aber nein die ehrgeiz das Spiel mit aller gewalt zu erobern durch maximum geschwindigkeit kaempft fuer den Tot anstatt fuer das leben ! So dreht sich das leben ![]() Viele gruesse Nick Geändert von spacious_mind (18.05.2010 um 02:24 Uhr) |
|
||||||||||||
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Uwe,
hier noch einmal die Stellung, die ich gestern ansprach. Leider bin ich zu blöde, ein Brett in den Thread zu bekommen: Weiß: Kg2 Schwarz: Ka1, Th1, Sh2, Sh3
Weiß am Zug! Viele Programme ziehen hier vor, die beiden Springer zu schlagen ... um dann gegen König und Turm zu verlieren ... ein Gegenbeispiel ist hier die V2, die sofort den Turm schlägt und 0,00 anzeigt. Zum Thema des "Falschen Läufers" hier eine bekannte Studie: Weiß: Kg1, Tf2, Lf3, g2, h2 Schwarz: Kg5, Ta7, Lf5
Schwarz am Zug! Auch wenn man es nicht glaubt: Diese Stellung ist ganz klar Remis! Hier zeigen sich die klaren Vorteile von Programmen, die das entsprechende Wissen haben. Nur so am Rande: Im Gegensatz zu Rybka 3, beherrschen zum Beispiel die V2 und der Kultcomputer Mephisto III das "Falsche Läufer" Spiel ... nun frage ich mal provokant in die Runde: Welche Programme sind besser und interessanter? Grüße, Sascha
__________________
This post may not be reproduced without prior written permission. Copyright (c) 1967-2025. All rights reserved to make me feel special. :-) Geändert von Chessguru (18.05.2010 um 19:03 Uhr) Grund: Diagramme eingefügt |
![]() |
|
|
![]() |
||||
Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
Off Topic: Wiki-Beitrag "Die Geschichte der Firma Fidelity" von Alwin Gruber | blaubaer | News & Infos - Forum + Wiki | 2 | 30.04.2010 12:09 |
Partie: "Mini-Fernschach" Partie Magellan - Genius 68030 | Paisano | lichess | 5 | 23.11.2009 22:16 |